提问人:Linda A 提问时间:11/17/2023 更新时间:11/17/2023 访问量:33
coxph 和 cph 函数之间生存概率估计的数值差异
Numerical Differences in Survival Probability Estimates between coxph and cph Functions
问:
我目前正在研究从 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
我将不胜感激任何关于为什么会发生这些差异的见解或指导。感谢您抽出宝贵时间接受采访。
答:
查看每个函数(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")
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
这适用于您的实际数据吗?
评论
下一个:两个数据帧之间的按列关联
评论
robust = TRUE
cph()
coxph
FALSE