coxph 和 cph 函数之间生存概率估计的数值差异

问题描述 投票:0回答:1

我目前正在努力从 Cox 比例风险模型中获取生存概率。最初,我使用了 coxph 函数,但对于大数据,事实证明,在对数据中所有不同个体的所有时间点进行预测时,它的速度很慢。我尝试使用 rms 包中的 cph 函数,这显着提高了计算速度。 然而,我注意到两种方法之间的预测概率略有差异。具体来说,在较小的时间点,差异最多可达小数点后 5 位左右,而在较高的时间点,差异最多可达小数点后 2 位。我将参数设置为相同,甚至获得了相似的系数估计。

以下是两个函数的代码:

来自 coxph 函数:

S_t<- coxph(Surv(time = Y, event = d) ~ ns(age)+ns(psa)+tstage+deyo+gs+insurance+income+education+race, ties="breslow", data = data)

S_t_pred.obj <- survfit(S_t, stype=1, newdata=X, se.fit = FALSE)

S_t_pred.sum <- summary(S_t_pred.obj, times=Y, extend = TRUE)$surv

来自 cph 函数:

S_t1 <- cph(Surv(time = Y, event = d) ~ ns(age)+ns(psa)+tstage+deyo+gs+insurance+income+education+race, method="breslow", data = data, surv=T)

S_t_pred.sum1 <- survest(S_t1, stype=1, times=Y, newdata=X, se.fit = FALSE, extend = TRUE)$surv

我将非常感谢任何关于为什么会发生这些差异的见解或指导。谢谢您的宝贵时间。

r survival-analysis cox-regression survival rms
1个回答
0
投票

查看每个函数的源代码(https://github.com/harrelfe/rms/blob/master/R/cph.s / https://github.com/cran/survival/blob/master /R/coxph.R),您可以调整一些选项以获得相同的输出,例如

library(survival)
library(survminer)
# install.packages("rms")
library(rms, quietly = TRUE)

fit <- coxph(Surv(time, status) ~ age, data = lung, ties = "breslow", robust = FALSE)
fit$var
#>              [,1]
#> [1,] 8.460386e-05

fit2 <- cph(Surv(time, status) ~ age, data = lung, method = "breslow")
fit2$var
#>              age
#> age 8.460363e-05

fit3 <- cph(Surv(time, status) ~ age, data = lung, method = "breslow", singular.ok = TRUE, eps = 1e-6)
fit3$var
#>              age
#> age 8.460386e-05

创建于 2023-11-17,使用 reprex v2.0.2

这适用于您的实际数据吗?

© www.soinside.com 2019 - 2024. All rights reserved.