
我刚结束一轮概率统计基础课学生问得最多的一个问题是“单个随机变量我勉强能算为什么还要学多维随机变量”如果你把单随机变量理解成只看一个人的体重那么多维随机变量就是同时观察身高、体重、年龄、运动习惯这几个指标。真实世界的问题几乎都不是一个因素能说清楚的。机器学习里的特征向量、信号处理里的观测与噪声、金融分析里的多资产收益底层全是多维随机变量及其分布。这篇文章是我自己概率论总结系列的第二篇重点解决四件事联合分布怎么建、边缘分布和条件分布怎么算、独立性与相关性怎么判断、协方差和相关系数到底在描述什么。最后会把二维正态分布的核心性质串起来讲并且说清楚它在实际建模中为什么无处不在。适合正在备考期末、考研复习概率论或者刚入门数据分析、机器学习想把数学底子补扎实的读者。1. 为什么要引入多维随机变量大多数问题天然是多变量的先说一个最简单的建模场景。你想给某个区域的房子做价格预测手头只有“房龄”这个变量。房龄相同的一批房子价格可能差好几倍因为面积、楼层、位置都在起作用。如果你硬用一维随机变量描述价格等于把所有其他因素的影响都折叠成一个“误差”。这种模型不是不能用而是信息损失太大。更好的做法是把价格、面积、房龄都当作随机变量放在同一个概率模型里。这样不仅能知道每个变量各自的分布还能知道“面积大的房子价格普遍偏高”这种联合规律。多维随机变量研究的正是多个变量在同一套概率规则下的行为而不是把若干个一维分布简单拼在一起。多个变量同时随机会产生一维模型里没有的新问题联合行为两个变量同时取某些值的概率是多少比如身高超过某个值且体重同时超过某个值的概率。变量之间的互相影响知道了一个变量的取值另一个变量的分布会发生什么变化比如已知某人体重偏重他身高偏高的概率就会变大。关系强度的量化两个变量到底关联得多紧密是强相关、弱相关还是基本无关我个人的体会是初学者最容易把“多个随机变量”误当成“多个独立随机变量的集合”。实际上如果没有明确说“相互独立”就必须默认它们之间存在某种关联结构。联合分布就是表达这种关联结构的完整工具。后面会看到边缘分布和条件分布都是从联合分布中推导出来的而不是另外定义的东西。2. 三个基本面联合分布、边缘分布、条件分布多维随机变量严格的定义形式有好几种但实际计算中你只需要抓住三个基本对象联合分布、边缘分布、条件分布。三者关系可以用一个公式串起来条件分布等于联合分布除以边缘分布。这个公式离散和连续情形下长得一模一样只是离散用求和连续用积分。2.1 联合分布把所有变量的概率写在同一张表里先看离散情形。假设有两个随机变量 (X) 和 (Y)联合概率质量函数写成 (p(x, y) P(X x, Y y))表示两个事件同时发生的概率。下面是我课堂上用过的一张示例表变量含义可以理解成某App一天内的请求量X和错误数YY 0Y 1Y 2X 00.100.200.05X 10.150.300.20这张表里每个格子都是一个联合概率。校验一下所有格子相加0.100.200.050.150.300.20 1.00。这是联合分布的第一个硬性条件全概率必须为1。连续情形下联合概率密度函数 (f(x, y)) 不直接表示概率而是概率的“密度”。计算某个区域内的概率需要做二重积分。二维连续密度函数有两个容易忽略的要点一是在定义域之外取值为0二是整个二维平面上的积分等于1。2.2 边缘分布把其中一个变量“积掉”边缘分布解决的是这样一个问题不管另一个变量取什么值单个变量自己的分布是什么。离散情形最简单。想知道 (X) 的边缘分布就把所有包含 (X) 的联合概率按 (Y) 的取值全部加起来(P(X0) 0.10 0.20 0.05 0.35)(P(X1) 0.15 0.30 0.20 0.65)同理(Y) 的边缘分布是 (P(Y0)0.25)(P(Y1)0.50)(P(Y2)0.25)。为什么叫“边缘”因为你把这张表按行或按列求和后结果正好写在表格的边上。这个命名其实非常直观。连续情形下边缘密度是联合密度对另一个变量做积分(f_X(x) \int_{-\infty}^{\infty} f(x,y), dy)(f_Y(y) \int_{-\infty}^{\infty} f(x,y), dx)做积分时最容易翻车的不是积分本身而是积分上下限。联合密度的取值范围决定了积分边界。比如联合密度只在某个三角形区域上有定义那么在区域外积分的贡献为零你的积分上下限必须跟着三角形区域走。这个坑在后面专门讲。2.3 条件分布已知一部分信息之后剩下的不确定性是什么条件分布回答的是“已知Y的取值后X的分布变成什么样”。离散情形用公式(P(Xx \mid Yy) \frac{P(Xx, Yy)}{P(Yy)})拿上面的表验证。已知 (Y1) 时(P(Y1)0.50)那么(P(X0 \mid Y1) \frac{0.20}{0.50} 0.40)(P(X1 \mid Y1) \frac{0.30}{0.50} 0.60)两数加起来等于1说明这是一个合法的概率分布。条件分布其实就是把“已知抽取样本时Y恰好等于某个值”当作前提重新归一化联合分布。连续情形同理(f_{X \mid Y}(x \mid y) \frac{f(x,y)}{f_Y(y)})注意一个关键区别条件密度的取值不是概率可以大于1但关于 (x) 的积分必须是1。判断两个变量是否独立也用上面这些对象。(X) 与 (Y) 独立意味着联合分布可以拆成边缘分布的乘积(p(x,y) p_X(x) \cdot p_Y(y))或 (f(x,y) f_X(x) \cdot f_Y(y))。上面表格里 (P(X0, Y1)0.20)而 (P(X0) \cdot P(Y1)0.35 \times 0.500.175)两边不相等所以 (X) 和 (Y) 不独立。这是判断独立性的正规方法不要只凭直觉说“看起来好像没关系”。3. 从联合密度算边缘与条件一个完整的工作流程连续型计算题目很多同学会因为“不知道从哪里下手”而卡住。我建议每次按固定流程走先确认定义域再求归一化常数然后算边缘密度最后算条件密度。下面用一个完整例子演示。设二维随机变量 ((X,Y)) 的联合密度为(f(x,y) c \cdot xy)定义域为 (0 \le y \le x \le 1)其余区域为0。第一步确认定义域。这个三角区域的意思是(x) 从0到1变化给定 (x) 后(y) 从0到 (x)。画出来是一个以原点、((1,0))、((1,1)) 为顶点的三角形。为什么要先画图因为后续求边缘密度时积分上下限完全由这个区域决定画错图基本等于做错题。第二步求常数 (c)。利用“全域积分为1”(\int_0^1 \int_0^x c \cdot x y, dy, dx 1)先对 (y) 积分(\int_0^x c x y , dy c x \cdot \frac{x^2}{2} \frac{c x^3}{2})再对 (x) 积分(\int_0^1 \frac{c x^3}{2} dx \frac{c}{8})令其等于1得到 (c8)。第三步求边缘密度 (f_X(x))。固定 (x)把联合密度对 (y) 在整个可能取值范围内积分(f_X(x) \int_0^x 8xy, dy 4x^3)其中 (0 \le x \le 1)。注意这里的积分上限必须是 (x)不是1。因为联合密度在 (y x) 的区域是0如果把上限写成1相当于强行把定义域外的零值也当作有值结果数值虽然可能看起来“合理”但含义错误。再算 (f_Y(y))。这次要反过来想固定 (y)问 (x) 在什么范围内取值才能落在三角区域里。从定义域 (0 \le y \le x \le 1) 可以推出 (x) 的下限是 (y)上限是1(f_Y(y) \int_y^1 8xy, dx 8y \cdot \frac{1-y^2}{2} 4y(1-y^2))其中 (0 \le y \le 1)。可以做个校验把 (f_X(x)) 和 (f_Y(y)) 分别对 (x) 和 (y) 积分结果都应该是1。这是一个很好的自检手段考试时能帮你抓住一半以上的低级错误。第四步求条件密度。已知 (Yy) 时(X) 的条件密度为(f_{X \mid Y}(x \mid y) \frac{f(x,y)}{f_Y(y)} \frac{8xy}{4y(1-y^2)} \frac{2x}{1-y^2})定义域是 (y \le x \le 1)。注意条件密度的定义域不是整个实数轴而是联合密度定义域在固定 (y) 后的截线。很多人在这一步忘记写定义域导致后面算条件期望或条件概率时出错。反过来已知 (Xx) 时(Y) 的条件密度为(f_{Y \mid X}(y \mid x) \frac{8xy}{4x^3} \frac{2y}{x^2})定义域是 (0 \le y \le x)。从结果能看出(f_X(x) \cdot f_Y(y) 4x^3 \cdot 4y(1-y^2))而联合密度是 (8xy)两者不相等因此 (X) 和 (Y) 不独立。这一步不要在脑子里想直接算出来最保险。我做助教时见过不少学生把“条件形式可分离”误判成独立其实就是因为偷懒没验算。4. 把关系变成数字协方差、相关系数、协方差矩阵分布函数能描述完整信息但大部分实际问题只需要知道“变量之间关系有多强、方向是正是负”。这时候就需要数字摘要。4.1 协方差衡量两个变量一起偏离各自中心的程度协方差定义为(\mathrm{Cov}(X,Y) E[(X - E[X])(Y - E[Y])])直觉上可以这样做把每个样本点看成一个坐标点(X) 比均值大时如果 (Y) 也比均值大那么这两个偏差乘积为正整体协方差为正。反之(X) 大时 (Y) 反而小乘积为负协方差为负。协方差为正说明两个变量倾向于同向变动为负说明反向变动。实际计算不要硬套定义用展开式更省事(\mathrm{Cov}(X,Y) E[XY] - E[X]E[Y])举一个熟悉的例子。掷一枚均匀硬币两次设 (X) 表示第一次是否正面(Y) 表示两次之和是奇数还是偶数。这个例子里 (E[XY]) 和 (E[X]E[Y]) 有差异算出来是一个非零协方差。计算过程中关键在于先列联合分布表不要凭直觉猜 (E[XY])。(E[XY]) 是 (XY) 这个新变量的期望需要对每个联合概率加权求和而不是“两个期望相乘”。协方差的一个常见误导是“数值越大关系越强”。实际上协方差会受到量纲的影响。如果 (X) 和 (Y) 的单位从米变成厘米协方差会放大100倍但变量之间的真实关系并没有变。因此直接比较不同尺度下的协方差没有意义。4.2 相关系数给协方差做个标准化相关系数把协方差除以两个变量各自的标准差(\rho_{XY} \frac{\mathrm{Cov}(X,Y)}{\sqrt{\mathrm{Var}(X)} \sqrt{\mathrm{Var}(Y)}})这个数无量纲取值永远在 (-1) 到 (1) 之间。等于1表示完全正线性相关等于-1表示完全负线性相关等于0表示不存在线性相关关系。必须反复强调一个字线性。相关系数为0只说明没有线性关系但可能存在明显的曲线关系。比如 (Y X^2)当 (X) 取 ((-1,1)) 且分布对称时算出来的相关系数可能是0但 (X) 和 (Y) 显然不独立。因此在实际分析中看到“相关系数接近0”不要直接下结论说“两者无关”要先画散点图。4.3 协方差矩阵把多变量关系打包成一个对称矩阵当变量从两个变成三个以上成对的相关关系会很多。协方差矩阵把这些信息整齐地组织起来第 (i) 行第 (j) 列的位置存放 (\mathrm{Cov}(X_i, X_j))。协方差矩阵有三个特征值得记住一定是对称矩阵因为 (\mathrm{Cov}(X_i,X_j) \mathrm{Cov}(X_j,X_i))。对角线是各个变量自己的方差非负。整个矩阵是半正定的意味着对任意非零向量二次型 (a^T \Sigma a \ge 0)。这个矩阵在机器学习里很常见。主成分分析本质上是找协方差矩阵的特征向量方向马氏距离用到的也是协方差矩阵的逆。建模时如果你假设特征向量服从多维正态分布那么协方差矩阵就是决定分布形状的核心参数。理解协方差矩阵不只是在应付概率论考试更是为后续数据分析铺路。5. 二维正态分布实际建模中最常用的联合分布在所有多维分布里二维正态分布的地位最特殊原因有二。一是数学形式友好很多计算能写出闭式结果二是中心极限定理在多元情形下的推广使得大量自然形成的联合随机现象近似服从这种分布。5.1 参数与几何含义二维正态分布由五个参数决定两个均值 (\mu_X, \mu_Y)两个标准差 (\sigma_X, \sigma_Y)以及相关系数 (\rho)。它的密度函数形式看着复杂但抽掉公式外壳后核心只有一个通过二次型控制点离中心的“距离”。更直观的是看它的等高线图。二维正态分布的等高线是一族同心椭圆。相关系数为0时椭圆长轴和短轴分别平行于坐标轴相关系数大于0时椭圆会倾斜倾斜方向表示变量正相关相关系数越接近1椭圆越“瘦长”说明两个变量越接近完全线性关系。这个性质对理解主成分分析特别有帮助。椭圆的长轴方向就是数据方差最大的方向也就是第一主成分方向。所以二维正态分布不是抽象的数学表演它精确刻画了那些“看起来像一团倾斜椭圆”的散点图背后的概率结构。5.2 条件分布仍是正态且均值具有线性形式二维正态分布有一条很漂亮的性质在给定 (Xx) 的条件下(Y) 的条件分布依然是正态分布而且条件均值是 (x) 的线性函数。这个性质很实用。它意味着如果两个变量联合服从二维正态那么用一个变量去预测另一个变量的最佳形式就是线性方程。这正是很多线性模型、卡尔曼滤波、高斯过程回归背后为什么选择正态假设的原因之一。实际数据可能不完全是正态但只要近似正态线性回归往往就能给出不错的基准结果。条件方差的公式同样重要(\mathrm{Var}(Y \mid Xx) (1-\rho^2)\sigma_Y^2)这个公式透露了一个信息条件方差只由相关系数决定而不依赖具体的 (x) 值。相关系数越接近1条件方差越小说明知道了 (X) 以后(Y) 的不确定性被压缩得越多。相关系数等于0时条件方差就是全方差说明 (X) 的信息对 (Y) 的波动没有任何帮助。5.3 一个重要而不容易记住的结论正态背景下无关等于独立一般情形下相关性和独立性是两回事不相关不等于独立。但在二维正态分布里如果相关系数为0则联合密度函数可以分解成两个一维正态密度的乘积因此两个变量独立。这个结论经常被学生误推广到其他分布上多次踩坑。比如两个变量的边缘分布都是正态但联合不是二维正态这时相关系数为0也未必独立。考试里这类判断题出现频率很高答案通常都是“错误”。要记住前提只有联合分布是二维正态时相关系数为0才等价于独立性。6. 实战中常见的问题与排查清单多维随机变量的计算步骤本身不算难但细节极多。我整理了一份常见问题的对照表都是我在批改作业和答疑时反复看到的情况。常见症状可能原因解决方式边缘密度积分后不等于1联合密度定义域没画对积分上下限写错先画定义域再按固定变量方向写积分边界条件密度表达式算出来概率为负分母边缘密度定义域没限制或分子定义域截断有误单独写出条件密度的有效取值范围判断独立性时只比较“看起来像不像乘积”没有严格代入边缘分布验证用 (f(x,y)f_X(x)f_Y(y)) 逐点抽查至少抽查两个点相关系数接近0就认为无关混淆线性相关与一般相关画散点图或检查条件期望是否不随变量变化计算协方差时直接拿两个期望相乘忘记了期望算子只能作用于线性结构先求 (E[XY])再与 (E[X]E[Y]) 比较二维正态条件下算出相关系数为0却以为仍然不独立记住了“不相关不等于独立”忘记正态特例明确题目是否说明联合分布是二维正态除了这些还有几个批量出现的小技巧。一是利用“对称性”加速计算。比如定义域关于 (x) 和 (y) 对称联合密度的形式又比较规整那么 (E[X]) 和 (E[Y]) 往往相同能减少一半工作量。二是求 (E[XY]) 时先算条件期望可能更省力(E[XY] E[X \cdot E[Y \mid X]])。这一招在题目已经给了条件分布的时候特别快。三是年年有学生忘掉的检查项算完边缘分布或者条件分布后立刻验证它是否合法。离散分布概率求和为1连续分布密度积分为1。这个动作只用一分钟但能拦截掉大量低级错误。我做题目时永远保留这个习惯计算越复杂的题越需要这个安检步骤。7. 一点教学与自学的经验收尾这些年带学生复习我对多维随机变量有一个越来越深的感受它的难度不在概念深奥而在“信息密度高”。一个简单的联合密度题目既要管定义域又要算二重积分还要记公式的分母结构任何一个环节出错都会导致结果全歪。所以我的建议非常直白先练“表格题”把离散情形下的边缘求和、条件归一、独立性检查彻底搞熟然后再碰连续型积分题。离散题的计算量小适合用来建立手感。另一个建议是不要孤立地背公式。你完全可以把联合密度、边缘密度、条件密度这三个公式看成同一个关系式的不同投影。当你理解了条件分布就是“在子集上重新归一化的联合分布”很多复杂的连续型题目就只是积分技巧问题而不需要死记。在更广的应用层面多维随机变量是理解数据科学的基石。线性模型假设误差服从正态分布本质上是把观测模型写成多维正态的条件结构高斯判别分析中对不同类别的数据分别假设多维正态分布然后计算后验概率现代概率编程和贝叶斯统计里的核心操作也都是在求各种条件分布。换句话说这篇文章里每一个看起来“只为了考试”的计算后面都对应着一种真实世界的建模操作。我自己在写代码做数据分析时最常用到的反而是边缘化和条件化这两个步骤先拟合一个联合模型再对缺失变量做边缘化或者对已知观测做条件化。这个概念你越早掌握后面理解贝叶斯推理就越轻松。希望这篇总结能帮你在复习时少走几步弯路也期待下一篇内容里咱们继续把后面的知识点逐一拆开。