构建贝叶斯模型需要指定先验和似然,从而得到后验分布 $P(\theta | \mathcal{D})$。但我们如何知道所构建的模型是否良好?仅仅在MCMC采样器中达到收敛或在变分推断中获得较低的ELBO,并不能保证模型准确表示数据生成过程或提供有用的见解。我们需要系统的方法来检查模型,并严格评估它们的假设以及与数据的拟合程度。这个过程被称为模型检查。与频率论假设检验不同,贝叶斯模型检查通常不是为了拒绝原假设。相反,它是为了理解模型在哪些方面未能捕捉数据的特点。发现这些不足之处通常能指明改进模型的具体方向。记住,正如乔治·博克斯的著名论断:“所有模型都是错的,但有些是有用的。” 我们的目标是构建有用的模型,模型检查有助于我们评估这种实用性。后验预测检查(PPCs)最常见且直观的贝叶斯模型检查方法是后验预测检查(PPCs)。核心思想很简单:如果我们的模型与数据拟合良好,那么模型拟合后模拟出的数据应与实际观测数据相似。令 $y$ 表示我们的观测数据,$\theta$ 表示模型参数。我们已经计算(或近似)出后验分布 $p(\theta | y)$。后验预测分布根据拟合的模型生成复制数据集,记为 $y^{rep}$: $$ p(y^{rep} | y) = \int p(y^{rep} | \theta) p(\theta | y) d\theta $$ 在实践中,生成 $y^{rep}$ 通常很简单,特别是当您从MCMC中获得了 $\theta$ 的后验样本时:对于每个后验样本 $\theta^{(s)}$(其中 $s=1, ..., S$),从似然 $p(y | \theta^{(s)})$ 中抽取一个复制数据集 $y^{rep(s)}$。集合 ${y^{rep(s)}}_{s=1}^S$ 代表从后验预测分布中抽取的样本。一旦我们有了这些复制数据集,就将它们与我们的观测数据 $y$ 进行比较。图形化检查可视化比较通常是开始最有效的方式。我们可以将 $y$ 的各个方面与 $y^{rep}$ 中相应方面的分布进行比较。常见的图形检查包括:直方图或密度图: 比较 $y$ 的分布与几个 $y^{rep}$ 的分布。形状看起来相似吗?众数和离散程度可比吗?摘要统计量: 绘制观测到的摘要统计量值(例如,均值、中位数、方差、最小值、最大值)与为每个 $y^{rep}$ 计算的该统计量的直方图进行比较。{"layout": {"xaxis": {"title": "值"}, "yaxis": {"title": "密度"}, "title": "图形化后验预测检查", "barmode": "overlay", "legend": {"traceorder": "reversed"}}, "data": [{"type": "histogram", "x": [10.5, 11.2, 9.8, 10.1, 12.5, 8.9, 10.8, 11.5, 9.5, 10.2], "name": "观测数据 (y)", "opacity": 0.9, "marker": {"color": "#4263eb"}, "histnorm": "probability density"}, {"type": "histogram", "x": [9.9, 10.3, 10.0, 11.1, 9.5, 10.9, 10.5, 11.8, 9.2, 10.6], "name": "复制数据 (y_rep)", "opacity": 0.5, "marker": {"color": "#adb5bd"}, "histnorm": "probability density", "showlegend": false}, {"type": "histogram", "x": [10.8, 11.0, 9.6, 10.4, 12.1, 9.1, 10.7, 11.3, 9.9, 10.0], "name": "复制数据 (y_rep)", "opacity": 0.5, "marker": {"color": "#adb5bd"}, "histnorm": "probability density", "showlegend": false}, {"type": "histogram", "x": [10.1, 10.9, 9.2, 10.6, 11.9, 8.5, 11.0, 11.6, 9.7, 10.4], "name": "复制数据 (y_rep)", "opacity": 0.5, "marker": {"color": "#adb5bd"}, "histnorm": "probability density"}]}将观测数据(蓝色)的直方图与从后验预测分布模拟的多个数据集(灰色)的直方图进行比较。显著差异表明模型不拟合。检验统计量和贝叶斯P值我们可以使用检验统计量 $T(y)$ 来形式化这种比较,检验统计量是数据的函数。这些可以是标准统计量,如均值或方差,也可以是为检查模型中我们关注的特定方面而定制的(例如,计数数据中的零计数数量、最大值、自相关)。对于选定的检验统计量 $T$,我们将其在观测数据 $T(y_{obs})$ 上的值与从复制数据集中获得的 $T(y^{rep})$ 值分布进行比较。贝叶斯p值(或后验预测p值)通常计算为: $$ p_B = P(T(y^{rep}) \ge T(y_{obs}) | y) $$ 这是根据后验样本估计的,即检验统计量大于或等于观测值的复制数据集的比例: $$ p_B \approx \frac{1}{S} \sum_{s=1}^S \mathbb{I}(T(y^{rep(s)}) \ge T(y_{obs})) $$ 其中 $\mathbb{I}(\cdot)$ 是指示函数。解释: 贝叶斯p值接近0或1表明观测数据相对于模型预测而言是极端的,暗示模型可能存在不拟合之处,尤其是针对所选的检验统计量。例如,如果 $p_B \approx 0$,则观测统计量 $T(y_{obs})$ 大于几乎所有模拟值 $T(y^{rep})$。如果 $p_B \approx 1$,则 $T(y_{obs})$ 小于几乎所有模拟值。值在0.5左右表明模型很好地捕捉了数据的这一特定方面。需要记住的是,这不是用于假设检验的频率论p值。这是一种“意外程度”的衡量。我们通常使用多个检验统计量来检查不同的潜在模型缺陷。敏感性分析贝叶斯模型依赖于先验 $P(\theta)$ 和似然 $P(\mathcal{D} | \theta)$ 的选择。一项分析需要理解我们的结论(即后验分布 $P(\theta | \mathcal{D})$ 和后验预测检查)对这些选择有多敏感。先验敏感性: 如果我们指定不同且合理的先验分布,后验会发生多大变化?当数据稀缺时,这一点尤为显著,因为先验影响更大。我们可能会比较使用信息性先验与弱信息性先验的结果,或具有不同形状的先验(例如,高斯分布与学生t分布)。后验的显著变化表明我们的结论受到先验假设的严重影响,这需要仔细的论证或收集更多数据。似然敏感性: 有时似然函数的选择是近似或简化。例如,当实际误差可能是重尾分布时,却假设为高斯噪声。我们可以通过拟合具有不同似然的替代模型(例如,对似然使用学生t分布而不是正态分布)来检查敏感性,并比较结果和模型拟合(使用PPCs或稍后讨论的其他比较方法)。不确定性校准贝叶斯方法的一个显著优势在于它们能够通过后验分布量化不确定性。模型检查还应评估这种不确定性量化是否可靠。我们希望模型是校准的。例如,如果我们为不同的参数或预测计算了许多90%的可信区间,那么大约90%的可信区间应该包含真实值(如果已知,或在模拟研究中)。校准不良可能表现为区间持续过窄(过于自信)或过宽(信心不足)。存在专门用于检查校准的技术,通常涉及模拟研究或检查保留数据的覆盖属性。模型检查是迭代的模型检查不是在最后才执行的一次性步骤。它是建模工作流程中不可或缺的一部分。当PPCs或敏感性分析显示问题时,它们会指导我们如何改进模型。也许先验选择不当,似然假设不合适,或者模型结构本身(例如,缺失预测变量、交互作用或潜在变量)需要重新考虑。修改模型后,我们重复推断和检查过程。这种制定、拟合、检查和改进的迭代循环有助于我们得到不仅在统计上足够好,而且在科学或实践中也具有意义的模型。前面提到的计算挑战常常与模型检查交织在一起,因为复杂的模型可能需要高级的MCMC或VI技术(第2章和第3章中涵盖),才能实现有效的后验采样和随后的检查。