元回归中当yi=1时如何估算95%预测区间上限(pi.ub)
计算metafor元回归中预测yi=1时的95%预测区间上限
你的需求核心是找到对应预测均值yi=1的协变量ablat取值,再计算该取值下yi的95%预测区间上限。具体步骤如下:
- 推导对应ablat值
根据你的元回归模型公式yi = β₀ + β₁*ablat,令预测均值yi=1,反解得到ablat的取值:
ablat_target <- (1 - res$beta[1]) / res$beta[2]
代入你的模型参数(β₀=0.2515,β₁=-0.0291),计算得到ablat_target约为(1-0.2515)/(-0.0291) ≈ -25.72。
- 计算该ablat值下的95%预测区间上限
使用metafor包的predict.rma()函数,传入目标ablat值并指定计算预测区间:
# 生成预测结果,包含预测区间 pred_result <- predict(res, newmods = ablat_target, interval = "prediction") # 提取95%预测区间上限 pi_ub <- pred_result$pi.ub pi_ub
补充说明
- 这里的预测区间同时考虑了模型参数估计的不确定性,以及研究间的异质性(τ²)。
- 如果你的需求是已知yi=1,反推ablat的预测区间上限(逆预测),可以用以下代码计算:
# 提取模型关键参数 beta0 <- res$beta[1] beta1 <- res$beta[2] tau2 <- res$tau2 vcov_mat <- vcov(res) target_yi <- 1 # 计算ablat的点估计 ablat_pred <- (beta0 - target_yi) / beta1 # 计算逆预测的标准误(包含参数估计误差和随机误差) se_param <- sqrt( (vcov_mat[1,1] + target_yi^2*vcov_mat[2,2] - 2*target_yi*vcov_mat[1,2]) / beta1^2 ) se_random <- sqrt( (tau2 + mean(dat$vi)) / beta1^2 ) se_total <- sqrt(se_param^2 + se_random^2) # 95%预测区间上限 pi_ub_ablat <- ablat_pred + qnorm(0.975)*se_total
内容的提问来源于stack exchange,提问作者nwan5905
相关产品推荐
相关产品推荐

