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

如何用R的meta::forest()绘制非元分析数据的森林图

使用meta::forest()绘制非元分析数据的森林图

核心思路

meta包的forest()函数虽为元分析场景设计,但可通过手动构造meta对象适配非元分析数据。关键是将风险比(RR)及置信区间转换为元分析所需的对数转换效应量和标准误,再用meta::metagen()生成forest()可识别的对象。

步骤与代码示例

  1. 加载meta包
library(meta)
  1. 构造数据集(基础R实现)
    替换成你自己的真实数据即可:
# 示例数据集(替换为你的数据)
df <- data.frame(
  study_ID = paste0("Study ", 1:5),
  risk_ratio = c(1.2, 0.8, 1.5, 0.9, 1.3),
  lb.conf.int = c(0.9, 0.6, 1.1, 0.7, 1.0),
  ub.conf.int = c(1.6, 1.1, 2.0, 1.2, 1.7)
)
  1. 转换数据适配meta包要求
    风险比属于比值类效应量,需通过对数转换保证置信区间对称,再计算标准误:
# 对RR及置信区间上下限取对数
df$log_RR <- log(df$risk_ratio)
df$log_lb <- log(df$lb.conf.int)
df$log_ub <- log(df$ub.conf.int)

# 计算对数RR的标准误(基于95%置信区间)
df$se_log_RR <- (df$log_ub - df$log_lb) / (2 * 1.96)
  1. 生成meta对象
    用metagen()创建元分析对象,指定sm="RR"让森林图显示原始风险比值:
meta_obj <- metagen(
  TE = df$log_RR,
  seTE = df$se_log_RR,
  studlab = df$study_ID,
  sm = "RR",
  # 关闭元分析合并效应量(非元分析场景无需展示)
  comb.fixed = FALSE,
  comb.random = FALSE
)
  1. 绘制森林图
    直接调用forest()即可生成meta包默认样式的森林图:
forest(meta_obj)

关键参数说明

  • comb.fixed = FALSE/comb.random = FALSE:关闭合并效应量展示,仅保留单个研究的RR及置信区间
  • studlab:指定每个研究的标签,对应你的study_ID字段
  • sm="RR":告知meta包效应量类型为风险比,绘图时自动将对数转换值转回原始RR刻度

内容的提问来源于stack exchange,提问作者Gábor Kovács

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:46:02