`mstate`:将“长”格式的数据准备成“ mstate”格式的数据

时间:2019-09-20 18:28:34

标签: r survival-analysis survival

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是“患者”的名字,{startstop]告诉我们时间段{{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将数据格式化为“多状态”格式,然后将另一帧加入其中,其中包含每个变量的时变协变量每个时间间隔的病人?

0 个答案:

没有答案