带与不带addition-terms的logistic二项模型后验预测检验差异问询
问题1答复
这种差异完全符合预期,核心成因来自两类模型后验预测检查(PPC)的默认对比尺度不同:
- 聚合模型的响应变量是分组求和后的成功次数,样本量远小于未聚合的长数据,比如你给出的示例数据中聚合后仅20个观测,而长数据有1000个观测,离散的计数分布本身就比二元0/1分布的匹配观感更模糊
- 聚合模型默认PPC直接对
sum值做预测,不同分组的试验总数N可能存在差异,预测值的取值范围会随N波动,和长模型统一的0/1预测尺度相比,自然会显得匹配度更低
注意:只要固定效应、随机效应的估计结果在两类模型中一致,这种PPC的观感差异不代表聚合模型的拟合效果更差,只是对比尺度不同导致的
问题2答复
可以通过手动展开预测结果的方式,在单次二项试验尺度做PPC,具体操作逻辑如下:
首先从聚合模型中提取每个分组的后验预测成功概率,再按每个分组对应的试验次数N,将概率展开为对应数量的0/1二项模拟值,最终用展开后的模拟值和原始长数据的二元响应做对比即可。
参考实现代码:
library(bayesplot) # 1. 提取聚合模型每个分组的后验预测概率 epred_agg <- posterior_epred(m_aggregated) nsamples <- nrow(epred_agg) total_trials <- sum(dat_aggregated$N) # 2. 生成单次试验尺度的后验预测样本 y_rep_binary <- matrix(NA, nrow = nsamples, ncol = total_trials) col_idx <- 1 for (i in seq_len(nrow(dat_aggregated))) { n_i <- dat_aggregated$N[i] y_rep_binary[, col_idx:(col_idx + n_i - 1)] <- rbinom(nsamples, size = 1, prob = epred_agg[, i]) col_idx <- col_idx + n_i } # 3. 绘制和长模型尺度一致的PPC图 ppc_dens_overlay(y = dat_long$pTarget, yrep = y_rep_binary[1:100, ])
上述代码输出的PPC图就和pp_check(m_long)的输出完全同尺度,可以直接对比拟合效果。
内容的提问来源于stack exchange,提问作者kathi
相关产品推荐
相关产品推荐

