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

addpoly函数指定level=90后仍显示95%CI文本的问题求助

问题

我基于metafor包中的rma.mv对象创建了带亚组的森林图,使用forest()函数并设置level=90时,各研究效应量行旁的90%置信区间(CI)显示正常。代码如下:

res <- rma.mv(yi = g, 
              V = V, 
              random = ~ 1 | study / es_id,  
              data = df,
              method = "REML",
              test = "t")
forest(res,
       xlim = c(-16, 6.75),
       at = c(-4, -2, 0, 2, 4),
       alim = c(-4, 7.25),
       ylim = c(-2,18.5),
       ilab = cbind(df$measure, df$norm_delta_mean, df$norm_delta_sd, df$slow_delta_mean, df$slow_delta_sd), 
       ilab.xpos = c(-11, -8.75, -7.5, -5.75, -4.5),
       slab = df$descriptor, order = training_status,
       mlab = summary_labs_str("RE Model for All Studies", res),
       rows = c(2:6, 10:14), header = "Author(s) and Year",
       cex = 0.95,
       addpred = TRUE,
       level = 90)

但使用addpoly()函数添加整体汇总效应标签时,设置level=90虽按预期改变了多边形及预测区间(PI),但文本部分(估计值+CI)仍显示为95%水平。代码如下:

addpoly(res, row= 9, level = 90, mlab=summary_labs("Subgroup RE Model", res), addpred = TRUE, cex = 0.875, annotate = TRUE)

请问我忽略了什么设置?

解决方法

问题根源在于summary_labs()函数是基于原模型对象res生成标注文本,而原模型默认采用95%置信水平,不会自动读取addpoly()中设置的level=90参数。

你需要在调用summary_labs()时手动传入level=90,让它计算并输出90%置信区间的文本内容。修改后的addpoly()代码如下:

addpoly(res, row= 9, level = 90, mlab=summary_labs("Subgroup RE Model", res, level=90), addpred = TRUE, cex = 0.875, annotate = TRUE)

本质上,addpoly()的level参数只控制图形元素(多边形、预测区间线),而标注文本的置信水平由生成它的函数单独决定,必须确保两者使用相同的置信水平参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:03:21