资讯动态

Beta分布练习题精讲:共轭更新、可信区间与蒙特卡洛实战

发布时间:2026/10/27 19:43:13 来源:尧图企业网站定制
“先验取 Beta(2,2)接下来 20 次观测里成功 12 次、失败 8 次后验长什么样下一次成功的概率是多少95% 可信区间又落在哪一段”——这三问基本把 Beta 分布练习题的骨架占全了参数含义、共轭更新、区间估计。很多人学贝叶斯统计公式看一遍觉得懂了真给一组数就卡壳原因是 Beta 分布的几个量均值、方差、众数、分位数平时不用手感很快就丢了。这篇东西就是把这套手感重新练回来的过程记录。它面向两类人一类是刚学完先验后验、想找题练手的入门者另一类是工作里要用转化率、留存率、点击率做判断却一直用频率派点估计、心里没底的从业者。全文围绕六道递进练习题展开每道题都给手算路径和代码验算中间穿插参数直觉、共轭推导、伪计数解释以及我自己刷题时反复踩到的几个坑。不需要你有多深的测度论基础会一点积分、能跑 Python 就行。1. Beta分布到底在描述什么一个只吐0到1之间数字的分布1.1 从“未知的固定值”到“有形状的信念”频率派的路子是转化率 p 是一个固定的未知常数只是我们不知道于是抽样、估计、算置信区间。贝叶斯的做法换了个方向p 本身就是随机的它有一个分布这个分布编码了我们当前对 p 的全部认知。这个分布如果定义在 [0,1] 上而且能被两个参数完全确定那就是 Beta 分布。为什么这个转换重要因为它让“我还不太确定”这件事可以被量化。你刚上线一个活动页对转化率一无所知可以给 p 一个 Beta(1,1)也就是 [0,1] 上的均匀分布意思是“任何值都同样可能”。你手上有历史数据同类页面转化率大概在 5% 上下波动就可以给一个集中在 0.05 附近的 Beta 分布意思是“我倾向于它在这附近但不排除偏一点”。这种“把先验知识写成分布”的操作是贝叶斯工作流的第一步也是练习题里最容易被跳过、但最不该跳过的一步。Beta 分布的概率密度函数长这样f(x; α, β) x^(α-1) (1-x)^(β-1) / B(α, β)其中 B(α, β) 是 Beta 函数起归一化作用保证整条曲线下面积为 1。实际做题时你几乎不用碰 B(α, β)因为它会在贝叶斯更新时自动约掉这也是 Beta 分布特别适合出题的原因之一。1.2 α和β不是概率是“虚拟的成功与失败次数”初学者最容易犯的错是把 α、β 当成概率值。它们不是它们必须为正数可以大于 1也可以是 0.5。真正好用的解读是伪计数Beta(α, β) 可以近似理解为“在正式观测之前我已经虚拟地见过 α-1 次成功、β-1 次失败”。之所以是 α-1 和 β-1 而不是 α 和 β是因为 Beta(1,1) 对应完全无信息对应虚拟观测数为零。这个视角一旦建立很多题就不用背公式了。比如 Beta(3,7)意思是“我先验地见过 2 次成功、6 次失败”先验均值 3/10 0.3正好是 2/(26)。再比如 Beta(21,81)意思是“我虚拟地见过 20 次成功、80 次失败”先验强度很高总共 100 条虚拟观测这时候来 10 条真实数据后验几乎不会动。强弱先验的差别本质上就是虚拟样本量的差别这一点在做第 4 题时会反复用到。顺带说一句α 和 β 相等时分布关于 0.5 对称α 越大分布整体越往右移αβ 越大分布越窄。这三条规律足以让你在看到一组参数时脑子里大致勾勒出曲线形状不用打开任何软件。1.3 为什么练习题总爱从Beta分布开刀选 Beta 当贝叶斯入门练习对象理由很实在。第一它和二项分布是共轭的先验 Beta 加二项数据后验还是 Beta参数直接相加没有任何需要数值优化的地方手算就能完成全流程。第二它的矩有闭式解均值、方差、众数都是初等表达式出题方便验算也方便。第三它的支撑集是 [0,1]天然对应比例型参数转化率、点击率、留存率、合格率、投票份额全都能套进去练完立刻能用。第四点常被忽略Beta 分布是理解“分布的形状本身携带信息”这件事的最佳载体。你可以直观看到先验很尖时数据推不动它先验很扁时数据主导一切这种“先验与数据的拔河”在其他共轭族里也能看到但 Beta 的图形最直观。所以它不只是个入门玩具实际上是把贝叶斯思维里最核心的那部分——不确定性的传播——压缩成了一道能手工验算的小题。2. 均值、方差、众数与形状先把参数的手感练出来2.1 三个必背公式及其来路设 X ~ Beta(α, β)三个最常用的量是统计量公式存在条件均值α / (αβ)恒存在方差αβ / [(αβ)²(αβ1)]恒存在众数(α-1) / (αβ-2)α1 且 β1均值公式好记总票数 αβ 里成功票占多少。方差公式里那个 (αβ1) 是很多人记不住的项其实它有个漂亮解释方差 m(1-m)/(αβ1)其中 m 是均值。也就是说方差等于“同等均值的伯努利方差”再除以一个“有效样本量加一”。αβ 越大方差越小分布越集中这个方向和直觉一致。众数公式在 α、β 都大于 1 时成立此时密度曲线是单峰的内点。这个条件必须记住因为练习题里经常故意给 Beta(0.5, 0.5) 或者 Beta(1, 3) 这种参数然后问你众数是多少照抄公式就会算出 0 或负数这种明显错误的答案。关于这三个公式的来路有一个很值得知道的解释如果取 αβ-1 个独立均匀分布在 (0,1) 上的随机数从小到大排好第 α 个次序统计量的分布恰好是 Beta(α, β)。次序统计量的均值是 α/(αβ)这正好对上。这个视角能解释为什么参数越大分布越窄——排的队越长第 α 个位置的随机波动相对越小。做推导题时用次序统计量切入比硬算积分省事得多。2.2 四类典型形状看一眼参数就知道曲线长啥样刷题刷到一定量看到参数就该有画面。下面这张表是我自己总结的对照做题时用来快速自检参数形状特征典型含义Beta(1,1)均匀平的一条线完全无信息Beta(2,2)对称单峰峰在 0.5温和地认为“中间更可能”Beta(8,2)右偏峰在 0.78 附近先验偏向高成功率Beta(0.5,0.5)U 形两端翘起认为“要么几乎不发生要么几乎必然发生”Beta(30,70)窄峰峰在 0.29 附近强先验均值 0.3这里有个反直觉的点值得单独拎出来Beta(0.5, 0.5) 的密度在 0 和 1 附近发散曲线呈 U 形均值是 0.5但 0.5 恰恰是它密度最低的地方。很多人在练第 1 题时算出均值 0.5就脑补出一个中间鼓的钟形结果画出来发现是两头翘非常挫败。原因就是他们把均值当成了众数。均值是重心众数是最高点两者在对称分布里重合在偏斜或 U 形分布里分得很开。2.3 参数小于1时的边界行为是出题人最爱埋的雷当 α 1 时密度在 x0 附近按 x^(α-1) 发散因为指数是负的。同理 β 1 时在 x1 附近发散。这种发散不影响可积性因为幂函数在原点附近积分收敛但会让众数公式彻底失效分母 αβ-2 可能为负分子 α-1 也是负的算出来是个荒谬的值。正确的处理方式是回到定义密度在端点发散时最大值取在端点处此时 MAP 估计落在边界上严格说是 0 或 1取决于哪一端发散得更厉害。这种情况在实际建模里通常意味着模型设定有问题——你在假设参数几乎必然是 0 或 1这往往是先验给得太极端了。练习题里遇到这类参数正确做法是明确指出“众数公式不适用密度在端点发散MAP 位于边界”而不是硬套公式。我自己第一次做这类题时直接套公式算出了 -T 值还以为是数值精度问题折腾了半天才反应过来是先验条件没检查。从那以后我养成了一个习惯任何题拿到手先花十秒看 α、β 是否大于 1这个前置检查能省掉后面 90% 的返工。3. 共轭更新这道题本质是一次加法3.1 从先验到后验的完整推演三步走完这是 Beta 分布练习题的核心题型必须闭着眼也能推。设 p ~ Beta(α, β)观测到 s 次成功、f 次失败且假设观测之间条件独立则似然函数为 L(p) ∝ p^s (1-p)^f。按贝叶斯公式后验密度正比于先验乘似然π(p | 数据) ∝ p^(α-1) (1-p)^(β-1) · p^s (1-p)^f p^(αs-1) (1-p)^(βf-1)这个式子的形式和 Beta 密度的核一模一样只是参数换成了 αs 和 βf。因为后验必须是合法密度积分为 1归一化常数就被唯一确定了不用手算。所以结论极其干净后验是 Beta(αs, βf)。这个推导值得反复写几遍因为它是整个共轭家族的范式。考试或面试问到“为什么 Beta 是二项分布的共轭先验”答“因为核函数同形”就够了但如果能顺手把上面的三步写出来说服力完全不一样。我曾经在一次内部技术分享里被追问“归一化常数真的可以不管吗”答案是肯定的只要确认函数形式落入已知分布族常数项由归一化条件唯一确定这是贝叶斯计算里最常用的一招。3.2 伪计数视角先验到底值多少条数据把更新规则写成 (α, β) → (αs, βf)一眼就能看出这是纯粹的加法。α 加成功数β 加失败数没有任何权重、没有任何折扣。这就是伪计数视角的来源先验参数在更新中扮演的角色和真实观测完全同构。由此可以定义一个非常有用的量先验强度记作 κ αβ它等于“先验等效的虚拟样本量”。后验里先验所占的权重是 κ/(κn)数据占 n/(κn)其中 n sf 是真实样本量。这个比例在很多决策场景里比后验均值本身更有信息量。举个具体对比。同样是观测到 15 次成功、5 次失败n20用三种不同的先验结果差别很大先验后验后验均值先验权重Beta(1,1)Beta(16,6)0.72732/22 ≈ 9%Beta(2,2)Beta(17,7)0.70834/24 ≈ 17%Beta(10,10)Beta(25,15)0.625020/40 50%Beta(2,8)Beta(17,13)0.566710/30 ≈ 33%样本极大似然估计在这四种情况下都是 0.75但后验均值从 0.5667 一路爬到 0.7273。这说明一件事后验均值永远被先验往先验均值的方向拉拉的力度由 κ/(κn) 决定。当样本量远大于先验强度时两者趋同反之先验说了算。记住这个比例比记住任何公式都有用。下次有人问你“我的先验会不会影响结论”你不用讲哲学直接算这个比例给他看。3.3 用后验预测分布自查更新做对了没有共轭更新算完一定要做个自查最方便的工具是后验预测分布。问题是基于更新后的认知下一次观测成功的概率是多少答案就是后验均值(αs)/(αβn)。这个结论有个漂亮的性质它恰好等于“把先验当虚拟观测、和数据混在一起算的总成功率”。以前面的 Beta(2,2) 更新到 Beta(17,7) 为例预测概率是 17/24 ≈ 0.7083正好是 (215)/(420)。如果问的是“接下来 n 次里成功 k 次的概率”那就要用 Beta-二项分布其概率质量函数为 C(n,k) · B(αk, βn-k) / B(α, β)。它的均值是 n·α/(αβ)方差比纯二项分布大多出来的那部分正是参数不确定性带来的。这个“方差更大”是贝叶斯预测的标志性特征也是练习题里区分“会不会用贝叶斯”的分水岭——如果你算出的预测方差和把 p 当成已知常数时一样那肯定哪里错了。我在做第 5 题时就犯过这个错直接用后验均值代入二项方差公式结果被自查环节抓了出来。后来养成习惯凡是预测题先问一句“这里有没有参数不确定性”有就必须用 Beta-二项不能用普通二项。4. 六道递进练习题从算数到决策4.1 第1-2题基础量与反解参数第 1 题设 X ~ Beta(2, 3)求均值、方差、众数以及 P(X ≤ 0.5)。均值 2/5 0.4。方差 (2×3)/[(5)²×(51)] 6/150 0.04标准差 0.2。众数 (2-1)/(23-2) 1/3 ≈ 0.3333。三个数依次减小符合右偏分布的特征重心在 0.4最高点在 0.333。区间概率这问是手算的重点。Beta(2,3) 的归一化常数 B(2,3) Γ(2)Γ(3)/Γ(5) (1×2)/24 1/12所以密度是 12x(1-x)²。展开后积分∫₀^0.5 12x(1-x)² dx 12∫₀^0.5 (x - 2x² x³) dx 12[x²/2 - 2x³/3 x⁴/4]₀^0.5代入 0.50.125 - 0.08333 0.015625 0.057292乘以 12 得 0.6875。所以 P(X ≤ 0.5) 0.6875。这个数大于 0.5符合右偏直觉质量堆在左侧。第 2 题反过来已知某比例参数的先验均值为 0.3先验方差为 0.01求对应的 Beta 参数。这题的关键是记住那条变形公式方差 m(1-m)/(αβ1)。代入 m0.3、v0.01得 0.01 0.21/(αβ1)所以 αβ1 21即 αβ 20。再由均值 0.3 α/20得 α 6β 14。答案 Beta(6, 14)。这道题实战价值很高。工作中你经常听到“这个指标大概 30%波动不大”把这种模糊表述翻译成分布参数就是这道题在练的能力。反解出来的 αβ 就是先验强度20 条虚拟观测这个数你可以拿去和真实数据量比一比立刻知道先验该不该信。4.2 第3-4题共轭更新与先验强度的拉扯第 3 题设先验为 Beta(2,2)观测到 12 次成功、8 次失败求后验分布、后验均值、后验众数和后验标准差。后验直接加Beta(212, 28) Beta(14, 10)。后验均值 14/24 ≈ 0.5833。众数 13/(24-2) 13/22 ≈ 0.5909略高于均值说明后验轻微左偏。标准差 √[140/(24²×25)] √(140/14400) ≈ √0.009722 ≈ 0.0986。注意这里的次序众数 0.591 均值 0.583分布左偏尾巴拖向左侧和 Beta(2,3) 的右偏正好相反。α β 时左偏α β 时右偏这条规律在第 1 题和第 3 题里各验证了一次可以当作快速自检的手段。第 4 题同一批数据15 成功 5 失败分别用 Beta(1,1)、Beta(10,10)、Beta(2,8) 做先验比较后验均值并说明先验强度的影响。答案就是 3.2 节那张表。这道题的训练目的不是算数而是建立“先验强度决定拔河结果”的直觉。三个后验均值从 0.5667 到 0.7273跨度 0.16而数据完全一样。如果你的业务结论会因为先验选择而翻转那就说明数据量不够这时候正确的做法不是纠结选哪个先验而是承认结论不稳健去做敏感性分析或者补数据。我实际做这类题时有个习惯把三个后验画在同一张图上。叠加之后你会看到Beta(1,1) 那条曲线被数据拽得最远Beta(10,10) 那条几乎原地不动视觉冲击比看数字强得多。这个习惯后来直接搬到了工作里任何先验敏感的结论我都会画这张图给相关的人看。4.3 第5-6题可信区间与两组方案比较第 5 题基于第 3 题的 Beta(14, 10)求 95% 等尾可信区间并说明它与 95% 最高后验密度区间HDI的区别。等尾区间取后验分布的 2.5% 和 97.5% 分位数用stats.beta.ppf(0.025, 14, 10)和stats.beta.ppf(0.975, 14, 10)跑出来大约在 0.39 到 0.77 之间具体数值以你本机运行为准。意思是在给定数据和先验之后参数落在这个区间内的后验概率是 95%。等尾和 HDI 的区别在于切法。等尾固定两端各留 2.5%简单但对偏斜分布不最优可能把密度高的区域切掉。HDI 要求区间内每一点的密度都高于区间外对偏斜分布更短但计算需要数值搜索没有闭式解。Beta 分布偏斜明显时两者差异肉眼可见对称时几乎重合。做练习题时两个都算一遍对比一下宽度能加深对“区间不是唯一的”这件事的理解。第 6 题A 组后验 Beta(14, 10)B 组后验 Beta(9, 15)估计 A 优于 B 的概率并给出决策建议。这是实际工作里最有用的题型。解析式不好写直接用蒙特卡洛从两个后验各抽 20 万个样本数一数 A 样本大于 B 样本的比例。按两组均值和标准差粗略估算差值约 0.21差的标准差约 0.14对应的概率在 0.92 到 0.94 之间跑出来具体数字会略有浮动。决策建议不是简单说“A 更好”。还要看这个概率离 0.95 有多远业务上能不能接受 6% 到 8% 的判断错误率以及如果两者实际差异很小切换到 A 的工程成本值不值。我通常会把“优于对手的概率”和“后验均值差”两个数一起报前者回答“该不该选”后者回答“选了能赚多少”缺一不可。5. 用代码把每道题验算一遍5.1 scipy.stats.beta的常用接口手算之后一定要用代码复核这是刷题的基本纪律。scipy.stats.beta提供的接口不多但够用常用的一共就那几个from scipy import stats import numpy as np a, b 2, 3 d stats.beta(a, b) print(mean:, d.mean()) # 0.4 print(var:, d.var()) # 0.04 print(std:, d.std()) # 0.2 print(P(X0.5):, d.cdf(0.5)) # 0.6875 print(pdf at 0.4:, d.pdf(0.4)) print(ppf 0.975:, d.ppf(0.975)) print(95% interval:, d.interval(0.95)) print(samples:, d.rvs(5, random_state0))stats.beta(a, b)(0.5)这种调用方式也可以等价于 cdf写法更短。众数没有内置方法要么手工算要么用d.pdf在网格上取最大值后者的好处是参数不合规时不会崩能直接看到最大值落在端点上——这正是 2.3 节那个坑的代码解法。我建议每道练习题都写成“手算 → 代码核 → 对比”三段式。手算保证你真的理解代码保证你没算错对比的过程往往能发现理解偏差。有一次我手算出 0.68 而代码给 0.6875差的那点被我当成四舍五入后来发现是积分上限代错了这种细节只有对比才能抓出来。5.2 蒙特卡洛解析式算不动时的兜底方案第 6 题那种两组比较解析式要么很丑要么没有蒙特卡洛是最实用的路径。核心代码就三行rng np.random.default_rng(42) sa rng.beta(14, 10, 200_000) sb rng.beta(9, 15, 200_000) p_better (sa sb).mean() print(p_better)几个实操细节值得说。种子必须固定否则每次跑出来的数都不一样没法复现。样本量 20 万对判断 0.9 这个量级的概率绰绰有余标准误约 √(0.9×0.1/200000) ≈ 0.0007小数点后三位是稳的。如果概率接近 0.5 或者你需要区分 0.949 和 0.951那就得加到百万级。还有一个容易忽略的点sa sb在两者完全相等时记为 False但连续分布下相等的概率为零不影响结果。不过在离散化或者分桶比较的场景下这个细节会引入偏差需要改成或者加容差。5.3 把先验和后验叠在一张图上最后一道工序是可视化它负责把数字变成直觉import numpy as np from scipy import stats import matplotlib.pyplot as plt x np.linspace(0.001, 0.999, 500) plt.plot(x, stats.beta(2, 2).pdf(x), labelprior Beta(2,2)) plt.plot(x, stats.beta(14, 10).pdf(x), labelposterior Beta(14,10)) plt.axvline(14/24, linestyle--, labelposterior mean) plt.legend()看这张图的时候重点观察三件事后验比先验窄了多少信息增益后验峰值相对先验峰值移动了多少数据的影响后验的偏斜方向α 与 β 谁大。这三项如果都和手算对得上这道题才算真做完。我自己的习惯是把图的标题直接写成题目编号和参数比如“Q3: Beta(2,2) → Beta(14,10)”攒够十几张之后回看能明显感觉到对参数组合的敏感度在提升。这种“图形记忆”比背公式牢靠得多隔几个月重新翻出来看一眼就知道当时在练什么。6. 刷这组题时最容易掉进去的五个坑6.1 把可信区间当成置信区间讲这是最高频的口误。95% 可信区间的意思是“给定数据和先验参数落在这个区间的后验概率是 95%”这句话直接谈参数的概率。置信区间的意思是“如果重复抽样无穷多次95% 的区间会覆盖真值”谈的是区间的覆盖率不是参数的概率。前者是后验陈述后者是抽样陈述Beta 分布给出的永远是前者。这个区分在实际沟通里很要命。如果你对业务方说“真值有 95% 概率落在这个区间”用贝叶斯框架是成立的但如果你用的是频率派方法却这么说严格讲是错的。做练习题时我要求自己在答案里写清楚用的是哪种哪怕只写一个词也要写。6.2 以为Beta(1,1)就是真正的“无信息”Beta(1,1) 在 p 的尺度上是均匀的看着很“中立”但换个尺度就不均匀了。比如研究者关心的往往是优势比 p/(1-p)在 logit 尺度上Beta(1,1) 对应的先验并不是平的它在两端更密。真正在某种意义下“无信息”的参考先验是 Jeffreys 先验对二项模型来说是 Beta(0.5, 0.5)。这不意味着 Beta(1,1) 不能用而是说“无信息”这个词本身需要限定在哪个尺度上。做练习题时如果题目说“取无信息先验”你得看上下文多数教材默认指 Beta(1,1)但严谨的场合会指明 Jeffreys。两种选择在小样本、极端比例下结论差别可能不小值得在答案里点一句。6.3 众数公式对着α1的参数硬套2.3 节已经说过这里再强调一次具体表现。Beta(0.5, 0.5) 套公式得 (-0.5)/(-1) 0.5看着还挺合理但正确答案是 MAP 在边界上密度在 0 和 1 处发散0.5 恰恰是最低点。这个坑之所以危险是因为公式给出的错答案看起来很正常不画图根本发现不了。防御手段很简单拿到参数先判断 α1 且 β1 是否成立不成立就明确写“众数不存在于内部MAP 在边界”然后画图确认。多花这十秒能避免整道题白做。6.4 把后验均值当成参数的真值报出去后验均值只是一个点估计它把整个分布压缩成一个数丢掉了形状信息。同样是均值 0.58Beta(14,10) 的标准差是 0.099而 Beta(58,42) 的标准差只有 0.049前者的不确定性是后者的两倍。如果只报均值对方完全无法判断这个结论有多可靠。正确的报告方式是“均值 区间 样本量”。比如“转化率后验均值 0.5895% 可信区间 [0.39, 0.77]基于 20 条观测”。三个数一起给信息才完整。这一条不是统计洁癖是我踩过实际亏的早期做分析只报点估计结果对方按这个数做资源分配后来真实值落在区间边缘返工成本很高。6.5 忘了检查后验到底被谁主导每算完一次更新都该问一句结论主要是先验带来的还是数据带来的判断方法就是看 κ/(κn)。这个比例超过 0.5说明先验权重过半结论对先验选择高度敏感低于 0.2数据基本主导换个温和的先验结论不太会变。很多人在这一步偷懒直接用一个大强度的先验跑出漂亮的窄区间然后当成确定性结论。窄区间的来源可能是先验太强而不是数据太充分这两者在报告里长得一模一样但可靠性天差地别。我的做法是强制自己做一次敏感性检查把先验强度减半看后验均值移动多少移动超过 0.05 就在报告里标注“结论对先验敏感”。这套流程走下来六道题大概要花两三个小时但收获不是“会做六道题”而是建立起一套可以从容应对新题目的检查清单参数合规性、共轭更新、先验权重、区间报告、敏感性验证。后面遇到任何 Beta 相关的实际问题按这个清单过一遍就行。我个人在实际操作中的体会是真正拉开差距的不是会不会推公式而是每次算完会不会停下来问一句“这个结论有多稳”这一问往往比公式本身更值钱。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑