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

如何在forest_model函数中将X轴设置为对数刻度?

解决Logistic模型森林图X轴对数刻度设置问题

方案一:基于sjPlot包的forest_model调整(适用于已使用该函数的场景)

forest_model返回的是ggplot对象,可直接结合ggplot的轴刻度函数修改X轴为对数尺度:

  1. 先拟合模型并生成基础森林图:
model <- glm(Groupe~Cluster+age, family="binomial", data=base)
library(sjPlot)
p <- forest_model(model, exponentiate=TRUE)
  1. 添加对数X轴设置,可根据你的OR值范围自定义刻度位置与标签:
p + scale_x_log10(
  breaks = c(0.1, 0.5, 1, 2, 10),
  labels = c("0.1", "0.5", "1", "2", "10")
)

方案二:用forestplot包手动绘制(更灵活的自定义方式)

如果需要更自由的绘图控制,推荐使用forestplot包,直接支持对数X轴:

  1. 未安装依赖包时先执行安装:
install.packages(c("broom", "forestplot"))
  1. 提取模型结果并准备绘图数据:
library(broom)
library(forestplot)

# 提取指数化后的系数、置信区间
model_results <- tidy(model, exponentiate=TRUE, conf.int=TRUE)
# 移除截距项(森林图通常只展示自变量)
model_results <- model_results[-1, ]

# 准备森林图的文本标签(变量名 + OR值+置信区间)
text_labels <- data.frame(
  变量名 = model_results$term,
  OR值 = sprintf("%.2f (%.2f-%.2f)", 
                 model_results$estimate, 
                 model_results$conf.low, 
                 model_results$conf.high)
)
  1. 绘制带对数X轴的森林图:
forestplot(
  labeltext = text_labels,
  mean = model_results$estimate,
  lower = model_results$conf.low,
  upper = model_results$conf.high,
  xlog = TRUE,  # 开启对数X轴
  xticks = c(0.1, 0.5, 1, 2, 10),  # 自定义刻度点
  xlab = "优势比(Odds Ratio)",
  title = "Logistic回归结果森林图"
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:55:05