R生存分析coxph交互项参考水平修改失败,relevel无效如何解决?
解决方案
交互项的参考水平由两个分类变量各自的参考水平共同决定,relevel操作未生效通常是因为未同时修改两个变量的参考水平,或未先将变量转为因子类型。以下是两种可行实现方案:
方法1:分别设定两个因子的参考水平(推荐)
先将Level1、Level2转为因子类型,分别指定参考水平为M1、V1,再运行模型即可自动将交互项参考组设为M1-V1。修改后可运行代码如下:
library(survival) library(dplyr) set.seed(123) st<-sample(0:1,100, replace = T) tm<-rnorm(100,20,9) fm<-sample(c("M","F"),100,replace = T) age<-rnorm(100,75,10) level1<-sample(c("M1","M2", "M3"),100,replace = T) level2<-sample(c("V1","V2", "V3"),100,replace = T) dt<-data.frame(status=st, Time= tm, Sex= fm, Age=age, Level1=level1, Level2=level2 ) # 关键修改步骤:转换因子并指定参考水平 dt$Level1 <- relevel(factor(dt$Level1), ref = "M1") dt$Level2 <- relevel(factor(dt$Level2), ref = "V1") dt %>% coxph(Surv(Time, status) ~Sex + Age + Level1:Level2 , data = .) %>% summary()
方法2:生成交互组合的单因子变量
如果需要更直观的对照展示,可先将两个变量的取值组合生成新的因子,直接指定该因子的参考水平为M1-V1:
# 接上文dt数据集生成代码 dt$inter_group <- factor(paste0(dt$Level1, "-", dt$Level2)) dt$inter_group <- relevel(dt$inter_group, ref = "M1-V1") dt %>% coxph(Surv(Time, status) ~Sex + Age + inter_group, data = .) %>% summary()
该方法的输出会直接展示所有组合和M1-V1的对比结果,可读性更强。
内容的提问来源于stack exchange,提问作者Melih Aras
相关产品推荐
相关产品推荐

