mstate
的典型准备步骤包括将“宽”格式数据(每位“患者” 1行)转换为“多状态”格式数据(每位“患者”多行,用于多行中的每个可能转换)状态模型)。
例如,宽格式的数据:
library(mstate)
data(ebmt4)
ebmt <- ebmt4
> head(ebmt)
id rec rec.s ae ae.s recae recae.s rel rel.s srv srv.s year agecl proph match
1 1 22 1 995 0 995 0 995 0 995 0 1995-1998 20-40 no no gender mismatch
2 2 29 1 12 1 29 1 422 1 579 1 1995-1998 20-40 no no gender mismatch
3 3 1264 0 27 1 1264 0 1264 0 1264 0 1995-1998 20-40 no no gender mismatch
4 4 50 1 42 1 50 1 84 1 117 1 1995-1998 20-40 no gender mismatch
5 5 22 1 1133 0 1133 0 114 1 1133 0 1995-1998 >40 no gender mismatch
6 6 33 1 27 1 33 1 1427 0 1427 0 1995-1998 20-40 no no gender mismatch
已转换为多状态格式:
tmat <- transMat(x = list(c(2, 3, 5, 6), c(4, 5, 6), c(4, 5, 6), c(5, 6), c(), c()), names = c("Tx", "Rec", "AE", "Rec+AE", "Rel", "Death"))
msebmt <- msprep(data = ebmt, trans = tmat, time = c(NA, "rec", "ae", "recae", "rel", "srv"), status = c(NA, "rec.s", "ae.s", "recae.s", "rel.s", "srv.s"), keep = c("match", "proph", "year", "agecl"))
> head(msebmt)
An object of class 'msdata'
Data:
id from to trans Tstart Tstop time status match proph year agecl
1 1 1 2 1 0 22 22 1 no gender mismatch no 1995-1998 20-40
2 1 1 3 2 0 22 22 0 no gender mismatch no 1995-1998 20-40
3 1 1 5 3 0 22 22 0 no gender mismatch no 1995-1998 20-40
4 1 1 6 4 0 22 22 0 no gender mismatch no 1995-1998 20-40
5 1 2 4 5 22 995 973 0 no gender mismatch no 1995-1998 20-40
6 1 2 5 6 22 995 973 0 no gender mismatch no 1995-1998 20-40
但是如果我的原始数据集具有随时间变化的协变量(即长格式),并且我想将数据格式化为多状态模式怎么办?我在网上找到的所有教程仅用于将最初的宽数据转换为多状态数据(而不是最初的长数据)。例如mstate软件包vignette。
因此,假设我有以下数据df
,其中id是“患者”的名字,{start
,stop
]告诉我们时间段{{1} }是患者在该时间段结束时所处的状态,state
是其随时间变化的协变量(假定在该时间段内是常数)。请注意,只有患者tv.cov
的条目为3x该人的id=5
发生了变化。
tv.cov
假设基本的“疾病-死亡”过渡模型:
id start stop state tv.cov
1 0 1 1 1
2 0 4 1 2
3 0 7 1 1
4 0 10 1 5
5 0 6 1 4
5 6 10 2 10
5 10 15 3 12
如何将tmat <- mstate::trans.illdeath(names = c("healthy", "sick", "death"))
> tmat
to
from healthy sick death
healthy NA 1 2
sick NA NA 3
death NA NA NA
设置为多状态格式?
作为一种技巧,我应该将数据设置为“宽”格式,使用df
将数据格式化为“多状态”格式,然后将另一帧加入其中,其中包含每个变量的时变协变量每个时间间隔的病人?