R 4.3中cph函数报‘object 'n' not found’错误的解决方法
R 4.3中Cox向前逐步回归报错解决及修正代码
报错原因
R 4.3适配的新版rms包中,仅含截距项的cph空模型(~1)初始化时,内部统计量n未被正确生成,触发object 'n' not found错误,旧版R搭配低版本rms无此问题。
解决步骤及修正代码
1. 核心修正:空模型添加强制参数
给cph函数添加x=TRUE, y=TRUE参数,强制生成模型所需内部变量,解决空模型报错:
null <- cph(Surv(OStime, OSstatus) ~ 1, data = OSNUx, x = TRUE, y = TRUE)
2. 完整向前逐步回归代码
建议调用rms包专属的step函数,避免与base包函数的兼容性问题,完整代码如下:
# 加载依赖包 library(rms) library(survival) # 构建模型 # 修正后的空模型 null <- cph(Surv(OStime, OSstatus) ~ 1, data = OSNUx, x = TRUE, y = TRUE) # 全模型(同样添加参数保证兼容性) full <- cph(Surv(OStime, OSstatus) ~ ., data = OSNUx, x = TRUE, y = TRUE) # 执行向前逐步回归 forward.cph <- rms::step(null, scope = list(lower = null, upper = full), direction = "forward") # 输出模型结果 summary(forward.cph)
3. 额外检查项
- 确认
OSNUx数据中,OSstatus为二元变量(0=截尾,1=事件发生),OStime为数值型生存时间; - 若仍有问题,尝试更新
rms包至最新稳定版:install.packages("rms")。
内容的提问来源于stack exchange,提问作者pgtsai tw
相关产品推荐
相关产品推荐

