r - 按组提取 Survfit 中的生存概率

标签 r survival-analysis

我是 R 中生存分析和 survfit 的新手。我想在表中提取指定时间段(诊断后 0、10、20、30 年)的 4 个组(疾病)的生存概率。这是设置:

fit <- survfit((time=time,event=death)~group)

surv.prob <- summary(fit,time=c(0,10,20,30))$surv
surv.prob包含 16 个概率,即在上面列出的 4 个不同时间段估计的 4 个组的生存概率。我想创建一个这样的表:
Group  time.period  prob

1       0        0.9

1       10       0.8

1       20       0.7

1       30       0.6

等等所有4组。

关于如何轻松创建这样的表格的任何建议?我将把这个命令放在循环中,以使用不同的协变量组合来估计结果。我在 survfit 中查看了 $table ,但这似乎只提供事件、中位数等。感谢对此的任何帮助。

SK

最佳答案

我可以使用具有 survest 函数的包“rms”轻松完成:

install.packages(rms, dependencies=TRUE);require(rms)
cfit <- cph(Surv(time, status) ~ x, data = aml, surv=TRUE)
survest(cfit, newdata=expand.grid(x=levels(aml$x)) , 
                                 times=seq(0,50,by=10)
          )$surv

   0        10        20        30        40         50
1  1 0.8690765 0.7760368 0.6254876 0.4735880 0.21132505
2  1 0.7043047 0.5307801 0.3096943 0.1545671 0.02059005
Warning message:
In survest.cph(cfit, newdata = expand.grid(x = levels(aml$x)), times = seq(0,  :
  S.E. and confidence intervals are approximate except at predictor means.
Use cph(...,x=TRUE,y=TRUE) (and don't use linear.predictors=) for better estimates.

通过包生存,您可以在 Therneau 和 Grambsch 的书的第 264-265 页上找到一个工作示例,但这仍然需要代码在特定时间输出值。
 fit <- coxph(Surv(time, status) ~ x, data = aml) 
 temp=data.frame(x=levels(aml$x))
 expfit <- survfit(fit, temp)
 plot(expfit, xscale=365.25, ylab="Expected")

enter image description here
> expfit$surv
              1          2
 [1,] 0.9508567 0.88171694
 [2,] 0.8975825 0.76343993
 [3,] 0.8690765 0.70430463
 [4,] 0.8405707 0.64800519
 [5,] 0.8105393 0.59170883
 [6,] 0.8105393 0.59170883
 [7,] 0.7760369 0.53078004
 [8,] 0.7057873 0.41876588
 [9,] 0.6686309 0.36584513
[10,] 0.6686309 0.36584513
[11,] 0.6254878 0.30969426
[12,] 0.5773770 0.25357160
[13,] 0.5292685 0.20403922
[14,] 0.4735881 0.15456706
[15,] 0.4179153 0.11309373
[16,] 0.3484162 0.07179820
[17,] 0.2113251 0.02059003
[18,] 0.2113251 0.02059003

> expfit$time
 [1]   5   8   9  12  13  16  18  23  27  28  30  31  33  34  43
[16]  45  48 161

正如下面@Skaul所指出的:在生存包中,具体时间可以插入为:summary(expfit,time=c(0,10,20,30))$surv

关于r - 按组提取 Survfit 中的生存概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641178/

相关文章:

python - RStudio 发现 Python pyenv 安装,但我无法运行 Python 进程

r - 模拟竞争风险数据

r - 拆分逗号分隔的字符串

r - ggplot2 - 来自不同长度来源的多个箱线图

r - "survivalsvm"预测什么?

python - 使用 pandas 格式化数据以进行生存分析

survival-analysis - 违反 PH 假设

r - 使用 'tmerge' 包中的 'survival' 向生存数据添加时变协变量

r - 我们如何从子函数中提取外部函数的名称?

r - 关于权重向量的 R 中二次形式的最大化