Chapter 11

贝叶斯统计

信念的量化与更新:从先验到后验的推断艺术

01

核心概念

贝叶斯定理回顾

贝叶斯定理是贝叶斯统计的基石,它将条件概率转化为信念更新的规则:

P(H|D) = P(D|H) · P(H) / P(D)

其中:

洞察:频率派 vs 贝叶斯派

频率派认为参数是固定但未知的常数,数据是随机的;贝叶斯派认为参数本身也是随机变量,可以用概率分布描述不确定性。贝叶斯方法的优势在于:它能自然地整合先验知识,并在获得新数据后持续更新信念,而不是每次都从零开始。

贝叶斯推断与 MAP 估计

在参数估计中,我们常关心参数 θ 的后验分布 P(θ|D)。最大后验估计(Maximum A Posteriori, MAP)选择使后验概率最大的参数值:

θ_MAP = argmax P(θ|D) = argmax P(D|θ) · P(θ)

当先验为均匀分布时,MAP 退化为最大似然估计(MLE)。因此 MAP 可看作 MLE 的先验正则化版本。

共轭先验:Beta-二项模型

当先验分布与似然函数"搭配"时,后验分布与先验属于同一族,这种先验称为共轭先验。最经典的例子是Beta 先验 + 二项似然 = Beta 后验

若 θ ~ Beta(α, β),观测到 k 次成功、n−k 次失败,则后验为:

θ|D ~ Beta(α + k, β + n − k)

Beta 分布的均值 E[θ] = α / (α + β)。先验参数 α 和 β 可视为"伪计数"——相当于在观测前已经看到了 α 次成功和 β 次失败。

关键提醒:先验的选择

先验应反映观测前的合理信念。若缺乏先验信息,可选用弱信息先验(如 Beta(1,1) 即均匀分布)。但切忌让先验过度主导结论——当数据量足够大时,似然会"淹没"先验的影响。

贝叶斯更新步骤

贝叶斯推断的核心是连续更新:今天的后验就是明天的先验。当获得新数据 D₂ 时:

P(θ|D₁,D₂) ∝ P(D₂|θ) · P(θ|D₁)

这一迭代特性使贝叶斯方法特别适合流数据、在线学习和实时决策系统。

工程应用

垃圾邮件过滤:朴素贝叶斯分类器通过词频更新邮件为垃圾的概率。
医学诊断更新:结合先验患病率和检测结果,计算真实的患病后验概率。
推荐系统:根据用户历史行为不断更新对其偏好的信念分布。
机器学习先验设计:L2 正则化等价于高斯先验,L1 正则化等价于拉普拉斯先验。

02

计算方法

后验计算步骤

  1. 确定参数的先验分布 P(θ)。
  2. 根据数据模型写出似然函数 P(D|θ)。
  3. 计算未归一化后验:P(θ|D) ∝ P(D|θ) · P(θ)。
  4. 通过积分求边缘似然 P(D) = ∫ P(D|θ)P(θ)dθ,完成归一化。
  5. 若使用共轭先验,可直接写出后验分布的解析形式。

MAP 估计

对后验取对数,求导并令导数为零:

ln P(θ|D) = ln P(D|θ) + ln P(θ) + const

在 Beta-二项模型中,θ_MAP = (α + k − 1) / (α + β + n − 2)。当 α = β = 1(均匀先验)时,θ_MAP = k/n,即样本比例。

贝叶斯可信区间

与频率派的置信区间不同,贝叶斯给出的是可信区间(Credible Interval):参数落在区间内的后验概率为 1−α。例如对于 Beta 后验,可直接计算分位数得到 95% 可信区间。

03

例题

例题 11.1 · 硬币偏差推断

一枚硬币可能不公平。你事先认为偏差 θ(正面概率)在 [0,1] 上均匀分布,即 θ ~ Beta(1,1)。投掷 10 次,得到 7 正 3 反。求 θ 的后验分布及 MAP 估计。

解答

先验:θ ~ Beta(α=1, β=1)。

似然:二项分布,k=7, n=10。

后验:θ|D ~ Beta(α+k, β+n−k) = Beta(1+7, 1+3) = Beta(8, 4)。

MAP 估计:θ_MAP = (8−1) / (8+4−2) = 7/10 = 0.70。

后验均值:E[θ|D] = 8 / (8+4) = 8/12 ≈ 0.667。

结论:后验为 Beta(8,4),MAP = 0.70,后验均值 ≈ 0.667。数据使我们对硬币偏正面的信念增强,但不确定性仍存在。
例题 11.2 · 医学检测后验

某疾病的患病率为 1%。检测的灵敏度(真阳性率)为 95%,特异度(真阴性率)为 90%。若某人检测结果为阳性,他实际患病的概率是多少?

解答

H:患病;D:检测阳性。

先验 P(H) = 0.01;P(¬H) = 0.99。

似然 P(D|H) = 0.95;P(D|¬H) = 1 − 0.90 = 0.10。

证据 P(D) = P(D|H)P(H) + P(D|¬H)P(¬H) = 0.95×0.01 + 0.10×0.99 = 0.0095 + 0.099 = 0.1085。

后验 P(H|D) = (0.95 × 0.01) / 0.1085 ≈ 0.0876。

结论:即使检测为阳性,实际患病概率仅约 8.8%。这是因为疾病本身罕见,假阳性人数远超真阳性人数。这一结果常被直觉低估,被称为"基础率谬误"。
例题 11.3 · 连续更新信念

沿用例题 11.1 的硬币问题。在得到 7 正 3 反后,你又投掷了 20 次,得到 12 正 8 反。求两次观测后的后验分布。

解答

第一轮后验:θ|D₁ ~ Beta(8, 4)。

将第一轮后验作为第二轮先验,新数据 k₂=12, n₂=20。

第二轮后验:θ|D₁,D₂ ~ Beta(8+12, 4+8) = Beta(20, 12)。

MAP = (20−1)/(20+12−2) = 19/30 ≈ 0.633。

后验均值 = 20/32 = 0.625。

结论:两次共观测 30 正 11 反(总 41 次),后验 Beta(20,12)。随着数据积累,后验分布逐渐尖锐,对参数的信念更加确定。
例题 11.4 · 先验的影响

两位研究员对同一枚硬币进行推断。研究员 A 采用无信息先验 Beta(1,1);研究员 B 坚信硬币公平,采用强先验 Beta(50,50)。两人各投掷 10 次得到 7 正 3 反。比较两人的后验。

解答

研究员 A:后验 Beta(1+7, 1+3) = Beta(8,4),均值 = 8/12 ≈ 0.667。

研究员 B:后验 Beta(50+7, 50+3) = Beta(57,53),均值 = 57/110 ≈ 0.518。

尽管观测数据相同,研究员 B 的强先验将后验"拉向" 0.5。当数据量较小时,先验对结果影响显著;若投掷 1000 次得 700 正,则两人后验都会接近 0.70。

结论:小数据下先验选择至关重要;大数据下似然主导,不同先验收敛到相似后验。这是贝叶斯方法的稳健性所在。
04

MATLAB 实践

MATLAB 的统计工具箱提供 betapdfbetacdfbetainv 等函数用于 Beta 分布。以下代码演示贝叶斯更新过程、后验可视化以及可信区间计算。

MATLAB 代码:贝叶斯更新与后验可视化
% ========== 1. 贝叶斯更新:硬币偏差 ========== alpha_prior = 1; beta_prior = 1; % 均匀先验 Beta(1,1) k = 7; n = 10; % 观测:7正3反 alpha_post = alpha_prior + k; beta_post = beta_prior + (n - k); fprintf('后验分布: Beta(%d, %d)\n', alpha_post, beta_post); % MAP 估计(Beta 模式下众数公式) theta_map = (alpha_post - 1) / (alpha_post + beta_post - 2); fprintf('MAP = %.4f\n', theta_map); % 95% 可信区间 ci_lower = betainv(0.025, alpha_post, beta_post); ci_upper = betainv(0.975, alpha_post, beta_post); fprintf('95%% 可信区间: [%.4f, %.4f]\n', ci_lower, ci_upper); % ========== 2. 可视化:先验 vs 似然 vs 后验 ========== figure('Color','w','Position',[100 100 900 400]); theta = linspace(0, 1, 500); % 子图1:先验与后验 subplot(1,2,1); plot(theta, betapdf(theta, alpha_prior, beta_prior), 'b--', 'LineWidth', 2); hold on; plot(theta, betapdf(theta, alpha_post, beta_post), 'r-', 'LineWidth', 2); xline(theta_map, 'g:', 'LineWidth', 1.5); xlabel('θ (正面概率)'); ylabel('密度'); title('先验 vs 后验'); legend('先验 Beta(1,1)', sprintf('后验 Beta(%d,%d)', alpha_post, beta_post), ... sprintf('MAP = %.3f', theta_map), 'Location', 'best'); grid on; % 子图2:连续更新过程 subplot(1,2,2); updates = [0, 0; 7, 3; 12, 8; 30, 20]; % [正面, 反面] colors = lines(size(updates,1)); hold on; for i = 1:size(updates,1) a = 1 + sum(updates(1:i,1)); b = 1 + sum(updates(1:i,2)); plot(theta, betapdf(theta, a, b), 'Color', colors(i,:), 'LineWidth', 2, ... 'DisplayName', sprintf('步 %d: Beta(%d,%d)', i, a, b)); end xlabel('θ'); ylabel('密度'); title('连续贝叶斯更新'); legend('show', 'Location', 'best'); grid on;

运行结果:

MATLAB 输出
后验分布: Beta(8, 4) MAP = 0.7000 95% 可信区间: [0.4386, 0.8858]

可视化展示了先验(平坦的均匀分布)如何随着数据注入逐渐变为尖锐的后验。连续更新图中,每获得一批新数据,分布就更集中一步。当数据量趋于无穷时,后验将收敛为以真实参数为中心的狄拉克 δ 函数。

← 上一章:卡方检验 下一章:统计在实际中的应用 →