如何计算R中的生存概率?

时间:2015-03-31 18:58:06

标签: r survival-analysis

我正在尝试拟合参数生存模型。我想我设法做到了。但是,我无法成功计算生存概率:

library(survival)
zaman  <- c(65,156,100,134,16,108,121,4,39,143,56,26,22,1,1,5,65,
56,65,17,7,16,22,3,4,2,3,8,4,3,30,4,43)
test <- c(rep(1,17),rep(0,16))
WBC <- c(2.3,0.75,4.3,2.6,6,10.5,10,17,5.4,7,9.4,32,35,100,
100,52,100,4.4,3,4,1.5,9,5.3,10,19,27,28,31,26,21,79,100,100)
status <- c(rep(1,33))
data <- data.frame(zaman,test,WBC)

surv3 <- Surv(zaman[test==1], status[test==1])
fit3 <- survreg( surv3 ~ log(WBC[test==1]),dist="w")

另一方面,使用Kaplan-Meier估计计算生存概率时完全没有问题:

fit2 <- survfit(Surv(zaman[test==0], status[test==0]) ~ 1)
summary(fit2)$surv

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

您可以使用survreg来获取predict对象的预测概率:

predict(fit3)

如果您有兴趣将其与原始数据以及预测的残差和标准误差相结合,则可以使用broom包中的augment函数:< / p>

library(broom)
augment(fit3)

完整分析可能类似于:

library(survival)
library(broom)
data <- data.frame(zaman, test, WBC, status)
subdata <- data[data$test == 1, ]

fit3 <- survreg( Surv(zaman, status) ~ log(WBC), subdata, dist="w")
augment(fit3, subdata)

输出:

   zaman test    WBC status   .fitted    .se.fit     .resid
1     65    1   2.30      1 115.46728  43.913188 -50.467281
2    156    1   0.75      1 197.05852 108.389586 -41.058516
3    100    1   4.30      1  85.67236  26.043277  14.327641
4    134    1   2.60      1 108.90836  39.624106  25.091636
5     16    1   6.00      1  73.08498  20.029707 -57.084979
6    108    1  10.50      1  55.96298  13.989099  52.037022
7    121    1  10.00      1  57.28065  14.350609  63.719348
8      4    1  17.00      1  44.47189  11.607368 -40.471888
9     39    1   5.40      1  76.85181  21.708514 -37.851810
10   143    1   7.00      1  67.90395  17.911170  75.096054
11    56    1   9.40      1  58.99643  14.848751  -2.996434
12    26    1  32.00      1  32.88935  10.333303  -6.889346
13    22    1  35.00      1  31.51314  10.219871  -9.513136
14     1    1 100.00      1  19.09922   8.963022 -18.099216
15     1    1 100.00      1  19.09922   8.963022 -18.099216
16     5    1  52.00      1  26.09034   9.763728 -21.090343
17    65    1 100.00      1  19.09922   8.963022  45.900784

在这种情况下,.fitted列是预测的概率。