使用R语言dosresmeta包时缺失n和cases值的解决方法咨询
解决dosresmeta缺失n_cases和n的剂量反应Meta分析问题
核心逻辑
dosresmeta包支持两种输入模式:
- 模式1:基于原始病例数(cases)和总人数(n),需自行计算效应量
- 模式2:直接基于已有的效应量(如logRR)及其置信区间(上下限),不需要cases和n
你遇到的错误是因为函数默认尝试用模式1计算,但部分研究的cases/n缺失产生的NA值中断了内部循环。既然你已经有logRR、RR的上下限,完全可以切换到模式2完成分析,和STATA的逻辑对齐。
具体修改步骤
- 转换置信区间到对数尺度:你的lb和ub是原始RR的上下限,需要转换成对数形式(匹配公式里的logRR)
- 移除cases和n参数:调用函数时不再传入这两个变量,让函数直接使用你提供的效应量及其置信区间
修改后的代码示例:
# 先转换RR上下限为对数尺度 DRMetaAnalysis$logRR_lo <- log(DRMetaAnalysis$RR_lo) DRMetaAnalysis$logRR_hi <- log(DRMetaAnalysis$RR_hi) # 调用dosresmeta,无需cases和n DRMeta <- dosresmeta( formula = logRR ~ dose, type = type, lb = logRR_lo, # 用转换后的对数下限 ub = logRR_hi, # 用转换后的对数上限 id = ID, data = DRMetaAnalysis )
关键注意事项
- 确保所有纳入研究的
logRR、logRR_lo、logRR_hi都没有缺失值,这是模式2运行的必要条件 - 确认
logRR的计算逻辑和RR上下限的对数转换结果一致,避免逻辑矛盾 - 模式2下,函数会从置信区间推导效应量方差并拟合模型,完全不需要原始病例数和总人数,满足你必须纳入所有研究的需求
内容的提问来源于stack exchange,提问作者David R.
相关产品推荐
相关产品推荐

