使用RMediation::medci计算置信区间时出现积分细分次数超限错误
问题描述
拥有以下数据:
exp_med_b <- c(-0.0594832340,-0.0219711830,-0.0418851800,0.0004572729,-0.0011745170) med_out_b <- c(-0.02325445,-0.03738470,0.12305580,3.40118200,0.88303590) exp_med_se <- c(0.040328500,0.013646880,0.030657290,0.001533312,0.002025108) med_out_se <- c(0.01300451,0.08911688,0.07536918,1.21814000,0.54391590)
运行以下代码时出现错误:
library(RMediation) confidence_intervals <- medci(mu.x=exp_med_b, mu.y=med_out_b, se.x=exp_med_se, se.y=med_out_se, type='dop')
错误信息:
Error in integrate(gx, lower = -Inf, upper = Inf, z = z) :
maximum number of subdivisions reached
解决办法
- 增加积分细分次数:
medci函数的额外参数会传递给底层的integrate函数,设置更高的subdivisions值可解决积分收敛问题:
confidence_intervals <- medci(mu.x=exp_med_b, mu.y=med_out_b, se.x=exp_med_se, se.y=med_out_se, type='dop', subdivisions = 10000)
- 检查并处理极端值:数据中
med_out_b的第四个值(3.401182)远大于其他值,对应标准误也较大,可能干扰积分收敛。先验证该数据点合理性,必要时移除或修正后重新计算。 - 切换置信区间计算方法:如果
dop类型仍无法收敛,改用自助法(type='boot'),该方法对极端值鲁棒性更强:
confidence_intervals <- medci(mu.x=exp_med_b, mu.y=med_out_b, se.x=exp_med_se, se.y=med_out_se, type='boot', R=1000) # 可根据需求调整自助抽样次数R
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

