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

如何使用R语言forestmodel包将多个逻辑回归模型合并为单个森林图

如何用forestmodel包将多个逻辑回归模型的森林图合并到同一幅图?

我明白你现在的困扰——你已经成功用forestmodel包生成了单个逻辑回归模型的森林图,但尝试了几种方法都没法把多个模型的结果合并到同一张图里。其实问题出在没找对传入模型的正确方式,下面我来帮你搞定这个问题:

核心解决方案

forestmodel包的forest_model()函数的model_list参数需要接收实际的模型对象列表(也就是你拟合出来的glm对象),而不是生成的绘图对象、模型名字的字符串或者直接传入多个模型参数。


完整可运行代码

先保留你已有的数据处理和模型拟合步骤:

# 加载包与数据
library(tidyverse)
library(forestmodel)
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")

# 将rank转换为因子类型
mydata$rank <- factor(mydata$rank)

# 拟合两个预测大学录取情况的模型
mylogit1 <- glm(admit ~ gre + rank, data = mydata, family = "binomial")
mylogit2 <- glm(admit ~ gpa + rank, data = mydata, family = "binomial")

然后用以下代码生成合并后的森林图:

# 基础版合并森林图
combined_forest <- forest_model(model_list = list(mylogit1, mylogit2))
combined_forest

如果你想给每个模型加上自定义标签(让图中的分组更易读),可以给列表命名:

# 带自定义模型名称的合并森林图
combined_forest_named <- forest_model(model_list = list(
  "GRE + 高中排名" = mylogit1,
  "GPA + 高中排名" = mylogit2
))
combined_forest_named

为什么你之前的尝试无效?

我来帮你梳理下之前方法的问题:

  • forest_model(mylogit1, mylogit2):函数的第一个参数是单个模型,后续参数并不是用来接收多个模型的,所以会触发参数不匹配的错误。
  • forest_model(model_list = c(plot1, plot2)):model_list需要的是glm模型对象,而plot1/plot2是已经生成的ggplot绘图对象,函数无法识别这类对象。
  • forest_model(model_list = c("plot1", "plot2")):传入模型名字的字符串也不行,函数需要的是实际存在的模型对象,不是字符形式的名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:57:48