贝叶斯模型(brms)II类错误疑问:重复数据为何获显著结果?
问题:为何两组完全相同的数据在贝叶斯模型中得出显著差异?
我将同一分布的数据复制为两组进行对比,仅调整先验设置就得到了显著性结果,对此原因存疑。
使用的R代码如下:
library(brms) library(bayestestR) # 生成分布数据 x <- rnorm(n = 6000, mean = 10, sd = 3.14) # 复制为两组不同条件 df1 <- data.frame(val = x, cond = "yes") df2 <- data.frame(val = x, cond = "no") # 合并为一个数据框 df <- rbind(df1,df2) # 设置先验 ipriors <- c( prior(normal(0, 20), class = Intercept), prior(normal(500, 3), class = b, coef="condyes"), prior(normal(0, 5), class = sigma) ) # 拟合模型 m <- brm(val ~ cond, data=df, family = gaussian(), prior = ipriors) summary(m) dat <- as.data.frame(m) hypothesis(dat,"b_condyes > 0")
运行后得到高度显著的差异结果:
Hypothesis Tests for class : Hypothesis Estimate Est.Error CI.Lower CI.Upper Evid.Ratio Post.Prob Star 1 (b_condyes) > 0 0.18 0.06 0.09 0.27 1332.33 1 *
我原本认为贝叶斯模型不易出现II类错误,且后验预测检查结果看起来正常。
原因解释
极端强信息先验的扭曲作用
你给condyes系数设置的先验是normal(500, 3),这个先验的均值(500)远高于数据实际均值(10),且标准差极小(3),属于极强的信息先验。贝叶斯模型的后验是先验信息与数据信息的结合:
- 虽然数据中两组完全没有差异,但这个极端先验会强行把后验的方向往正方向拉;
- 你的样本量极大(共12000个数据点),数据信息量足够大,最终把后验均值拉低到了0.18(没有接近500),但先验的正向属性让后验分布几乎完全落在0以上,因此假设检验中
b_condyes > 0的后验概率接近1,证据比极高。
对II类错误的误解
贝叶斯模型并非“不易出现II类错误”——II类错误是指实际存在差异但未检测到的假阴性情况,而你遇到的是实际无差异却检测出差异的假阳性问题,本质是先验设置严重不合理导致的。只有使用无信息或弱信息先验,才能让模型结果贴合数据实际情况。
后验预测检查正常的原因
后验预测检查是验证模型生成的数据是否与真实数据匹配。你的模型中,截距对应cond=no的均值(接近10),condyes的系数仅为0.18,两组预测值的差异极小,因此生成的预测数据和真实数据几乎一致,后验预测检查自然看起来正常,但这并不能掩盖系数先验设置的错误。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

