Как мне создать объект выживания в R?

Вопрос, который я публикую здесь, тесно связан с другим вопросом, который я опубликовал два дня назад, об анализе старения gompertz.

Я пытаюсь построить объект выживания, см. Surv, в R. Надеюсь, он будет использован для выполнения анализа Гомперца, чтобы получить на выходе два значения (см. Исходный вопрос для получения дополнительных сведений).

У меня есть данные о выживаемости из эксперимента на мухах, в котором изучается скорость старения у разных генотипов. Мне доступны данные в нескольких макетах, поэтому выбор остается за вами, в зависимости от того, что лучше всего подходит для ответа.

Один фрейм данных (wide.df) выглядит так, где каждый генотип (Exp, из которых ~ 640) имеет строку, а дни идут последовательно по горизонтали от дня 4 до дня 98 с подсчетом новых смертей каждые два дня.

Exp      Day4   Day6    Day8    Day10   Day12   Day14    ...
A        0      0       0       2       3       1        ...

Я делаю пример, используя это:

wide.df2<-data.frame("A",0,0,0,2,3,1,3,4,5,3,4,7,8,2,10,1,2)
colnames(wide.df2)<-c("Exp","Day4","Day6","Day8","Day10","Day12","Day14","Day16","Day18","Day20","Day22","Day24","Day26","Day28","Day30","Day32","Day34","Day36")

Другая версия похожа на эту, где каждый день имеет строку для каждого «опыта» и записывается количество смертей в этот день.

Exp     Deaths  Day     
A       0       4    
A       0       6
A       0       8
A       2       10
A       3       12
..      ..      ..

Чтобы сделать этот пример:

df2<-data.frame(c("A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"),c(0,0,0,2,3,1,3,4,5,3,4,7,8,2,10,1,2),c(4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36))
    colnames(df2)<-c("Exp","Deaths","Day")

В каждом генотипе около 50 мух. В чем мне сейчас нужна помощь, так это в том, как перейти от одного из вышеупомянутых фреймов данных к работающему объекту выживания. Как выглядит этот объект? И как мне плавно добраться от вышеуказанного до объекта выживания?


person rg255    schedule 20.07.2013    source источник
comment
Есть ли цензурированные наблюдения? Если да, сколько людей подвергаются цензуре каждый день?   -  person gung - Reinstate Monica    schedule 20.07.2013
comment
@gung, что подразумевается под цензурой в объекте Survival? это одна из вещей, которая меня смутила!   -  person rg255    schedule 20.07.2013
comment
Представьте, что вы хотите знать, сколько в среднем проживут мухи. Таким образом, вы получаете стаю только что родившихся (вылупившихся?) Мух и наблюдаете за ними до 30 дней. Некоторые мухи погибают на 4-й день, другие - на 10-й и т. Д. К 30-му дню жива только 1 муха. Все, что вы знаете о том, как долго эта муха жила, - это то, что она была еще жива на 30-й день, поэтому ее продолжительность жизни была больше 30 дней, но вы не знаете фактического числа. Эта муха была подвергнута цензуре на 30-й день.   -  person gung - Reinstate Monica    schedule 20.07.2013
comment
Вы сказали, что эксперимент длился 98 дней, но последнее событие произошло на 38-й день. Можно ли предположить, что наблюдение продолжалось до 98-го дня и больше не было смертей? Или мы должны предположить, что в данном случае общее число наблюдаемых было 55, что будет означать, что у вас не было цензуры, и что все мухи были мертвы в конце эксперимента.   -  person IRTFM    schedule 20.07.2013
comment
@dwin - это просто фиктивный набор данных, в реальных данных это обычно 50 мух на каждый генотип, но некоторые из них были потеряны / убиты и т. д., и все 32000 мух умерли в течение 98 дней, в среднем 60 дней   -  person rg255    schedule 21.07.2013
comment
@gung все мухи наблюдались до самой смерти, поэтому цензуры нет   -  person rg255    schedule 21.07.2013
comment
Если все случаи смерти наблюдались (значит, цензуры не было), то нет необходимости добавлять дополнительные строки данных для представления событий цензуры. Если бы была цензура, вам потребовалась бы дополнительная строка данных для времени каждого появления цензуры.   -  person IRTFM    schedule 21.07.2013


Ответы (1)


Заметив, что всего Deaths было 55, и вы сказали, что количество мух было «около 50», я решил, что вероятным предположением является то, что это полностью наблюдаемый процесс. Таким образом, вам нужно воспроизвести повторяющиеся смерти, чтобы для каждой смерти была одна строка, и назначить маркер события 1. Очевидно, что предпочтительным является «длинный» формат. Затем вы можете создать Surv-объект с «День» и «событие».

?Surv
df3 <- df2[rep(rownames(df2), df2$Deaths), ]
str(df3)
#---------------------
'data.frame':   55 obs. of  3 variables:
 $ Exp   : Factor w/ 1 level "A": 1 1 1 1 1 1 1 1 1 1 ...
 $ Deaths: num  2 2 3 3 3 1 3 3 3 4 ...
 $ Day   : num  10 10 12 12 12 14 16 16 16 18 ...
#----------------------
df3$event=1
str(with(df3, Surv(Day, event) ) )
#------------------
 Surv [1:55, 1:2] 10  10  12  12  12  14  16  16  16  18  ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "time" "status"
 - attr(*, "type")= chr "right"

Примечание. Если бы это было сделано в функции coxph, расширение до отдельных строк даты могло бы не потребоваться, поскольку эта функция позволяет указывать веса регистра. (Я предполагаю, что для другой функции регрессии в пакете выживания это также не потребовалось бы.) В прошлом Терри Терно выражал недоумение по поводу того, что люди создают Surv-объекты вне интерфейса формулы coxph. Предполагаемое использование htis Surv-объекта не было описано достаточно подробно, чтобы знать, возможен ли взвешенный анализ без объяснения.

person IRTFM    schedule 20.07.2013
comment
Привет, что бы вы сделали, если бы это не было полностью наблюдаемым процессом (т.е. в конце экспериментов мухи все еще оставались живыми)? благодарю вас! - person uller; 10.06.2017
comment
Я должен пояснить, что я не поддерживаю создание Surv-объектов вне вызовов функций регрессии. Метод, одобренный Терно, заключается в использовании Surv-вызова на левой стороне вызова формулы и передаче фрейма данных в аргумент data. - person IRTFM; 10.06.2017
comment
Пакет Survival имеет несколько функций для работы с цензурированными данными. Если бы вы имели дело с несколькими группами, у которых были разные процессы выживания, вам потребовалось бы больше уровней для факторной переменной. Ваша последняя запись для каждой группы будет иметь переменную события, равную 1 для всех времен, за исключением последнего периода, который будет равен 0, и запись «Смерти», которая представляет собой количество живых мух в конце эксперимента. (Как объяснялось в одном из моих комментариев ... 4 года назад.) - person IRTFM; 10.06.2017