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

如何在R的metafor包绘制Galbraith图时触发异常研究警告?

元分析中Galbraith图异常值检测及Shiny应用提示实现

Galbraith图的作用

Galbraith图(径向图)用于识别元分析中的潜在异常值或有影响力的研究。异常值会显著影响分析结果及整体结论,落在置信区域外的研究可能是潜在异常值或有影响力的研究,它们可能是导致元分析结果中异质性或不一致性的原因。

基础绘图代码

library(metafor)

# 拟合等效应模型
res <- rma(yi, vi, data=dat.hackshaw1998, method="EE")

# 调整边距优化空间
par(mar=c(5,4,0,3))

# 绘制Galbraith图
radial(res)

检测异常值并触发警告

通过计算标准化残差与95%置信区间临界值(±1.96)对比,可自动检测异常值并触发警告:

# 提取模型的标准化残差
std_resid <- rstandard(res)

# 判断是否存在超出置信区间的研究
has_outlier <- any(abs(std_resid) > 1.96)

# 触发警告
if (has_outlier) {
  warning("检测到落在置信区域外的研究,可能存在异常值或有影响力的研究!")
}

在R Shiny应用中添加提示

完全可以实现,以下是两种常用方案:

1. 弹窗警告

在绘图逻辑中加入异常值检测,发现异常时弹出模态框提示:

server <- function(input, output, session) {
  output$galbraith_plot <- renderPlot({
    # 动态拟合模型(可根据用户输入调整参数)
    res <- rma(yi, vi, data=dat.hackshaw1998, method="EE")
    std_resid <- rstandard(res)
    has_outlier <- any(abs(std_resid) > 1.96)
    
    # 弹出警告模态框
    if (has_outlier) {
      showModal(modalDialog(
        title = "提示",
        "检测到落在置信区域外的研究,可能存在异常值或有影响力的研究!",
        easyClose = TRUE
      ))
    }
    
    # 绘制Galbraith图
    par(mar=c(5,4,0,3))
    radial(res)
  })
}

2. 图下方添加脚注提示

在绘图区域底部直接添加红色提示文本,更直观:

server <- function(input, output, session) {
  output$galbraith_plot <- renderPlot({
    res <- rma(yi, vi, data=dat.hackshaw1998, method="EE")
    std_resid <- rstandard(res)
    has_outlier <- any(abs(std_resid) > 1.96)
    
    # 绘制图形
    par(mar=c(6,4,0,3)) # 增加底部边距容纳脚注
    radial(res)
    
    # 添加脚注提示
    if (has_outlier) {
      mtext("⚠️ 注意:存在落在置信区域外的研究,可能为异常值或有影响力研究", 
            side=1, line=5, col="red", cex=0.8)
    }
  })
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:28:44