如何计算粗存活率的置信区间?
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
:
上使用 survreg
与 survfit
得到的结果
> 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
假设我们有一个生存对象如下。
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
:
survreg
与 survfit
得到的结果
> 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