`mstate`: подготовить данные в« длинном »формате в данные в формате« mstate » - PullRequest
1 голос
/ 20 сентября 2019

Типичные этапы подготовки для 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 виньетка .

Итак, допустим, у меня есть следующие данные df, где id для «пациента», (start, stop]сообщите нам периоды времени, state - это состояние, в котором находится пациент в конце периода времени, а tv.cov - их изменяющийся во времени ковариат (предполагается постоянным в течение периода времени). Обратите внимание, что только пациент id=5имеет 3х записей и 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 в несколькоформат состояния?

Как хак, я должен настроить данные в «широкоформатном» формате, отформатировать данные в «многоуровневом» формате, используя msprep, а затем присоединить к нему другой кадр, содержащий времяпеременные ковариаты для каждого пациента на каждом временном интервале?

...