在R中获取生存估计

3

我想在特定时间获取不同人的生存率估计。

我的代码如下:

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

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

这段代码创建了一个生存对象,为每个人创建了一条生存曲线,并绘制了每条曲线。通过使用summary函数,我可以获取在time = 4时第1个人的生存估计。

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

任何帮助将不胜感激。

谢谢, Matt

1个回答

3
如果你所说的都是真的,那么这是使用索引作为参数生成列表的典型方式:
 t4list <- lapply(1:11, function(x) summary(survplot[x], times=4)[1] )
 t4list

如果您的意思是要在那个时间点基于生存估计得到矢量,那么sapply会尝试将结果简化为原子形式,如数字向量或矩阵(如果结果是“多维”的情况)。我认为您只需要使用以下命令就可以得到有效的结果:
summary(survplot, times=4)[1]

假设有预测生存时间的向量,那么上述操作应该成功。如果你太贪心,将“times”值推出估计值范围之外,那么就会出现错误。有讽刺意味的是,只要所有协变量层次都有一个估计时间点,那么就不会触发这个错误。以帮助页面中的示例为起点:

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

1
非常感谢您。as.data.frame 代码片段非常好! - Matt
2
使用 str() 查看 summary(fit) 对象非常有用。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接