如何使用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
相关产品推荐
相关产品推荐

