You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

贝叶斯模型(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:09:24