拟合Cox模型时年龄边际图非线性,用coxphw遇列未定义错误求助
问题原因与解决办法
错误根源:
coxphw对公式变量的查找规则和coxph存在差异——它要求公式里的所有变量(包括Surv()里的时间和结局变量)必须是输入数据框data中的列。你提前把time和event提取成了全局环境中的单独变量,coxphw会试图在data里找名为time和event的列,自然找不到,因此抛出“undefined columns selected”错误。而coxph允许优先从全局环境读取变量,所以能正常运行。修正步骤:
- 不要提前提取
time和event,直接在Surv()中使用data里的原始列名; - 如果要加入
fp()调整年龄的非线性,直接把年龄变量放到fp()中,确保它也是data中的列。
- 不要提前提取
修正后的示例代码:
rm(list=ls()) library(survival) library(survminer) library(survMisc) library(dplyr) library(mfp) library(coxphw) setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) data = read.csv2("Survival Analysis.csv", header = T) # 用data中的原始列名构建公式,coxphw可正常运行 modelw = coxphw(Surv(Weken.in.dienst, Status) ~ Man, data = data) summary(modelw) # 加入fp()调整年龄非线性的示例(假设年龄列名为Age,可根据实际调整自由度df) modelw_fp = coxphw(Surv(Weken.in.dienst, Status) ~ Man + fp(Age, df=3), data = data) summary(modelw_fp)
内容的提问来源于stack exchange,提问作者ruben zwaan
相关产品推荐
相关产品推荐

