You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带strata项的Cox模型调用ggforest报undefined columns selected错误求助

问题根源

ggforest()对包含strata()分层项的Cox比例风险模型兼容性不足,函数内部解析协变量时会将strata(xxx)当作普通变量名传入数据集检索,因不存在对应列触发undefined columns selected报错。


可行解决方案

方案1:手动指定需展示的协变量(最简单,无需修改模型)

调用ggforest时通过main参数传入你需要展示的非分层协变量列表即可,不需要修改原有Cox模型:

# 仅指定要展示的bil、diabetes两个协变量,跳过分层项
ggforest(fit2, data = mock_data, main = c("bil", "diabetes"))

方案2:手动提取模型结果自定义绘制森林图(兼容性最好,自由度高)

如果你的survminer版本不支持方案1的参数,可以自行提取Cox模型的效应值、置信区间后用ggplot2绘制:

# 加载依赖包
library(broom)
library(ggplot2)

# 提取模型结果,自动计算HR和95%置信区间
cox_res <- tidy(fit2, conf.int = TRUE, exponentiate = TRUE)
# 过滤分层相关项,仅保留需要展示的协变量
cox_res <- cox_res[cox_res$term %in% c("bil", "diabetes"), ]

# 绘制森林图
ggplot(cox_res, aes(x = estimate, y = term)) +
  geom_point(size = 3) +
  geom_errorbarh(aes(xmin = conf.low, xmax = conf.high), height = 0.2) +
  geom_vline(xintercept = 1, linetype = "dashed", color = "gray50") +
  scale_x_log10() + # HR通常用对数坐标轴展示更直观
  labs(x = "风险比 (HR, 95%置信区间)", y = "协变量", title = "Cox比例风险模型森林图") +
  theme_bw()

方案3:升级survminer到最新开发版

survminer的GitHub开发版已经修复了分层项的适配问题,安装后直接运行原有代码即可正常出图:

# 未安装devtools先执行:install.packages("devtools")
devtools::install_github("kassambara/survminer")

内容的提问来源于stack exchange,提问作者Leonardo Kelava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:36:06