学随机过程的时候很多人把“平稳随机过程遍历性”当成一个必须背下来的数学定理考完试就忘了。但真正开始处理实测信号、做时间序列分析之后我才意识到这一章可能是全书最实用的一节。原因很朴素你做实验、采数据手里往往只有一条时间序列却要拿它去估计均值、方差、自相关、功率谱这些统计量。凭什么一条样本路径能代表整个随机过程背后的底气就是遍历性。这篇文章不打算复述教材的证明过程而是想把“平稳随机过程遍历性”这件事讲透包括它到底解决什么问题、均值遍历性和相关函数遍历性怎么判断、有哪些经典反例提醒你别乱用以及在实际数据处理中怎么把它用好、怎么避免被它坑。想彻底弄懂功率谱估计、维纳滤波、ARMA建模的人这一篇值得看完。1. 从一条样本路径说起遍历性到底在解决什么问题1.1 系综平均与时间平均的直观对比随机过程 X(t) 的统计特性教科书上是这么定义的均值 m_X E[X(t)]自相关函数 R_X(τ) E[X(tτ)X(t)]。这里的期望 E 是对“所有可能实现”求平均也就是同一个时刻 t 上把无穷多条样本函数的值全部拿出来做一个统计平均。这种平均方式叫系综平均。但现实很残酷。你做噪声测量、采集脑电信号、记录信道衰落一次实验只能得到一条时间波形。别说无穷多条样本连两条完全相同的实验条件都很难保证。这时候你只能退而求其次用一条样本在时间轴上取平均也就是时间平均。比如把一整段数据的算术平均值当作过程均值把 x(tτ)x(t) 在时间上的平均当作自相关函数的估计。系综平均需要无穷多条样本时间平均只需要一条样本。这两者什么时候能画等号这就是遍历性要回答的问题。如果一个平稳随机过程满足遍历性那么时间平均在均方意义下收敛于系综平均我们就能理直气壮地拿一条样本路径去估计整个过程的统计量。1.2 平稳性不够还要遍历性很多人在这一步会有一个疑问我已经假设过程是平稳的了统计特性不随时间变化难道还不能用时间平均代替系综平均吗答案是还真不一定。平稳性保证的是统计特性在时间平移下不变但一个平稳过程完全可能“困”在某种状态里出不来。最极端的例子就是 X(t) Y其中 Y 是一个随机变量比如以 50% 概率取 1、以 50% 概率取 -1。这个过程是严格平稳的因为 X(t) 的分布根本不随时间变。但你要是做一次实验采到的样本路径是一条恒等于 1 的直线时间平均算出来是 1再做一次实验又可能是一条恒等于 -1 的直线时间平均算出来是 -1。不管哪次实验时间平均都稳稳地停在某一边永远得不到真正的系综平均 0。这个例子说明平稳性只保证统计量“不随时间变”但没保证一条样本能“跑遍”所有可能状态。而遍历性的核心含义正是“各态历经”只要时间足够长一条样本路径就能经历这个随机过程几乎所有的状态从而让时间平均逼近系综平均。这也是“遍历性”也叫“各态历经性”的原因。2. 均值遍历性判断条件与推导思路2.1 定义与充要条件的直观理解遍历性通常从均值开始讨论。设 X(t) 是平稳过程均值为 m_X自相关函数为 R_X(τ)。定义时间平均[ \hat{m}T \frac{1}{2T}\int{-T}^{T} X(t),\mathrm{d}t ]如果当 T → ∞ 时\hat{m}_T 在均方意义下收敛到 m_X就称该过程具有均值遍历性。注意这里强调“均方收敛”意思是估计量的方差要趋于 0。单看期望不够因为一个估计量可以无偏但方差很大每次算出来的结果都飘得很远这种估计在实际中没有意义。均值遍历性的充要条件长这样[ \lim_{T\to\infty} \frac{1}{2T}\int_{-2T}^{2T} \left(1-\frac{|\tau|}{2T}\right) \left(R_X(\tau)-m_X^2\right),\mathrm{d}\tau 0 ]这个式子猛一看很吓人但拆开看就有感觉了。R_X(τ) - m_X^2 其实就是协方差函数 C_X(τ) E[(X(tτ)-m)(X(t)-m)]。它描述的是相隔 τ 的两个时刻取值之间的相关性。这个式子说的是只要协方差函数在 |τ| 增大时衰减得足够快那么它在一个随 T 增长的区间上做加权平均结果就会趋于 0时间平均估计量的方差也就趋于 0。换句话说判断一个平稳过程能否均值遍历核心就看它的相关性是否“健忘”。相隔很远的两个时刻如果还强相关那条样本路径就一直绕着某个值转没法脱离初始状态去经历其他状态时间平均自然不能代表全体的平均。2.2 均值遍历性定理的证明路径很多教材直接给出充要条件然后略过证明。但如果能自己推一遍对条件的理解会深很多。考虑 \hat{m}_T 与 m_X 的均方误差[ E\left[(\hat{m}T - m_X)^2\right] \frac{1}{4T^2} \int{-T}^{T}\int_{-T}^{T} E\left[(X(s)-m_X)(X(t)-m_X)\right],\mathrm{d}s,\mathrm{d}t ]这里面的被积函数正是协方差函数 C_X(s-t)。对双重积分做变量替换令 τ s - t积分区域从方形的 [-T,T]×[-T,T] 变成一个以 τ 为变量的区间权重因子就是 \left(1-\frac{|\tau|}{2T}\right)。整理之后就得到了上面那个充要条件。从这个推导过程你能看出几件事。第一均值遍历性等价于时间平均估计量的均方误差趋于 0这是一个估计理论问题而不是简单的“等于”关系。第二协方差函数在积分中的权重是三角形的距离越远的滞后量权重越小因为时间有限的样本里能配出很大滞后量的样本对本来就少。第三如果 C_X(τ) 绝对可积也就是 \int_0^\infty |C_X(\tau)|,\mathrm{d}\tau \infty那么上述充要条件一定成立这是一个非常好用的充分条件。2.3 一个常见充分条件实际工程中很少有人真去验证充要条件里那个积分是否趋于 0更多是用充分条件。最常见的充分条件有两个\int_0^\infty |C_X(\tau)|,\mathrm{d}\tau \infty即协方差函数绝对可积\lim_{\tau\to\infty} C_X(\tau) 0即协方差函数随滞后时间趋向于 0。这两个条件的含义是一致的过程要把自己的“历史”忘掉。注意协方差趋于 0 不是要求它单调递减允许有振荡但振荡的包络必须衰减。比如指数衰减的协方差 C_X(τ) σ² e^{-α|τ|}这个条件轻松满足但如果协方差函数是常数比如前面那个 X(t)Y 的例子C_X(τ)Var(Y)它就既不绝对可积也不趋于 0于是时间平均和系综平均对不上。值得注意的是如果 X(t) 是一个叠加了随机相位的周期信号比如 X(t)A\cos(\omega t\Theta)其中 \Theta 是 [0,2π) 上的均匀分布那么它的协方差函数是余弦函数不趋于 0 也不绝对可积。但均值遍历性充要条件里那个积分恰好会趋于 0所以它仍然满足均值遍历。这说明“协方差趋于 0”是充分条件而非必要条件判断的时候要小心别拿充分条件当必要条件用。3. 两个经典反例用直觉理解“不能遍历”的场景3.1 反例一随机常数过程 X(t)Y顺着前面说的随机常数过程 X(t)Y 是最简单也最直观的不遍历例子。Y 是一个随机变量可能是离散取值的也可能是连续的。比如 Y 服从标准正态分布那么一次实验就是一条恒等于某个随机数的水平线。这个过程的系综均值是 E[X(t)]E[Y]。但对某一次具体实验来说时间平均等于这次实验抽到的 y 值。如果抽到 0.5整条样本路径的时间平均就是 0.5如果抽到 -1.2时间平均就是 -1.2。随着实验次数增多每个时间平均估计值都收敛到各自不同的常数而不是收敛到同一个系综均值。这就是“不遍历”的典型特征估计量的方差不会随数据长度增加而消失。把这个例子记在心里特别有用。因为很多看似复杂的非遍历过程本质上都带有“随机常数成分”。例如混在信号里的直流漂移如果每次实验的直流偏置是随机的并且这个偏置在一整段数据里保持不变它就会毁掉均值遍历性。这也是为什么在时间序列处理里第一步往往是“去趋势”和“去均值”——先把这类随机常数成分的影响剔除再谈统计估计。3.2 反例二确定性周期成分困住的样本路径比随机常数稍微隐蔽一点的非遍历过程是带有随机幅度或随机相位的周期分量。考虑 X(t)R\cos(\omega t)其中 R 是以概率 1/2 取 1、以概率 1/2 取 -1 的随机变量。看起来这个过程的系综均值是 0因为 E[R]0。但单条样本路径呢如果抽到 R1测得的是一条余弦波时间平均在长时间下是 0如果抽到 R-1也是一条余弦波时间平均在长时间下还是 0。所以均值遍历性是成立的。问题出在自相关上。系综自相关是 E[X(tτ)X(t)] E[R²]\cos(\omega t\omega\tau)\cos(\omega t) \cos(\omega\tau)。但单条样本的时间平均自相关算出来是 R²\cos(\omega\tau) \cos(\omega\tau)这一次看起来巧了居然也是对的。那如果把随机相位也加进去比如 X(t)R\cos(\omega t\Theta)其中 \Theta 均匀分布在 [0,2π)R 仍然以等概率取 ±1。系综自相关为 E[R²]E[\cos(\omega t\omega\tau\Theta)\cos(\omega t\Theta)] \frac12\cos(\omega\tau)而单条样本的时间平均自相关为 R² \cdot \frac12\cos(\omega\tau) \frac12\cos(\omega\tau)还是巧合地对上了。再看一个更本质的不遍历周期例子。设 X(t)\cos(\omega t\Theta)但 \Theta 只在 {0, π} 两个值里等概率取。这样一来每条样本路径都是严格周期函数并且长期保持同一个相位。系综均值 \frac{1}{2}\cos(\omega t)\frac{1}{2}\cos(\omega t\pi)0时间平均也是 0均值没问题但系综自相关和时间平均自相关就会出现分歧。关键在于 \Theta 只取两个离散值而不是连续分布有限的样本路径无法遍历相位空间里所有的可能性。这些例子告诉我们周期分量本身不等于非遍历随机相位有没有把整个相位空间铺满才是关键。3.3 均值遍历但相关函数不遍历的过程更有意思的是一类“夹生”过程均值遍历成立但相关函数遍历不成立。这常常被教材放在习题里但在工程上并不罕见。考虑 X(t)Y e^{j\omega_0 t}其中 Y 是零均值、方差为 1 的复随机变量。系综均值 E[X(t)]E[Y]e^{j\omega_0 t}0时间平均 \frac{1}{2T}\int_{-T}^{T} Y e^{j\omega_0 t},\mathrm{d}t 也会随着 T 增大趋于 0所以均值遍历成立。但自相关呢系综自相关 R_X(τ)E[|Y|²]e^{j\omega_0 τ}e^{j\omega_0 τ}。而一条样本的时间平均自相关算出来是 |Y|² e^{j\omega_0 τ}。除非 |Y|² 恒等于 1否则这两个值永远对不上而 |Y|²1 意味着 Y 几乎必然落在单位圆上等于没有随机性。这个例子最大的启发是均值和二阶矩的遍历性要分开验证。你测出一条样本的均值很稳定不代表它的自相关估计也稳定。很多实测信号的均值收敛得很好但功率谱估计总是飘很可能就是相关函数遍历性达不到。4. 相关函数遍历性从均值到二阶矩的推广4.1 相关函数为什么也要“遍历”工程上我们往往更关心二阶统计量。功率谱密度是自相关函数的傅里叶变换滤波器的输出信噪比、维纳滤波器的设计都要用到自相关。所以光有均值遍历还不够还得讨论自相关函数能不能用时间平均来估计。相关函数遍历性的定义和均值遍历性几乎一模一样。令[ \hat{R}T(\tau) \frac{1}{2T}\int{-T}^{T} X(t\tau)X(t),\mathrm{d}t ]如果当 T → ∞ 时\hat{R}_T(\tau) 在均方意义下收敛到 R_X(\tau)就称该过程具有相关函数遍历性。注意这里固定的是滞后时间 τ然后让积分区间 T 增大。也就是说我们要用一整条样本路径在不同时刻的乘积做平均来估计任意滞后 τ 处的自相关。这个概念比均值遍历更进一步因为它要求过程的“二阶矩”也各态历经。4.2 自相关估计的实际操作实际做离散时间数据处理时自相关估计长这样[ \hat{R}[k] \frac{1}{N}\sum_{n1}^{N-k} x[nk]x[n] ]这里 N 是样本点数k 是滞后点数。公式里除以 N 还是除以 N-k其实是个经典问题。除以 N 得到的估计是有偏的但估计值的方差通常更小除以 N-k 得到的是无偏估计可是当 k 接近 N 的时候参与平均的项很少方差会爆炸。工程上常用的折中是除以 N并且只取 k 远小于 N 的那一段使用一般取 k 不超过 N/4 甚至 N/10。相关函数遍历性在实际操作中的意义是当 N 足够大时\hat{R}[k] 会接近理论值 R_X(kΔt)。如果你只有一条样本路径并且确信过程满足相关函数遍历性那你就可以放心地拿 \hat{R}[k] 当作真实自相关的近似再去做维纳滤波、Yule-Walker 方程求解等等。如果不满足那所有基于自相关估计的参数都会带着系统性偏差而且这个偏差不会随数据量增大而消失。4.3 相关函数遍历性的工程判断严格验证相关函数遍历性在实操中几乎是不可能的因为你要算的“方差”涉及过程的四阶矩一般没有解析表达式。工程上更多是凭经验和模型假设来判断。对于零均值的平稳高斯过程相关函数遍历性的充分条件可以从四阶矩推出来最终落到协方差函数的绝对可积性上。高斯过程的好处是高阶矩可以由二阶矩完全决定所以只要自相关函数衰减得足够快基本可以认为相关函数遍历性成立。对于非高斯过程判断就要谨慎得多。经验法则是把数据从中间劈成两半分别估计自相关函数如果两条自相关曲线形态接近、差异不超过可接受范围就认为相关函数遍历性的工程假设基本成立。这个方法很粗糙但比盲目假设要靠谱不少。后面第 6 部分还会详细说这个操作。5. 遍历性在信号处理与时间序列中的工程意义5.1 功率谱估计与分段平均功率谱估计是遍历性最典型的应用场景。Wiener-Khinchin 定理说平稳过程的功率谱是自相关函数的傅里叶变换所以理论上你只要知道 R_X(τ)就能算 S_X(ω)。但实际问题里 R_X(τ) 是未知的你只有一段有限长的数据。怎么办先用样本自相关估计 R_X(τ)再做傅里叶变换这就是经典周期图法的思路。周期图法能成立本质上依赖两个假设第一过程是平稳的第二过程满足遍历性可以用时间平均替代系综平均。但周期图法有一个著名的毛病估计量的方差大而且不随数据长度 N 增加而有效减小。原因在于自相关估计在不同滞后处高度相关导致功率谱估计值剧烈抖动。于是工程上发展出了 Bartlett 法和 Welch 法把长数据切成若干段每段分别做周期图再平均用“分段平均”来降低方差。这种操作实际上是把遍历性的思想向前推了一步既然一条长样本的经历可以近似整个系综那我干脆把长样本切成若干段把每一段当作系综里的一个独立样本再对这些“准样本”做平均。Welch 法还会在每段数据上加窗函数汉宁窗、汉明窗等目的是降低频谱泄漏同时允许分段之间有重叠进一步提高平均段数。我自己做信号处理时比较顺手的是 50% 重叠加汉宁窗段数越多方差压得越低但频率分辨率也会变差需要在两者之间找平衡。这套做法能在实际中广泛使用底气还是那两条平稳性和遍历性。5.2 单次实验、短数据的底气来源做生物医学信号处理的人对“单次实验”一定不陌生。测一段心电信号、一段脑电信号你不可能让患者重复做一百次实验来取系综平均。这时候如果不假设遍历性整个分析基本做不下去。但遍历性假设不能白用你得想办法验证。一个常见做法是数据分段一致性检验把整段数据分成数段分别估计均值、方差、自相关看各段之间差别大不大。如果差别很大说明这段数据里可能存在非平稳趋势或强确定性成分遍历性假设要打问号需要进一步处理。通信里的 Monte Carlo 仿真也是这个逻辑。理论上误码率需要对所有噪声实现取平均但实际仿真里你只生成一条足够长的随机数序列跑一遍系统统计错误比特数占总比特数的比例。这就是用时间平均替代系综平均背后假设噪声序列是遍历的。我见过不少刚入门的人担心“只跑一次仿真不准”非要循环几百次取平均。其实只要单次仿真时间足够长并且噪声源产生的是均匀覆盖状态空间的伪随机序列单次长仿真和多次短仿真在统计意义上是近似的。当然循环多次可以顺便看方差但用一两次长仿真其实已经能拿到很稳的估计。5.3 遍历性与经典参数估计的联系时间序列分析里的 ARMA 模型参数估计也是遍历性在背后撑腰。无论是 Yule-Walker 方程还是最大似然估计第一步几乎都是先估计自协方差函数然后代入模型方程求解参数。如果数据满足遍历性样本自协方差就会以概率收敛到理论自协方差参数估计才有一致性保证。更进一步遍历性还和“一致性”这个概念紧密相关。统计里说的估计一致性是指样本量增大时估计值收敛到真值。遍历性相当于把“样本量增大”换成了“观测时间变长”。很多教材在讲遍历性时都会强调它是随机过程情境下的“大数定律”。这条理解线其实特别重要。经典大数定律要求样本独立同分布而随机过程里样本点之间是相关的你不能直接套用大数定律。遍历性定理做的正是把“时间平均收敛到系综平均”这件事在相关样本的条件下重新证明了一遍。我也建议把大数定律和遍历性放在一起理解大数定律解决的是“我有很多个独立样本时怎么取平均”遍历性解决的是“我只有一条长样本时怎么取平均”。两者精神一致只是样本形态不同。6. 实操中容易踩坑的地方6.1 有限样本下的“伪遍历性”遍历性是一个渐进概念理论上要求观测时间趋向无穷。但任何实测数据的长度都是有限的这就带来一个很隐蔽的坑有限时间尺度内的表现可能让一个非遍历过程“看起来”遍历也可能让一个遍历过程“看起来”非遍历。举一个我实际遇到的例子。采集一段带随机直流偏置的信号如果这个直流偏置在整个采集过程中恰好不跳变你拿这段数据去估计均值得到的值非常稳定自相关也收敛得很好所有结果都像是一个遍历过程。但你重复几次实验每次得到的均值都不同这时候你才意识到其中藏着一个随机常数成分。这种问题用分段检验基本查不出来因为偏置在段间没有变化。解决思路是不要只依赖单次数据尽量在不同时间、不同批次重复实验从多组实验之间的一致性来判断是否存在随机常数成分。反过来一个真正遍历的过程如果你只看很短的一小段数据时间平均可能偏离系综平均很远。比如白噪声是遍历性很好的过程但你只取 10 个点算均值肯定和 0 差一大截。这不是过程不遍历而是样本量不够。所以判断遍历性时数据长度至少要覆盖过程相关时间的几十倍以上才有点说服力。6.2 判断遍历性的经验法则严格证明遍历性需要知道过程的分布或自相关函数这在实测中基本不可行。我自己的实务流程通常分三步。第一步做平稳性预检。把数据分段看各段的均值和方差是否基本稳定。如果均值有明显的线性或分段趋势先用去趋势方法处理再继续。遍历性讨论的前提本来就是平稳过程不平稳的数据谈不上遍历性。第二步用分段自相关做交叉验证。把数据分成 A、B 两段分别估计自相关函数画在同一条坐标轴上。如果两条曲线整体贴合说明时间平均的估计基本稳定如果分叉明显说明这段数据的经验分布随着时间在变化遍历性假设不可靠。第三步检查自相关的衰减。如果样本自相关在滞后时间增大时迟迟不衰减到 0比如周期信号的形态始终存在就要警惕过程可能含有强确定性周期分量相关函数遍历性可能不成立。这种情况的做法是把已知周期成分用谐波拟合或者梳状滤波器去掉对残差再做后续的统计分析。这三个步骤不一定能严格证明遍历性但至少能筛掉一大批明显违反遍历性假设的情况。我始终认为工程上对遍历性的态度应该是“用假设但保持怀疑并且用数据验证假设”。6.3 自相关和功率谱估计的几个具体建议结合遍历性几个和自相关、功率谱估计直接相关的操作细节值得单独说一下。关于自相关的滞后范围我建议最多取到数据长度的 1/10。取太大会让估计结果出现长尾巴的振荡误以为存在低频相关性其实只是样本太少导致的伪相关。关于分段平均Welch 法里如果段数太少方差降不下来段数太多每段变短频率分辨率下降。一个经验起步值是总数据长度 N段长 L ≈ N/8 到 N/4重叠率 50%这个区间通常能得到比较平滑又不太失真的谱估计。关于去趋势做自相关之前一定要先把均值去掉否则算出来的 R[0] 会严重偏大而且所有滞后处的自相关都会被抬高最终污染的功率谱会在零频处冒出一个尖峰。最后还有一个容易忽略的点遍历性讨论的是随机过程本身的性质但实际采集到的数据往往混入了观测噪声。观测噪声通常是独立的它的存在会让协方差函数在 τ0 处多出一个尖峰但不会破坏长滞后处的相关结构。在做遍历性判断时如果发现自相关在零滞后附近有异常大的峰值而其他滞后处都很小多半是观测噪声导致的不用太担心但如果自相关在所有滞后处都不衰减就要开始怀疑是不是有非平稳趋势或者确定性成分了。我自己刚接触遍历性那阵子最大的误区就是觉得“平稳过程一定遍历”。后来被 X(t)Y 这个反例狠狠敲了一下才明白这两个概念是独立的平稳性解决统计量“随时间怎么变”的问题遍历性解决“一条样本能不能代表整体”的问题。实际做数据分析时遍历性更像一个“假设加验证”的过程而不是一个可以一劳永逸证明的结论。把这一章真正吃透以后再面对“我只有一段数据怎么敢估计这个随机过程的统计特征”这个问题时你就能回答得既自信又谨慎了。