2.3 数字特征与矩
2.2 节建立了描述随机变量的完整工具。累积分布函数、概率质量函数与概率密度函数都把分布的全部信息保存下来,代价是需要一个函数对象。比较两个分布、评估一个估计量的好坏、判断一组数据是否支持某个模型,若每次都从函数层面出发会显得繁琐。实际使用中常把分布压缩为少数几个数值,用这些数值概括分布的中心位置、离散程度、对称性与尾部厚度。
这些概括性的数值称为数字特征(numerical characteristic),期望、方差、协方差、偏度、峰度都属于这一类。它们把高维的函数对象映为实数或低维向量,使不同分布之间可以直接比较大小。机器学习中的损失函数大多写成期望的形式,模型的训练目标是最小化某个期望,评估指标是某个期望的估计,理解期望与方差的性质是读懂这些定义的起点。
本节先建立数学期望,再引入条件期望并给出它在预测问题中的角色,随后讨论方差、协方差与相关系数,接着把期望与方差推广到高阶矩、协方差矩阵,再引入矩生成函数与特征函数这两类工具函数,最后交代矩刻画分布的局限,并介绍互信息等能捕捉非线性依赖的量。这些内容与 2.2 节的分布函数互为表里,也为 2.4 与 2.5 节的具体分布族提供统一的描述参数。
2.3.1 数学期望
离散与连续情形的定义
数学期望(mathematical expectation)是随机变量取值按概率加权的平均,简称期望,记作
连续型随机变量有密度
两个定义形式一致,都是取值与对应权重的乘积求和。这个加权平均把分布的重心位置提取出来,是描述分布中心最常用的量。抛一枚均匀硬币并用
混合型随机变量的期望把求和与积分两部分相加。若随机变量在若干个离散点上有质量、其余部分连续,期望等于离散点贡献之和加上连续部分的积分。这一处理方式与 2.2 节混合分布的结构对应。
期望的线性性
期望最重要的性质是线性性:对任意常数
这一性质对任意两个随机变量成立,不要求
由线性性可以推出常数的期望:
LOTUS 与期望存在的条件
当需要计算
离散情形把积分换成求和。这一公式称为 LOTUS(law of the unconscious statistician),它把
期望存在需要绝对收敛。若
import numpy as np
from scipy import stats
# 用 LOTUS 计算 E[X^2],X ~ N(0, 1),理论值为 1
val = stats.norm.expect(lambda x: x ** 2)
print(round(val, 4)) # 1.0
# E[|X|],X ~ N(0, 1),理论值为 sqrt(2/pi)
print(round(stats.norm.expect(lambda x: abs(x)), 4)) # 0.7979
# 柯西分布:样本均值不收敛
rng = np.random.default_rng(0)
for n in [1_000, 100_000, 1_000_000]:
sample = stats.cauchy.rvs(size=n, random_state=rng)
print(f"n = {n},样本均值 = {sample.mean():.4f}")
# 数值上下跳动,不趋于稳定值,反映期望不存在2.3.2 条件期望
定义与作为随机变量
在已知事件
连续情形下写成对条件密度的积分
更常见的形式是给定另一个随机变量
全期望公式
全期望公式(law of total expectation),又称塔性质(tower property),把无条件期望写成条件期望的期望:
证明思路是把联合密度分层积分。连续情形下,
内层积分得到
塔性质有迭代形式。若
信息越多,条件期望离
条件期望作为最小均方误差预测器
条件期望在预测问题中有明确的最优性。用
证明思路与 1.5 节的最小二乘投影一致。把误差分解为
两项之间的关系为正交分解,交叉项为零来自
这一结论与 1.5 节的最小二乘投影是同一件事的两个层面。线性代数把任意向量投影到子空间上得到最优逼近,概率论把随机变量投影到由
2.3.3 方差与标准差
定义与计算技巧
方差(variance)度量随机变量围绕期望的离散程度,定义为偏离期望的平方的期望:
方差开平方得到标准差(standard deviation)
直接按定义计算方差需要先求期望再做平方的期望,展开平方后可以得到更便于计算的形式:
公式
方差的性质与线性变换
方差对常数平移不变,对常数缩放按平方缩放:
证明把
对两个随机变量,方差的加法需要协方差项:
当
条件方差与全方差公式
给定
这一恒等式称为全方差公式(law of total variance)。证明从条件方差的性质出发,把
公式的两项各有解释。第一项
import numpy as np
rng = np.random.default_rng(0)
n = 1_000_000
# Y 取 0..3,X | Y=y ~ N(y, 1)
y = rng.integers(0, 4, size=n)
x = rng.normal(loc=y, scale=1.0)
total = x.var()
between = y.var() # Var(E[X|Y]),理论值为 Var(Y)
within = np.mean([x[y == k].var() for k in range(4)]) # E[Var(X|Y)],理论值为 1
print(round(total, 4), round(between + within, 4))
# 4.25 4.25,两项相加等于总方差
print(round(between, 4), round(within, 4))
# 1.25 1.00,组间方差来自 Y 的取值差异,组内方差来自噪声2.3.4 协方差与相关系数
定义与性质
协方差(covariance)度量两个随机变量共同变化的程度,定义为
两个随机变量同向偏离各自的均值时乘积为正,反向偏离时乘积为负,协方差是这种同步性的平均。
协方差是双线性的:
相关系数及其局限
协方差有量纲,数值大小受单位影响,不便比较。把协方差按两个标准差归一,得到相关系数(correlation coefficient):
由柯西-施瓦茨不等式,
相关系数有两个限制需要记住。第一,它只度量线性关系。若
相关与因果无关
相关系数刻画的是数值上的线性同步,它不提供因果方向的信息。两个变量高度相关可能来自
2.3.5 矩、偏度与峰度
原点矩、中心矩与混合矩
随机变量的各阶期望统称为矩(moment)。
两个随机变量之间的
偏度与峰度
偏度(skewness)由三阶标准化中心矩定义:
偏度为正表示右尾较长,分布右侧拖出较长的尾部,收入、房价与服务器响应时间属于这一类;偏度为负表示左尾较长。对称分布的偏度为零,但偏度为零不保证对称,可能出现两侧尾部形态不同的情形。
峰度(kurtosis)由四阶标准化中心矩定义:
正态分布的峰度为
矩存在的层级关系
矩的存在有层级关系。若
这条层级关系解释了为什么有些分布有均值而无方差。
2.3.6 协方差矩阵与相关矩阵
定义与性质
对随机向量
矩阵第
协方差矩阵半正定。对任意非零向量
这一等式把二次型写成了线性组合的方差,方差非负保证二次型非负。当
相关矩阵(correlation matrix)是把协方差矩阵按标准差归一后的结果,其
多元情形下的全方差公式
把一维的全方差公式推广到向量情形,令
左边是
2.3.7 矩生成函数、特征函数与累积量
矩生成函数
矩生成函数(moment generating function, MGF)定义为
它在
矩生成函数对独立和的乘法性质很简洁。若
和函数的矩生成函数是各矩生成函数的乘积。这一性质使独立和的分布识别变得容易:若乘积的形式对应某个已知分布的矩生成函数,就得到和所服从的分布。二项分布、Gamma 分布的可加性都可以由此推出。
矩生成函数的限制是它可能不存在。
特征函数
特征函数(characteristic function)定义为
复数指数的模恒为
特征函数与分布一一对应,两个随机变量有相同的特征函数当且仅当分布相同,这一事实称为特征函数的唯一性定理,它使从特征函数反推分布成为可能。特征函数在原点处的导数(若存在)给出各阶矩,用法与矩生成函数相同。特征函数同样具有独立和的乘法性质:
累积量
对特征函数取对数并作泰勒展开,得到累积量(cumulant)的累积量生成函数:
系数
累积量在物理与统计中用于刻画分布的非高斯性。三阶累积量度量不对称,四阶累积量度量尾部,高阶累积量为零是高斯分布的特征。独立和的高阶累积量按项累加、不产生交叉项,这一性质使累积量在信号处理与高阶统计中比矩更便于处理。
用特征函数看中心极限定理
中心极限定理的证明轮廓可以用特征函数写出。设
把
极限
2.3.8 高阶矩与分布的刻画
矩问题
一个自然的问题是:若一个分布的所有矩
设
矩方法的适用范围
矩不唯一确定分布这一事实有实际含义。用样本矩去匹配理论分布的各阶矩(矩估计)在小样本下可能得到多个候选,或在尾部差异较大的分布族之间无法区分。矩方法可靠的前提是所考虑的分布族由有限阶矩唯一确定,例如正态分布由前两阶矩完全确定,Gamma 分布由前两阶矩确定形状与尺度参数。当分布族的尾部形态未知时,仅报告前几阶矩不足以排除形态相近但尾部不同的分布。
这一局限并不否定矩的价值。低阶矩在大多数场景下已经能概括分布的主要特征,偏度与峰度补充了形状信息。报告时应说明用到了哪些阶的矩,并在分布形态存疑时辅以分位数或直方图,避免把所有判断都建立在少数几个矩上。
2.3.9 信息型数字特征
互信息与条件互信息
线性相关系数只能捕捉线性依赖,非线性依赖需要用其他量。互信息(mutual information)度量两个随机变量之间的依赖强度,定义为
互信息为零当且仅当
条件互信息(conditional mutual information)
距离相关与最大信息系数
距离相关(distance correlation)是另一个可捕捉非线性依赖的指标。它基于样本点之间距离矩阵的变换,计算成对距离的协方差,构造出取值范围在
最大信息系数(maximal information coefficient, MIC)通过把数据划分成网格并在不同分辨率下计算互信息的最大值来度量依赖强度,取值落在
这三个量共同说明,相关系数只是依赖度量中的一个特例。当怀疑依赖可能是非线性时,加入互信息或距离相关作为补充,可以避免因相关系数接近零而错误地判定变量独立。
import numpy as np
from scipy import stats
rng = np.random.default_rng(5)
n = 400
# 非线性依赖:Y = X^2,X 关于 0 对称
x = rng.uniform(-1, 1, size=n)
y = x ** 2
# 皮尔逊相关系数接近 0
print("皮尔逊相关:", round(np.corrcoef(x, y)[0, 1], 4)) # 约 0.00
# 斯皮尔曼秩相关同样接近 0,单调性也不明显
print("斯皮尔曼相关:", round(stats.spearmanr(x, y).statistic, 4)) # 约 -0.00
def distance_correlation(a, b):
"""距离相关,取值范围 [0, 1]"""
a = np.asarray(a, dtype=float)[:, None]
b = np.asarray(b, dtype=float)[:, None]
A = np.abs(a - a.T)
B = np.abs(b - b.T)
A = A - A.mean(axis=0, keepdims=True) - A.mean(axis=1, keepdims=True) + A.mean()
B = B - B.mean(axis=0, keepdims=True) - B.mean(axis=1, keepdims=True) + B.mean()
dcov2 = (A * B).mean()
dvarx = (A * A).mean()
dvary = (B * B).mean()
return np.sqrt(dcov2) / (dvarx ** 0.25 * dvary ** 0.25)
print("距离相关:", round(distance_correlation(x, y), 4)) # 明显大于 0
# 矩生成函数的数值计算:N(0,1) 的 MGF 理论值为 exp(t^2/2)
for t in [0.5, 1.0]:
numeric = stats.norm.expect(lambda z, t=t: np.exp(t * z))
print(f"t = {t},数值 {numeric:.4f},理论 {np.exp(t ** 2 / 2):.4f}")
# t = 0.5,数值 1.1331,理论 1.1331
# t = 1.0,数值 1.6487,理论 1.6487皮尔逊相关与斯皮尔曼秩相关都接近零,而距离相关明显大于零,三者对比说明
2.3.10 本节小结
把分布压缩为可比较的数值
本节建立了一套把分布抽象为数值的工具。数学期望是概率加权的平均,具备线性性且不要求独立性,LOTUS 允许在不求变换分布的情况下计算函数的期望,期望的存在需要绝对收敛。条件期望
数字特征给出了一组参数,具体分布族则由这些参数刻画。二项分布、泊松分布、几何分布用一个或两个参数确定全部概率,正态分布、指数分布、Gamma 分布各有自己的参数组合方式。下一节讨论常见离散分布,说明它们的来源、参数含义、数字特征与相互联系,再在 2.5 节讨论连续分布族,把本节建立的期望、方差与矩的计算落到具体分布上。
练习题
第 1 题 概念推导
设
参考答案
记
两边平方后取期望:
逐项处理。第三项
第一项用塔性质:
第二项的交叉项对
再用塔性质,交叉项的无条件期望也为零。三项合并即得全方差公式。
第 2 题 计算推理
设
参考答案
由期望的线性性,
由方差的性质,
由协方差的双线性,
相关系数为
第 3 题 代码验证
用蒙特卡洛方法验证全方差公式。令
参考答案
import numpy as np
rng = np.random.default_rng(7)
n = 1_000_000
y = rng.integers(1, 4, size=n) # Y 均匀取 1, 2, 3
x = rng.normal(loc=y, scale=y) # X | Y=y ~ N(y, y^2)
total = x.var()
between = y.var() # Var(E[X|Y]),E[X|Y]=Y,理论值为 Var(Y)
within = np.mean([x[y == k].var() for k in (1, 2, 3)]) # E[Var(X|Y)] = E[Y^2]
print(round(total, 4), round(between + within, 4))
# 4.6667 4.6667,两项之和等于总方差
print(round(between, 4), round(within, 4))
# 0.6667 4.0000
# Var(Y) = 2/3 ≈ 0.6667;E[Y^2] = (1+4+9)/3 = 14/3 ≈ 4.6667数值结果与理论一致。这里
第 4 题 综合应用
某在线学习平台比较两种学习方案对成绩提升的效果,记录了参与者的成绩提升值
参考答案
相关系数
第一,相关方向不等于因果方向。基线成绩高与提升值大同时出现,可能因为提升值本身以基线为参照,分数越高可提升的空间结构不同,也可能出现向均值回归的现象:基线成绩高于平均水平的参与者往往包含正向的随机波动,后续测量回落,使提升值的变化与基线呈现系统性关联。这一现象会使相关为正,与学习方案的因果作用无关。
第二,存在混杂变量。学习时长、原有基础、参与动机等因素可能同时影响基线与提升值,从而在合并数据中产生相关。相关系数不揭示分层结构,可能掩盖辛普森悖论式的反转。
第三,线性关系未必成立。相关系数只度量线性同步,若真实关系为非线性或存在天花板效应,
补充分析方法包括:绘制基线成绩与提升值的散点图,观察关系形态与异常值;按学习时长或原有基础分层后重新计算相关系数或组间比较;拟合包含基线的回归模型,检验基线的系数是否显著;在有条件时使用随机化分组或因果推断方法(如倾向得分匹配)以区分相关与因果。
常见错误
错误 1 · 由
原因:独立确实蕴含
解决:把不相关与独立分开对待。需要独立性时从数据的生成机制论证或用条件分布检验,不单凭协方差为零下结论。怀疑非线性依赖时补充互信息或距离相关等度量。
错误 2 · 忽略期望存在的前提直接计算积分
原因:按对称性计算的
解决:计算前先检查绝对收敛,确认
错误 3 · 把相关系数当作依赖程度的通用度量
原因:相关系数只覆盖线性关系,且在非线性依赖下可能接近零。若据此判定两个变量独立,会漏掉函数型依赖。相关系数对异常值也敏感,个别点可以大幅改变数值。
解决:把相关系数作为线性关联的指标,配合散点图、秩相关、互信息或距离相关综合判断。报告相关系数时说明是否剔除异常值,必要时同时给出稳健的依赖度量。
错误 4 · 对任意随机变量都使用矩生成函数
原因:矩生成函数要求
解决:遇到矩生成函数不存在的情形改用特征函数。特征函数的模恒为