【问题标题】:Obtaining Survival Estimates in R在 R 中获得生存估计
【发布时间】:2012-03-02 15:16:38
【问题描述】:

我正在尝试获取不同人在特定时间的生存估计。

我的代码如下:

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

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

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

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

任何帮助将不胜感激。

谢谢, 马特

【问题讨论】:

    标签: r survival-analysis


    【解决方案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
    

    【讨论】:

    • 非常感谢。 as.data.frame 这段代码很棒!
    • str()查看summary(fit)对象真的很有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2015-08-18
    • 2016-01-18
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多