Получение оценок выживаемости в R - PullRequest
1 голос
/ 02 марта 2012

Я пытаюсь получить оценки выживаемости для разных людей в определенное время.

Мой код выглядит следующим образом:

s = Surv(outcome.[,1], outcome.[,2])        
survplot= (survfit(s ~ person.list[,1]))  
plot(survplot, mark.time=FALSE)            

summary(survplot[1], times=4)[1]           

Этот код создает объект выживания, создает кривую выживания для каждого из 11 человек, строит график каждой из кривых, и с помощью сводной функции я могу получить оценку выживания для человека 1 при time = 4.

Я пытаюсь создать список оценок выживаемости для каждого человека в указанное время (time = 4).

Любая помощь будет оценена.

Спасибо, Matt

1 Ответ

1 голос
/ 02 марта 2012

Если все, что вы говорите, верно, то это типичный способ создания списка с использованием индексов в качестве аргументов:

 t4list <- lapply(1:11, function(x) summary(survplot[x], times=4)[1] )
 t4list

Если вы действительно имели в виду, что вам нужен вектор оценок выживания, основанный на этом времени, тогда sapply попытается просто привести результат к атомарной форме, такой как числовой вектор или матрица, в случае, когда результаты были "многомерными". Я бы подумал, что вы могли бы получить полезный результат всего лишь:

summary(survplot, times=4)[1]

Это должно было бы дать вам вектор предсказанных времен выживания (при условии, что такие времена существуют). Если вы станете слишком жадным и вытолкнете значение «раз» за пределы, где есть оценки, тогда вы выдадите ошибку. По иронии судьбы эта ошибка не возникнет, если хотя бы один раз все оценки ковариат будут оценены. Используя пример на странице справки в качестве отправной точки:

fit <- survfit(Surv(time, status) ~ x, data = aml) 
summary(fit, times=c(10, 20, 60) )[1]
#$surv
#[1] 0.9090909 0.7159091 0.1840909 0.6666667 0.5833333
# not very informative about which times and covariates were estimated 
# and which are missing

# this is more informative
as.data.frame( summary(fit, times=c(10, 20, 60) )[c("surv", "time", "strata")])
       surv time          strata
1 0.9090909   10    x=Maintained
2 0.7159091   20    x=Maintained
3 0.1840909   60    x=Maintained
4 0.6666667   10 x=Nonmaintained
5 0.5833333   20 x=Nonmaintained

Принимая во внимание, что если вы просто используете 60, вы получите сообщение об ошибке:

> summary(fit, times=c( 60) )[1]
Error in factor(rep(1:nstrat, scount), labels = names(fit$strata)) : 
  invalid labels; length 2 should be 1 or 1
...