贝叶斯主义者如何使用蒙特卡洛模拟方法验证其方法?


11

背景:我拥有社会心理学博士学位,在我的定量课程中几乎没有涉及理论统计和数学。通过本科和研究生学校,我通过“经典”常客制框架得到了教育(可能与社会科学中的许多人一样)。现在,我也很喜欢R和使用模拟方法来验证方法,使工作方式对我来说,比数学上的证明更有意义(再次:定量社会科学的背景,而不是理论统计)。惯常方法和模拟方法对我来说意义非凡。因为常客将概率视为长期可能性(例如,如果我执行任意多次,并且这种情况发生在50%的时间中,那么就有50%的概率)。我们可以使用蒙特卡洛方法来模拟这种长期运行!

并发症:由于大学阶段,我已经很清楚的贝叶斯方法,并一直存在的人在我的生命给我打电话贝叶斯一边,说,结果更容易解释,我们得到概率一个假设,而不是数据我真的很喜欢这个,参加了贝叶斯课程,阅读了一些贝叶斯书籍和论文,现在对Stan及其相关的R包非常熟悉。

输入Mayo:在思考了一段时间的“贝叶斯可能是未来之路”之后,我读了Deborah Mayo的“ 统计推断”作为“严格测试”。她说,她在书的开头并没有选择任何一方,但她这样做:她是一名常客,许多书都在捍卫常客的方法论。我不想讨论我们是否认为她认为证据有效的方式,但这让我思考:贝叶斯真的是广告宣传的全部吗?我的意思是,贝叶斯人群是如此分散,以至于我什至不知道经常在贝叶斯框架中分析数据的“正确”方法。通常我会用rstanarm现在的点估计值和可信区间...这通常与常客的估计和置信区间非常接近。我可能会进行模型比较,但是我总是害怕将贝叶斯因素描述为后验概率比较等。

更多思考:在梅奥的书中,我一直在思考:有一种方法可以使用计算机来确保我们的常客方法有效,因为从长远来看,概率是可以看到的,并且可以模拟。看来,贝叶斯人甚至不能就概率的确切性达成共识,这取决于贝叶斯学派(默认,主观等)。这引出我的问题:

问题:如果长期未将概率定义为费率,贝叶斯主义者如何使用蒙特卡罗模拟方法验证他们的方法是否正确定义了不确定性(即,计算有效的可信区间和后验分布)?

示例:我创建一个数据生成器。这只是从伯努利分布中以0.​​5的概率进行模拟:

set.seed(1839)
p <- .50
n <- 100
gen_dat <- function(n, p) {
  rbinom(n, 1, p)
}

现在,假设我要确保逻辑回归中的置信区间实际上是有效的。我可以多次模拟回归,并确保实际总体值在95%的时间内处于95%的置信区间内。这是一个仅拦截的模型,所以我只想确保自己估计p正确:

set.seed(1839)
iter <- 10000
results <- sapply(seq_len(iter), function(zzz) {
  mod <- glm(gen_dat(n, p) ~ 1, binomial)
  conf <- suppressMessages(confint(mod))
  log(p / (1 - p)) < max(conf) & log(p / (1 - p)) > min(conf)
})
mean(results)

这需要几分钟的时间,但最终还是mean(results)给我们打电话0.9416。这大约是95%,我有信心说该glm命令以一种有效的方式描述了不确定性。我敢肯定,如果我iter升级并想在笔记本电脑上等待更长的时间,它将以95%靠近鼻子。

另一方面,让我们将贝叶斯模型拟合为同一件事:

library(rstanarm)
set.seed(1839)
dat <- data.frame(y = gen_dat(n, p))
stan_mod <- stan_glm(y ~ 1, binomial, dat)
summary(stan_mod)

在某种程度上,这给了我:

Estimates:
                mean   sd    2.5%   25%   50%   75%   97.5%
(Intercept)    -0.1    0.2  -0.5   -0.2  -0.1   0.0   0.3  
mean_PPD        0.5    0.1   0.3    0.4   0.5   0.5   0.6  
log-posterior -73.0    0.7 -75.1  -73.1 -72.7 -72.5 -72.5  

由于贝叶斯并没有像从长远来看那样将概率定义为概率,因此与stan_glm准确捕获不确定性相比,我该如何使用仿真方法进行验证?也就是说,使用模拟方法,我怎么能相信这些可信的间隔是正确的?现在,我什至都没有定义先验-包括先验如何在这里发挥作用,因为这将影响我们的不确定性度量?

当我一次尝试从头开始用Stan的障碍模型组件编写beta回归时,有人建议我:“模拟数据。做很多次,真正的估计应该在大约95的可信区间内% 的时间。” 但是对我来说,这与贝叶斯主义者所信奉的恰恰相反!这取决于对概率的常识性理解!那么,贝叶斯如何使我相信,从summary()调用到模型的可信区间就是使用模拟方法准确地描述了不确定性?

问题的目的:这是一个简单的例子,但是很多时候客户给我带来了难题。并且我尝试一些我不熟悉的事情,因此我经常进行模拟研究以确保我所做的事情是有效的。如果我要用Stan编写自定义模型,我怎么知道我在做的事情是合法的?我如何使用模拟方法来验证我在Stan中所做的事情实际上是要告诉我我想知道的事情?


3
好问题。两个评论:1.我们可以使用sim方法来“验证”常客模型,但是仅凭模拟不能完全告知我们常客模型的可信赖性。2:有多种方法可以知道贝叶斯/斯坦模型不可靠。例如,在预热期之后观察到发散转变。
JTH

1
我认为您正在混淆两种不同的“不确定性”。经常性方法处理偶然的​​不确定性,并因其长期特性而被证明是正确的。贝叶斯方法处理认知不确定性,不需要基于其长属性而被证明是正确的。特别地,95%可信区间不必是95%置信区间。尽管如此,即使是贝叶斯主义者也可能希望被“校准”,即匹配频率概率。参见:鲁宾,数据库。“适用统计学家的贝叶斯合理和相关频率计算。《统计年鉴1984:12:1151-1172。–
a.arfe

如果您生活在主观概率世界中,也许您不需要验证任何内容,那么您就永远不会错
阿克萨卡尔(Aksakal)

您可能希望查看stats.stackexchange.com/questions/2272/…,以了解为什么您至少在一定时间间隔内无法做到自己想做的事情。
戴夫·哈里斯

Answers:


5

我认为您在问题中看到了逻辑问题。在常客主义范式中,可以很好地推测出人口真实情况,生成数据,并查看估计值是否具有良好的覆盖范围,因为这是他们应该做的。但是,在贝叶斯范式中,没有基础事实可以生成数据!贝叶斯算法要求给定数据提供此类真相的可能性,因此在仿真中,我们需要产生数据然后以数据为条件的不同真相。在实践中,人们最终模拟了条件概率定律,幸运的是,条件定律始终如一。我将在2014年Rouder的《心理公告与评论》中探讨这个确切的问题。 https://dx.doi.org/10.3758/s13423-014-0595-4


1

如果长期未将概率定义为费率,贝叶斯人如何使用蒙特卡罗模拟方法验证他们的方法正确定义了不确定性(即,计算有效的可信区间和后验分布)?

我相信这里的困惑在于贝叶斯统计中模拟方法的目的。马尔可夫链蒙特卡罗方法(例如Gibbs Sampling或Hamiltonian Monte Carlo)的唯一目的是计算贝叶斯规则的分母。

当然,通常还有其他方法可以使MCMC变得不必要。某些模型可以使用共轭来表示,其他模型可以通过在参数空间上应用细网格来表示,而其他模型可以通过验收测试来解决。当积分不正确时,MCMC会派上用场。

πθ|X=FX|θπθθΘFX|θπθdθ
FX|θπθFX|θπθ|X总计为一。MCMC的目标是确定底数。请注意,底数是一个常数。这是预期的可能性。

该数字的准确性确实确定了一些但不是全部参数估计值。如果您使用的是最大后验估计量,则MCMC是不必要的步骤。您应该改用爬山算法。另一方面,有必要确定后均值或区间。那是因为95%的间隔必须是某物的95%,而分母决定了某物的尺度。

贝叶斯方法中MCMC的目标是使马尔可夫链收敛到后验密度。这就对了。它不会测试任何东西的有效性。这只是确定固定点值的一种尝试。它是数值积分的一种形式。由于没有办法不让算法运行到无限远就知道是否所有稠密区域都已被覆盖,因此需要人工判断。该算法认为完成时会有一个截止值,但这并不意味着它实际上已完成。

在惯常方法中,MCMC通常用于测试模型的合理性,或者在无法获得解析值时在数值上近似求解。在此没有类似目的。

如果我要用Stan编写自定义模型,我怎么知道我在做的事情是合法的?我如何使用模拟方法来验证我在Stan中所做的事情实际上是要告诉我我想知道的事情?

这个问题要困难得多。Stan是一种快速算法,这意味着它会以速度为代价来增加不准确的风险。通过构造,斯坦往往是正确的,而不是错误的。还设计了其他算法来广泛搜索参数空间以寻找局部最大值,该局部最大值可能更准确,但会非常慢。

θΘFX|θπθdθ

您可以做的第二件事是使用替代算法对其进行验证。这些数字永远不会匹配,但是如果您认为它们足够接近,那就可以了。

第三,大多数预构建的软件包会提供警告,提示可能存在问题。如果出现警告,请在调查问题根源之后再使用其他方法,因此不要在其他算法中重新创建它。

μ=ñ722σ2ñ25.12

第五,首先应该执行此操作,然后在一两个维度上绘制出边际可能性。是否有任何可能干扰算法的惊喜?

由于贝叶斯并没有像从长远来看那样定义概率,因此我如何使用仿真方法来验证stan_glm是否能准确捕获不确定性?也就是说,使用模拟方法,我怎么能相信这些可信的间隔是正确的?现在,我什至都没有定义先验-包括先验如何在这里发挥作用,因为这将影响我们的不确定性度量?

如果您没有定义先验,则您的模型无效。如果您没有定义合理的先验密度,那么为什么要使用贝叶斯模型呢?经常性模型将收集不良样本可能造成的最大损失的风险降至最低。他们非常悲观,通常需要更多信息才能产生贝叶斯方法所能达到的相同结果。

但是,如果不使用良好的先验密度,那就没有用了。先验密度使贝叶斯方法可以最大程度地减少选择劣质样本的平均损失。先验信息是一种加权方案,因此,如果不幸地选择了一些极端样本,先验信息将削弱数据的作用。

编辑 我意识到我没有提供一个具体的答案。这是一个问题

我如何使用模拟方法来验证我在Stan中所做的事情实际上是要告诉我我想知道的事情?

X

p1个-pp{1个/31个/22/3}

对您而言重要的是,贝叶斯预测永远不可能是真实的分布。三种分布之一是真实分布。贝叶斯方法基于观测值和先验值对概率进行加权。后验永远不可能是真实的分布,也永远不可能是预测的密度。

它问“在所有可能的解释(参数,模型等)的集合上看到六个正面和两个反面的概率是多少”。

H0p=1个/3

如果使用仿真来固定样本,您会发现Stan会表现出色,因为贝叶斯定理是一个数学定理。这是事后最佳。您会发现,在估计分母时,该算法正确实现了贝叶斯定理,直至自然误差水平。

您可以做三件事。首先,您可以将模型评分方法用于样本外数据。其次,您可以使用贝叶斯模型选择或模型平均过程。第三,可以将其视为常见问题,并构造估计量的抽样分布。

首先,评分方法本身就是一本完整的文献。您应该研究它们。贝叶斯模型选择和模型平均将模型视为参数。对于模型选择,计算出模型为真的概率。对于模型平均,计算每个模型为真的概率,并作为模型空间的权重。最后,您可以将其视为频率模型。

由于先验,在许多标准情况下,最后一个将是一个问题。对于具有三个或更多个尺寸且具有正态分布的模型,如果先验密度不是适当的密度,则后验密度将不会积分为一体。换句话说,您必须硬着头皮为任何具有任何实际复杂性的模型选择先验条件。

在正确居中正确先验的情况下,由于改进的信息,贝叶斯方法将优于相应的频率方法。贝叶斯方法将在任何合理的标准下获胜。这并不是由于Frequentist方法的缺陷,而是贝叶斯方法假设了外部信息。仅考虑样本中的信息,Frequentist方法将拥有较少的信息(如果您具有真实先验)。

同样,如果您没有真正的先验,那么为什么要使用贝叶斯方法呢?


@Aksakal我同意您的看法,它确实将决策和分析混为一谈。我删除了
戴夫·哈里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.