2. 概率基础与随机变量

在上一节中,我们已经建立了“随机现象—样本空间—事件”的基本框架。本节要把这个框架进一步形式化:先用概率公理把“概率”这个直观概念变成可运算的数学对象,再通过条件概率与贝叶斯公式处理“信息更新”问题,最后引入随机变量与分布函数,把对事件的讨论转化为对数值的讨论。这三步是后续所有计算与模拟工作的共同基础。

一、概率公理:给“可能性大小”立规矩

设样本空间为 Ω,事件域为 F(可理解为所有我们关心的事件构成的集合)。概率 P 是定义在 F 上的一个函数,满足三条公理:

  • 非负性:对任意事件 A,有 P(A) ≥ 0;
  • 规范性:P(Ω) = 1,即必然事件的概率为 1;
  • 可列可加性:若 A₁, A₂, … 两两互不相容,则 P(∪Aᵢ) = ΣP(Aᵢ)。

这三条公理看似抽象,但它们直接推出了一系列常用性质:P(∅) = 0;P(Aᶜ) = 1 − P(A);若 A ⊆ B,则 P(A) ≤ P(B);以及加法公式 P(A∪B) = P(A) + P(B) − P(A∩B)。最后这条公式在计算中极为常用,因为“至少一个发生”的问题往往先算并集,而并集必须减去重复计入的交集。

需要强调的是,公理只规定概率必须满足的运算规则,并不规定具体数值从何而来。实际建模时,我们通常用三种方式赋值:古典概型(等可能,用计数比值)、几何概型(用长度/面积比值)、频率近似(大量重复试验的相对频率)。在随机模拟中,我们正是用频率去逼近概率,这一点在后续章节会反复出现。

二、条件概率与乘法公式

条件概率回答的是“已知 B 发生,A 发生的概率是多少”。定义为:

P(A|B) = P(A∩B) / P(B),要求 P(B) > 0

它的直观含义是把样本空间“压缩”到 B 内部,再在 B 中衡量 A 所占的比例。由定义立即得到乘法公式 P(A∩B) = P(B)·P(A|B) = P(A)·P(B|A),并可推广到多个事件的情形。当 P(A|B) = P(A) 时,称 A 与 B 相互独立,此时乘法公式退化为 P(A∩B) = P(A)P(B)。独立性是建模中频繁使用的简化假设,但必须由问题背景或数据检验来支撑,不能想当然地套用。

三、全概率公式与贝叶斯公式

当直接计算 P(A) 困难,而 A 可以按某个“原因”划分成若干互不相容的部分时,全概率公式非常有效。设 B₁, B₂, …, Bₙ 构成样本空间的一个划分(两两不交且并为 Ω),则:

P(A) = Σ P(Bᵢ)·P(A|Bᵢ)

贝叶斯公式则是它的“反向”使用:已知结果 A 发生,反推它来自某个原因 Bⱼ 的概率:

P(Bⱼ|A) = P(Bⱼ)·P(A|Bⱼ) / Σ P(Bᵢ)·P(A|Bᵢ)

这里 P(Bⱼ) 称为先验概率,P(A|Bⱼ) 称为似然,P(Bⱼ|A) 称为后验概率。贝叶斯公式的本质是“用观测到的证据修正原有判断”。举一个教学示例(数值为假设):某检测对疾病的灵敏度为 0.95,特异度为 0.90,人群患病率为 0.01。若某人检测阳性,其真正患病的概率为 0.95×0.01 / (0.95×0.01 + 0.10×0.99) ≈ 0.0876。可以看到,即使检测指标不错,由于先验患病率很低,阳性结果对应的后验概率仍然不高——这正是贝叶斯思维最容易被忽视、也最值得用计算去验证的地方。

四、随机变量与分布函数

随机变量 X 是从样本空间到实数的映射,即把每个样本点 ω 对应为一个数值 X(ω)。引入它的意义在于:我们可以用数值工具(求和、积分、期望、方差)来处理随机现象,而不必停留在集合运算层面。按取值特点,随机变量分为离散型(取有限或可列个值)与连续型(取值充满某个区间)。

统一描述随机变量统计规律的工具是分布函数:

F(x) = P(X ≤ x),x ∈ (−∞, +∞)

分布函数具有三条基本性质:单调不减;右连续;F(−∞) = 0,F(+∞) = 1。对离散型随机变量,F(x) 是阶梯函数,跳跃点即取值点,跳跃高度等于该点的概率;对连续型随机变量,存在概率密度 f(t),使得 F(x) = ∫−∞x f(t)dt,且 P(a < X ≤ b) = F(b) − F(a)。注意连续型随机变量在单点的概率为 0,因此区间端点开闭不影响概率值。

下面的图示把本节的核心逻辑串起来:从公理出发,经条件概率与贝叶斯公式完成“信息更新”,再通过随机变量与分布函数把事件语言翻译成数值语言,最终落到离散与连续两条计算路径上。

概率公理 非负性 · 规范性 · 可列可加性 推出:P(Aᶜ)=1−P(A) P(A∪B)=P(A)+P(B)−P(A∩B) 条件概率 P(A|B)=P(A∩B)/P(B) 乘法公式:P(A∩B)=P(B)P(A|B) 独立:P(A∩B)=P(A)P(B) 贝叶斯公式 先验 × 似然 → 后验 P(Bⱼ|A)=P(Bⱼ)P(A|Bⱼ)/P(A) 全概率:P(A)=ΣP(Bᵢ)P(A|Bᵢ) 随机变量 X X: Ω → ℝ,把样本点映射为数值 离散型:取有限/可列个值 连续型:取值充满区间 分布函数 F(x) F(x)=P(X≤x) 单调不减 · 右连续 F(−∞)=0,F(+∞)=1 离散路径 分布列 pₖ = P(X=xₖ) F(x) 为阶梯函数,跳跃高度=pₖ 连续路径 密度 f(t),F(x)=∫f(t)dt P(a<X≤b)=F(b)−F(a)

五、把公式落到计算上:一个可复现的小例子

为了说明分布函数如何参与实际计算,考虑一个离散型随机变量 X 表示“一次抽检中不合格品的个数”,假设抽检 3 件,单件不合格概率为 0.2,且各件相互独立。则 X 服从二项分布 B(3, 0.2),分布列为:

P(X=0) = 0.8³        = 0.512
P(X=1) = 3×0.2×0.8²  = 0.384
P(X=2) = 3×0.2²×0.8  = 0.096
P(X=3) = 0.2³        = 0.008

据此可写出分布函数在各点的值:F(0)=0.512,F(1)=0.896,F(2)=0.992,F(3)=1。若要计算“不合格品不超过 2 件”的概率,直接读 F(2)=0.992;若要计算“恰好 2 件”,则用 F(2)−F(1)=0.096。可以看到,分布函数把“区间概率”统一成了端点函数值之差,这正是它在数值计算和编程实现中特别方便的原因。

在写代码实现分布函数时,离散情形建议先对概率数组做累加得到 F 的阶梯值,再用“小于等于 x 的最大取值点”去查表;连续情形则用数值积分或调用现成的分布函数库。无论哪种方式,都应先检查 F 的末端是否收敛到 1,这是发现概率赋值错误最直接的自检手段。

六、为后续计算与模拟做的准备

本节建立的四个工具会在后面反复出现:公理保证运算合法;条件概率与乘法公式处理联合事件;全概率与贝叶斯公式处理信息更新;随机变量与分布函数把问题转化为数值函数。特别地,随机模拟的基本思路就是:按照某个分布生成大量样本,用样本频率估计概率、用样本分布逼近分布函数。因此,在进入模拟之前,务必能对给定问题明确写出“随机变量是什么、取值范围是什么、分布函数或分布列如何表达”,这是把实际问题翻译成可计算形式的关键一步。

常见误区有三:其一,把 P(A|B) 与 P(B|A) 混为一谈,二者只有在特殊条件下才相等;其二,忽略先验概率对后验的影响,导致对检测类问题得出过于乐观的结论;其三,对连续型随机变量套用“单点概率”的直觉,误以为 P(X=x) 可能大于 0。遇到这三类问题时,回到定义式逐项代入,通常就能定位错误所在。