2013-07-20 2 views
2

вопрос я вывешиваю здесь тесно связан с другим question I posted two days ago about gompertz aging analysis.Как создать объект выживания в R?

Я пытаюсь построить объект выживания см? 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» и число умерших в этот день записаны.

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 мух в нем. Теперь мне нужна помощь в том, как перейти от одного из вышеперечисленных блоков данных к рабочему объекту выживания. Как выглядит этот объект? И как я получу от выше до объекта выживания плавно?

+0

Есть ли цензурные наблюдения? Если да, то сколько из них подвергается цензуре в каждый день? – gung

+0

@gung Что подразумевается под цензурой в объекте Survival? это одна из вещей, которые меня смутили! – Ell

+0

Представьте, что вы хотите знать, как долго, в среднем, мухи будут жить. Итак, вы получаете кучу мух, которые только что родились (вылупились?), И наблюдайте за ними до 30 дней. Некоторые мухи умирают на 4-й день, другие 10-й день и т. Д. На 30-й день все еще жива только 1 муха. Все, что вы знаете о том, как долго летит эта муха, это то, что она еще жива на 30-й день, так что продолжительность жизни была * больше, чем 30 дней, но вы не знаете фактического числа. Эта муха была * подвергнута цензуре * на 30-й день. – gung

ответ

4

После того, как общее число 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-объекта не было описано достаточно подробно, чтобы узнать, возможен ли взвешенный анализ без exapnsion.

+0

Привет, что бы вы сделали, если это не был полностью наблюдаемый процесс (т. Е. В конце экспериментов все еще были мухи)? Спасибо! – mufernando

+0

Я должен уточнить, что я не одобряю построение объектов Surv' вне вызовов функции регрессии. Метод, одобренный Therneau, заключается в использовании «Surv'-call на LHS формулы-вызова и для подачи данных в аргумент' data'. –

+0

Пакет выживания имеет несколько функций для решения ситуаций с цензурированными данными. Если вы имели дело с несколькими группами, которые имели разные процессы выживания, вам понадобилось бы больше уровней для факторной переменной. Ваша окончательная запись для каждой группы будет иметь переменную события, которая была бы 1 за все время, за исключением последнего «периода», который был бы 0, а запись смерти - количество мух, живших в конце эксперимента. (Как объяснялось в одном из моих комментариев ... 4 года назад.) –

 Смежные вопросы

  • Нет связанных вопросов^_^