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

如何用R绘制森林图展示Meta分析中不同研究的方差

在R中绘制展示不同研究方差的森林图

步骤1:导入并整理数据

先将你的研究数据转换成R数据框:

study_data <- data.frame(
  Study = 1:11,
  Mean = c(1.345178, 3.069523, 1.328704, 2.151764, 1.166667, 33.81678, 1.080769, 1.453985, 6.418909, 2.307296, 3.722918),
  Sd = c(5.035716, 12.43596, 1.156703, 10.83554, 0.6389027, 318.2313, 0.4088965, 4.861426, 50.16277, 35.7949, 6.380527),
  Sample_size = c(87, 6, 8, 40, 9, 50, 26, 102, 28, 260, 9)
)

步骤2:计算方差及置信区间

森林图需要展示统计量的置信区间,这里基于卡方分布推导方差的95%置信区间:

# 计算方差(标准差的平方)
study_data$Var <- study_data$Sd^2

# 计算自由度
df <- study_data$Sample_size - 1

# 计算方差的95%置信区间
study_data$var_lower <- (df * study_data$Var) / qchisq(0.975, df = df)
study_data$var_upper <- (df * study_data$Var) / qchisq(0.025, df = df)

步骤3:用metafor包绘制基础森林图

metafor是元分析常用包,适合快速生成森林图:

# 安装并加载包
if (!require(metafor)) install.packages("metafor")
library(metafor)

# 绘制森林图
forest(x = study_data$Var, 
       ci.lb = study_data$var_lower, 
       ci.ub = study_data$var_upper,
       slab = paste0("Study ", study_data$Study),
       xlab = "方差",
       main = "不同研究的方差分布",
       cex = 0.8)

步骤4:用forestplot包绘制精致森林图

如果需要更美观的可视化效果,可使用forestplot包,还能添加均值等额外信息:

# 安装并加载包
if (!require(forestplot)) install.packages("forestplot")
library(forestplot)

# 整理绘图标签数据
plot_labels <- cbind(
  paste0("Study ", study_data$Study),
  round(study_data$Mean, 2),
  round(study_data$Var, 2)
)

# 绘制森林图
forestplot(labeltext = plot_labels,
           mean = study_data$Var,
           lower = study_data$var_lower,
           upper = study_data$var_upper,
           xlab = "方差",
           title = "不同研究的方差森林图",
           xticks = c(0, 50, 100, 500, 10000), # 可根据数据范围调整刻度
           col = fpColors(box = "royalblue", line = "darkblue"),
           cex = 0.8)

说明

图中每个方块代表对应研究的方差值,横线为95%置信区间,可直观对比不同研究间的方差差异及结果的不确定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:47:05