在R中获得生存估计

时间:2012-03-02 15:16:38

标签: r survival-analysis

我试图在特定时间获得不同人的生存估计。

我的代码如下:

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

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

此代码创建生存对象,为每个人创建生存曲线,绘制每条曲线,并使用汇总函数,我可以在time = 4获得人1的生存估计。

我正在尝试在指定时间(time = 4)创建每个人的生存估计列表。

任何帮助都将不胜感激。

谢谢, 马特

1 个答案:

答案 0 :(得分:1)

如果您说的都是真的,那么这是使用索引作为参数生成列表的典型方法:

 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