Форматирование данных для анализа выживаемости - переменная времени в длинных данных формы - PullRequest
0 голосов
/ 30 апреля 2018

Я новичок в анализе выживания и не уверен, правильно ли я форматирую свои данные. Используя эти фиктивные данные:

id <- c(rep("1", 10), rep("2", 10), rep("3", 10), rep("4", 10), rep("5", 10))
age <- c((15:24), (35:44), (45:54), (55:64), (40:49))
event <- c(rep("0", 10), 
       0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
       0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
       0, 0, 0, 2, 2, 2, 2, 2, 2, 2)
group <- c("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", 
       "a", "a", "a", "a", "b", "b", "b", "b", "a", "a",
       "a", "a", "a", "a", "b", "b", "b", "a", "b", "b",
       "a", "a", "a", "a", "c", "c", "c", "c", "c", "c",
       "d", "d", "d", "d", "a", "a", "a", "a", "a", "a")
df <- data.table(id, age, event, group)
df$tstart <- integer(0)
df$tstop <- df$age
df[, tstart := shift(tstop), by = id]
df$tstart <- ifelse(is.na(df$tstart), 14, df$tstart)

v1 <- survfit(Surv(age, event == 1) ~ group, data = df)
v2 <- survfit(Surv(tstart, tstop, event == 1) ~ group, data = df) 

Внутри события 1 = событие, на котором я сосредоточен, 0 = событие еще не произошло, 2 = потеря по другой причине.

Я смотрю, зависит ли возраст «события» от того, в какой «группе» вы находитесь. Я видел код, отформатированный как:

coxph(Surv(age, event == 1) ~ group)

и

coxph(Surv(tstart, tstop, event == 1) ~ group) 

но я получаю разные результаты в зависимости от того, какой код я использую, и графики КМ также выглядят совершенно по-разному. Мне нужны данные настолько длинной формы, сколько у меня есть изменяющиеся во времени ковариаты.

Может кто-нибудь сказать мне, где я иду не так?

Спасибо.

...