跳转至

4.8   联合分布与边际分布

小率把班级兴趣调查表递给均哥。表里不止一个问题:每位同学每周运动几次,睡眠质量又属于“好、中、差”哪一档。单独看运动频率是一回事,单独看睡眠质量也是一回事;但真正有意思的问题是:它们会不会一起变化?

图 4.8.0 两个变量要一起看

图 4.8.0   联合分布把两个随机变量放在同一张表里,看它们如何共同出现。

班级调查要回答什么

如果只知道“运动频率”的分布,或只知道“睡眠质量”的分布,都还不够。我们还想知道:高运动频率是否更常和好睡眠一起出现?

4.8.1   一张表同时放两个变量

一个随机变量有自己的分布。那两个随机变量一起出现时,分布长什么样?
长成一张二维表。每个格子记录一对取值同时出现的概率。

联合分布(Joint Distribution)描述两个随机变量同时取值的概率:

\[ p_{X,Y}(x,y)=P(X=x,Y=y) \]

例如 \(X\) 表示每周运动频率,\(Y\) 表示睡眠质量,一格可以表示:

\[ P(X=\text{高运动},Y=\text{好睡眠}) \]

4.8.2   联合表的热图

图 4.8.1 联合 PMF 热图

图 4.8.1   热图中的每个格子是一个联合概率;把行或列加起来,就得到边缘分布。
颜色最深的格子,就是最常一起出现的组合?
对。联合分布先看组合,再看组合背后的关系。

4.8.3   边缘分布:把另一边加掉

如果只想知道 \(X\) 的分布,就把所有 \(y\) 加起来:

\[ P(X=x)=\sum_y P(X=x,Y=y) \]

如果只想知道 \(Y\) 的分布,就把所有 \(x\) 加起来:

\[ P(Y=y)=\sum_x P(X=x,Y=y) \]

这叫边缘分布(Marginal Distribution),因为在二维表里,它常常写在表格边缘。

4.8.4   条件分布:先缩小范围

如果已经知道某个同学运动频率高,再问他睡眠质量好的概率,就进入条件分布:

\[ P(Y=y\mid X=x)=\frac{P(X=x,Y=y)}{P(X=x)} \]
这和第 3 章条件概率是同一件事吗?
完全同一件事。只是现在事件写成了随机变量的取值。

读联合表的三步

先看格子:联合概率;再加边缘:单个变量分布;最后固定一行或一列:条件分布。

4.8.5   独立性:联合概率能不能拆开

如果两个随机变量独立,那么每个组合概率都能拆成两个边缘概率的乘积:

\[ P(X=x,Y=y)=P(X=x)P(Y=y) \]

这表示知道 \(X\) 的取值,不会改变你对 \(Y\) 的判断。

相关和独立不是同一层概念

独立性要求所有组合都能拆开;相关性通常只描述线性同变关系。\(r=0\) 不一定代表独立,除非有额外分布条件。

4.8.6   多维期望

两个变量一起出现后,我们常常会关心函数 \(g(X,Y)\) 的平均值:

\[ E[g(X,Y)]=\sum_x\sum_y g(x,y)P(X=x,Y=y) \]

例如 \(g(X,Y)\) 可以是“运动频率和睡眠质量的综合评分”,也可以是两个变量相乘 \(XY\)

4.8.7   用 numpy 算边缘和条件

import numpy as np

# 行:运动频率 低/中/高;列:睡眠质量 差/中/好
joint = np.array([
    [0.10, 0.12, 0.08],
    [0.08, 0.18, 0.14],
    [0.03, 0.09, 0.18],
])

px = joint.sum(axis=1)
py = joint.sum(axis=0)

print("运动频率边缘分布:", px.round(2))
print("睡眠质量边缘分布:", py.round(2))

# 已知运动频率高,睡眠质量好的概率
cond_good_given_high = joint[2, 2] / px[2]
print(f"P(好睡眠 | 高运动) = {cond_good_given_high:.2f}")
原来联合表就是一张可以求和、切片、做条件的概率表。
对。二维随机变量的很多题,本质都是在这张表里找格子、加边缘、算比例。

小率的笔记本

  • 联合分布描述两个随机变量同时取值的概率。
  • 边缘分布是把另一个变量加掉。
  • 条件分布是先固定一个变量,再在缩小后的范围内看另一个变量。
  • 独立意味着联合概率可以拆成边缘概率的乘积。
  • 联合分布是理解协方差、相关性和多变量模型的入口。