如何计算粗存活率的置信区间?

How to calculate confidence intervals for crude survival rates?

假设我们有一个生存对象如下。

fit = survfit(Surv(data$time_12m, data$status_12m) ~ data$group)
fit

Call: survfit(formula = Surv(data$time_12m, data$status_12m) ~ data$group)

                   n events median 0.95LCL 0.95UCL
data$group=HF  10000   3534     NA      NA      NA
data$group=IGT    70     20     NA      NA      NA

fit 对象不显示 CI-s。如何计算生存率的置信区间?应该使用哪些 R 包和代码?

survfit 的 print 结果按组给出中位生存时间的置信区间。我猜 NA 的中位时间估计值正在发生,因为您的小组没有足够的事件来实际达到中位生存期。你应该显示 plot(fit) 的输出,看看我的猜测是否正确。

您可以尝试绘制 KM 曲线,注意plot.survfit 函数确实有一个围绕比例构建的置信区间选项:

plot(fit, conf.int=0.95, col=1:2)

请阅读?summary.survfit。它是通用 summary 函数的 class,包作者通常使用它们来提供参数估计和置信区间。在那里您会看到 summary.survfit 总结的不是“比率”,而是生存比例的估计值。这些比例可以是中位数(在这种情况下,估计值在时间范围内),也可以是特定时间的估计值(在这种情况下,估计值是比例。)

如果您确实需要利率,则使用专为此类模型设计的函数,也许使用 ?survreg。比较在提供的数据集 ovarian:

上使用 survregsurvfit 得到的结果
> reg.fit <- survreg( Surv(futime, fustat)~rx, data=ovarian)
> summary(reg.fit)

Call:
survreg(formula = Surv(futime, fustat) ~ rx, data = ovarian)
             Value Std. Error     z       p
(Intercept)  6.265      0.778  8.05 8.3e-16
rx           0.559      0.529  1.06    0.29
Log(scale)  -0.121      0.251 -0.48    0.63

Scale= 0.886 

Weibull distribution
Loglik(model)= -97.4   Loglik(intercept only)= -98
    Chisq= 1.18 on 1 degrees of freedom, p= 0.28 
Number of Newton-Raphson Iterations: 5 
n= 26 

#-------------

> fit <- survfit( Surv(futime, fustat)~rx, data=ovarian)
> summary(fit)
Call: survfit(formula = Surv(futime, fustat) ~ rx, data = ovarian)

                rx=1 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   59     13       1    0.923  0.0739        0.789        1.000
  115     12       1    0.846  0.1001        0.671        1.000
  156     11       1    0.769  0.1169        0.571        1.000
  268     10       1    0.692  0.1280        0.482        0.995
  329      9       1    0.615  0.1349        0.400        0.946
  431      8       1    0.538  0.1383        0.326        0.891
  638      5       1    0.431  0.1467        0.221        0.840

                rx=2 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
  353     13       1    0.923  0.0739        0.789        1.000
  365     12       1    0.846  0.1001        0.671        1.000
  464      9       1    0.752  0.1256        0.542        1.000
  475      8       1    0.658  0.1407        0.433        1.000
  563      7       1    0.564  0.1488        0.336        0.946

如果我使用“exponential”而不是“weibull”作为分布类型,可能会更容易。指数拟合有一个估计参数,更容易 back-transformed 给出速率估计值。

注意:我之前回答了一个关于 survfit 的问题,尽管请求的是生存时间而不是比率。 Extract survival probabilities in Survfit by groups