随机过程与平稳性:从核心概念到工程实践
发布时间:2026/9/18 16:38:53来源:尧图网络
随机过程这四个字大学时候第一次在课表里看到我还以为是门讲“怎么随机”的文科课。结果上了两节满黑板都是积分和概率密度才意识到这是个硬骨头。很多同学被随机过程劝退不是因为概念本身有多难而是教材一上来就是严平稳、宽平稳、各态历经性这些名词没有先回答一个最朴素的问题这东西到底在干嘛我学了能用在哪儿。这篇博文我想用做信号处理、做通信系统的视角把随机过程的基本概念和平稳随机过程讲透。不是抄教材而是讲人话讲清楚为什么要有随机过程这个概念平稳性到底在说什么以及遇到实际问题时怎么判断、怎么用。无论你是通信、控制、金融还是数据分析方向的这篇都能给你搭出一个能直接用的框架。1. 随机过程到底在讲什么1.1 从随机变量到随机过程多了一个“时间轴”要理解随机过程得先回到随机变量。随机变量很简单就是一次试验结果对应一个数比如掷骰子结果可能是1到6每次取值不确定但分布是确定的。可现实里的问题往往不止“一次试验”。我测一个通信接收机的底噪今天测是一条波形明天测是另一条波形同一台设备、同样的环境每次记录下来的噪声信号都不一样。这时候如果只用一个随机变量去描述它是远远不够的因为噪声的值在每一个时刻都在变而且相邻时刻的值之间还有关联。随机过程的定义其实就是在随机变量的基础上加了一个时间轴。严格说随机过程是一族依赖于时间参数t的随机变量X(t)。但这里有一个关键点你观测一次得到的是一条具体的函数曲线这条曲线叫样本函数也叫样本轨道所有可能出现的样本函数的集合才是这个随机过程本身。把这个逻辑想清楚后面很多概念就顺了。我用一个生活化的例子帮你固化这个印象。假设你站在路边数车流量每天在同一时间段记录“每分钟通过的车辆数”。你记录了一个月得到30条曲线。这30条曲线就是30个样本函数而背后那个“生成这些曲线的随机机制”就是随机过程。你不可能预知明天会得到哪条曲线但你知道整体的统计规律。1.2 两个维度的解读固定t和固定样本随机过程这个抽象概念拆开看就清晰了。它其实是一张二维的“表”一个维度是时间t另一个维度是样本空间ω。固定时间t比如固定在t t0那么X(t0)就是一个普通随机变量有它自己的概率分布。固定样本ω也就是固定某一次观测X(t, ω0)就是一条确定的时间函数也就是样本轨道。如果把时间和样本都固定那得到的就是一个确定的数一次具体的观测值。实操里我们通常用{X(t), t ∈ T}这样的记号来表示随机过程T是时间参数的集合。时间参数T可以是连续的比如[0, ∞)这种情况对应的过程叫连续参数随机过程T也可以是离散的比如{0, 1, 2, ...}那就是离散参数随机过程我们常说的“时间序列”本质上就是离散参数的随机过程。为什么这个区分很重要因为连续时间和离散时间在数学处理上难度完全不一样。连续时间过程需要引入测度论和积分理论工程上我们经常通过采样把连续过程离散化再分析。离散时间过程相对友好很多性质可以直接类比随机变量序列来处理。1.3 随机过程为什么无处不在你可能会问我搞嵌入式、搞软件、搞数据分析不研究数学也需要懂随机过程吗说实话只要你的数据是带时间戳的、并且带有随机性你就在和随机过程打交道。举几个实际场景。通信系统里接收信号的噪声是随机过程信道的衰落特性是随机过程多径效应叠加出来的干扰也是随机过程。控制系统里传感器测量噪声、过程扰动都得用随机过程建模。金融领域股票价格、利率波动、汇率变化标准做法就是用随机过程来拟合经典的几何布朗运动就是随机过程的一种。还有语音识别、图像去噪、天气预报、交通流量预测这些领域的核心算法底层几乎都建立在随机过程的模型之上。换句话说随机过程是描述“带时间维度的不确定性”的标准语言。你学不学它那些随机现象都在那里但如果不懂这套语言你就没法对它们做定量分析也没法和同行在同一个频道上讨论问题。2. 平稳性随机过程里最实用的假设2.1 直觉理解统计规律不随时间“漂移”前面铺垫这么多就是为了引出平稳性。平稳随机过程在所有随机过程里占据核心地位因为自然界里大量现象至少在一段时间内背后的统计规律是稳定的。什么叫统计规律稳定我用打靶来解释。假设你去靶场打靶枪的准星固定打了很多发子弹弹着点散布在靶心周围散布的范围和密度不会因为你打了第10发还是第100发而改变。这时候弹着点的分布就是“平稳”的。反过来如果打几发之后你调了准星弹着点整体往右偏了那统计规律显然变了这个过程就不平稳。换成随机过程的语言平稳性说的就是无论你把观测窗口放到时间轴的哪个位置你看到的统计特性是一样的。这个过程没有“趋势”没有“季节”它的概率规律不会随时间平移而改变。这个假设之所以重要是因为它让我们可以用一段历史数据去推测未来。如果统计规律一直在变基于历史数据建模就没有任何意义了。所以平稳性几乎是所有时间序列分析、信号处理方法的出发点。2.2 严平稳与宽平稳一个严格一个实用平稳性有强有弱教材里最常见的是两个版本严平稳和宽平稳也叫弱平稳。严平稳要求非常苛刻对于任意的时间偏移τX(t1), X(t2), ..., X(tn)的联合分布要和X(t1τ), X(t2τ), ..., X(tnτ)的联合分布完全相同而且这个条件要对任意正整数n都成立。换句话说过程在任何有限时间维度上的概率分布都不随整体时间平移而改变。这个条件在理论上很漂亮但在工程上几乎没法验证因为你不可能观测到所有有限维分布。宽平稳就务实多了它只约束一阶矩和二阶矩就两条均值是常数E[X(t)] μ不随时间变化。自相关函数只依赖于时间差τ不依赖于具体时刻t即E[X(t)X(tτ)] R(τ)。第二个条件是宽平稳的核心。它的意思是两个相隔τ的时刻之间的统计关联强度只由间隔τ决定不看你从哪个时间点开始数。你今天测的相隔1秒的关联和明天测的相隔1秒的关联应该是一样的。宽平稳之所以在工程界广泛使用是因为它的两个条件都只需要样本数据的均值和相关函数就能近似检验而且很多理论推导只需要这两条就够。我在实际项目里几乎默认“平稳”指的就是宽平稳做分析之前也主要校验这两个条件。2.3 严平稳与宽平稳的关系别把两者搞混严平稳和宽平稳之间有一条从属关系如果过程是严平稳的且均值和方差都存在二阶矩有限那么它一定是宽平稳的。因为所有有限维分布平移不变自然包含了均值不变和自相关只依赖于时间差。但反过来宽平稳完全推不出严平稳。一个宽平稳过程它的高阶统计特性可能随时间变化只是你只看一阶二阶的时候看不出来。这里有个特例特别值得注意正态过程高斯过程中严平稳和宽平稳是等价的。因为正态分布完全由均值和协方差矩阵决定如果一阶矩和二阶矩满足平移不变那么任意有限维联合分布也一定是平移不变的。所以工程上我们常说“高斯过程只要宽平稳就自动是严平稳的”这句话背后的逻辑就是前面这个关系。还有一个容易踩坑的点有些资料会说“宽平稳过程不一定是严平稳”这句话本身没错但不少人反过来理解成“严平稳一定意味着宽平稳”然后就误以为严平稳的过程均值一定存在、相关函数一定有限。实际上严平稳只要求分布平移不变如果分布的均值不存在比如柯西分布那宽平稳的条件根本无从谈起。所以严谨的说法是二阶矩存在的严平稳过程才是宽平稳的。3. 宽平稳随机过程的核心量相关函数与功率谱3.1 自相关函数随机过程自己的“记忆”要说清楚宽平稳过程的行为离不开自相关函数。自相关函数R(τ) E[X(t)X(tτ)]描述的是过程相隔τ时刻的两个状态之间的线性相关程度。通俗点说它度量了这个随机过程有多大的“记忆”——20秒前的值对现在的影响还有多少。自相关函数有几个基本性质做工程分析时需要刻在脑子里第一R(0) E[X²(t)]这就是过程的均方值也就是信号的平均功率。第二R(τ)是偶函数R(τ) R(-τ)这对离散时间的自相关序列r[k]也成立。第三|R(τ)| ≤ R(0)也就是说自相关函数在原点的值最大这符合直觉和自身在同一时刻的状态相关性最强离得越远相关性通常越弱。举一个具体的例子。你有一个平稳随机过程它代表某条信道里的噪声。你算出它的自相关函数在τ 0处是1在τ 0.1秒处是0.3在τ 0.5秒处是0.01。这说明什么说明这个噪声在0.1秒尺度上还有一定的记忆但到了0.5秒前后状态基本就不相关了。那你在设计接收机时就可以知道对这种噪声你采样间隔超过0.5秒后采到的两个样本近似独立可以做分集合并来提升性能。3.2 功率谱密度从频率角度看平稳过程自相关函数是在时域描述过程但工程上很多问题在频域更好处理。对一个平稳随机过程它的功率谱密度S(f)和自相关函数R(τ)构成一对傅里叶变换对这就是著名的维纳辛钦定理。这条定理的工程意义再怎么强调都不过分。它告诉我们一个随机过程的“频率成分”不需要多次采样做傅里叶变换来估计只需要把自相关函数做傅里叶变换就能得到。反过来知道功率谱也能反推出自相关函数。功率谱密度直观上可以理解为把随机过程的平均功率按照频率来分配。S(f)在某一个频率附近的取值大说明这个随机过程在该频段有较强的成分。白噪声这个名字就来自它的功率谱——在所有频率上取值是常数类比于白光包含所有频率的颜色。白噪声的自相关函数是冲激函数也就是说任意两个不同时刻的值都不相关。但实际操作中绝对理想的白噪声是不存在的。我们常说的“带限白噪声”是指在某个频率范围内功率谱平坦超过这个范围功率谱快速衰减。在做系统仿真时我通常用它来近似宽带噪声只要带宽比系统带宽宽得多就可以当作白噪声处理。3.3 几个你一定会遇到的平稳过程模型理论说多了容易飘回到具体模型。实际工程和数据分析里有几类平稳随机过程出镜率极高。第一类是白噪声序列。离散时间白噪声ε[n]满足均值为零、方差为σ²且不同时刻之间的自相关为零即r[k] σ²δ[k]。它是所有随机信号建模的基本积木就像数值计算里的“单位冲激”一样。第二类是AR(1)过程一阶自回归过程X[n] aX[n-1] ε[n]其中|a| 1ε[n]是白噪声。它的自相关函数是r[k] σ²a^|k| / (1 - a²)呈指数衰减。什么意思呢它的记忆长度由系数a控制a越接近1衰减越慢过程越“平滑”低频成分越强a接近0过程更像白噪声。这类模型在语音建模、信道估计、经济时间序列里满地都是。第三类是正弦信号叠加随机相位。比如X(t) A·cos(2πft Φ)其中Φ在[0, 2π)上均匀分布。这个看着像确定信号吧但因为相位是随机的它实际上是一个平稳随机过程。它的自相关函数是余弦函数功率谱是位于±f处的两条谱线。这个例子提醒我们平稳随机过程不见得长得像噪声它也可能是带有随机相位的“周期”信号。4. 实操笔记怎么判断一个过程是否平稳4.1 先靠物理直觉做判断很多朋友拿到数据第一件事就是上代码算平稳性我觉得顺序反了。先动脑子想想这个数据的生成机制里有没有让统计规律随时间变化的因素。如果你在测的是一个恒温实验室里的电子噪声设备没老化、温度没变化那大概率是平稳的。如果你是分析一只股票从上市到现在这几年的价格那基本可以肯定不是平稳的因为公司的基本面在变、市场环境在变价格的均值和波动率都在漂移。物理直觉这一步看似“不严谨”但它能帮你省下大量无效计算。我见过有人对着带明显指数趋势的数据跑各种平稳性检验跑半天结果当然是不平稳其实画个图一眼就看出来了。所以流程应该是先画图看时域波形有没有明显趋势、有没有方差随时间变化的“喇叭口”有的话就别急着套平稳模型。4.2 用数理方法做验证光靠眼睛不够得用数字说话。工程上最常用的两类判断手段一是直接检验统计量二是单位根检验。直接检验统计量的思路很朴素把数据切成几段分别计算每段的均值和方差看看这些数值是不是在一个合理的范围内波动。如果某一段的均值和另一段差了好几个量级那就不平稳。这种办法简单粗暴但在很多工程问题里完全够用。单位根检验是时间序列分析的标准做法ADF检验增强迪基富勒检验用得非常普遍。它的零假设是序列存在单位根也就是非平稳。如果你算出来的统计量小于临界值p值小于显著性水平就拒绝原假设认为序列是平稳的。做ADF检验时需要注意滞后阶数的选择会影响结果通常用AIC准则自动选不要自己瞎定一个。这里补充一点ADF检验能识别的是“趋势平稳”以外的非平稳类型。如果序列是趋势平稳的你直接做ADF可能也会拒绝平稳这时候得先做差分或者去趋势再检验。换句话说平稳性检验不是万能的理解每种检验的局限性和适用条件比记住检验公式更重要。4.3 用Python做一个简单验证空谈理论没用我直接给你一段可以跑的代码用Python判断一组数据是否平稳。这里用了statsmodels库里的ADF检验顺便算了一下分段均值。import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.stattools import adfuller # 生成一段平稳数据AR(1) 过程a0.5 np.random.seed(42) n 1000 epsilon np.random.normal(0, 1, n) x_stable np.zeros(n) for i in range(1, n): x_stable[i] 0.5 * x_stable[i-1] epsilon[i] # 生成一段非平稳数据随机游走 x_walk np.cumsum(epsilon) # 分段统计均值 def segment_mean(x, segs5): seg_len len(x) // segs return [np.mean(x[i*seg_len:(i1)*seg_len]) for i in range(segs)] print(AR(1)分段均值:, segment_mean(x_stable)) print(随机游走分段均值:, segment_mean(x_walk)) # ADF检验 def check_stationary(x, name): stat, pval, _, _, _, _ adfuller(x) print(f{name}: ADF统计量{stat:.3f}, p值{pval:.3f}, f{平稳 if pval 0.05 else 非平稳}) check_stationary(x_stable, AR(1)) check_stationary(x_walk, 随机游走)跑出来的结果AR(1)那组数据分段均值通常会在0附近小幅波动ADF的p值小于0.05判断为平稳随机游走那组分段均值会逐渐漂移ADF的p值远大于0.05判断为非平稳。代码本身不复杂但建议你自己动手跑一遍感受一下“平稳”和“非平稳”在数据上到底长什么样。只看书不看数据永远不会有手感。5. 常见误区与避坑经验5.1 误区一把“平稳”理解成“不变”这是我见过最多的误解。很多人一听说某随机过程是平稳的就觉得这个过程的取值应该在一个固定值附近波动、波动幅度也不变。这个理解大体方向对但过于绝对化。平稳说的是统计特性不变不是样本值不变。一个平稳过程完全可以出现很大的瞬时值甚至短期内看起来像有趋势只要均值和自相关函数不随时间漂移就行。反过来一个看起来波动不大的信号如果它的方差在缓慢变大那它也不是平稳的。判断平稳性永远看的是统计规律不是看某一帧的波形。5.2 误区二忽略遍历性直接用单条样本估计统计量这是工程实践里一个隐藏的大坑。前面说过随机过程是样本函数的集合理论上求均值、求自相关需要对整个集合做平均。但实际中你往往只有一条观测数据怎么办这时你需要用到遍历性假设。遍历性说的是对一条足够长的样本函数做时间平均结果可以代替对随机过程求集合平均。这个性质在工程上几乎是默认成立的但你必须知道它是个假设不是对所有过程都成立。最典型的反例就是X(t) AA是随机变量这个过程是平稳的但每条样本都是常数。如果你只有一条样本时间平均得到的就是那一个常数完全没法估计出随机变量A的均值。所以实操中我会分三步走先根据物理背景判断能不能假设遍历性能假设再用时间平均去估计均值和相关函数不能确定就考虑多采集几条样本做集合平均。很多人不管三七二十一拿到一条数据就算自相关结果在非遍历过程上得到完全错误的值这就是踩了遍历性的坑。5.3 误区三对非平稳数据强行套用平稳模型明明数据有趋势却非要用平稳模型去拟合结果就是模型残差里全是未建模的结构参数估计失真预测效果一塌糊涂。这种情况在初学者做时间序列预测时特别常见。正确做法是先做平稳化处理。最常见的办法是差分也就是用ΔX[n] X[n] - X[n-1]替代原始序列。随机游走做一阶差分后就变成白噪声了这就是差分消除趋势的典型例子。另一个办法是去趋势项对确定性趋势做线性或者多项式回归把趋势减掉以后再分析残差。季节性强的数据还可以做季节差分或STL分解。处理完以后再检验平稳性合格了再进入后续建模。5.4 实操中的几个小经验最后分享几个我自己的操作习惯算是踩过坑后的总结。第一绘制时间序列图时一定把纵轴范围固定住分多段画在一起对比。手动调整坐标轴范围会掩盖方差变化让你误判平稳性。第二估计自相关函数时延迟τ不要取到样本长度的一半以上。延迟太大参与平均的样本对太少估计值方差急剧增大尾巴上会出现一堆虚假的相关峰。第三做ADF检验时如果p值在临界值附近比如0.04到0.06不要急着下结论。换一种检验方法或者对数据做一次差分再检验对比结果。多个证据指向同一个结论判断才靠谱。第四滤波会改变信号的统计特性。你在做平稳性分析之前如果做过平滑滤波注意滤波后的序列方差会被压缩自相关结构会被人为拉长这可能导致你把非平稳信号误判成平稳。分析之前确认数据是原始数据还是处理过的数据这一点很关键。随机过程这门课说到底是一种看世界的方式。它教你看待不确定性的眼光不再局限于孤立的一次试验而是延伸到了时间维度上去理解那些随时间演化的随机现象背后的统计规律。平稳随机过程作为其中最核心的一块基石不是因为现实世界真的存在无限时间意义上完全平稳的过程而是因为很多现象在有限的时间和尺度内展现出足够的统计稳定性让建模型、做预测、搞信号处理变成了可能。每次拿到一批新数据我第一个问自己的问题永远是这个东西平稳吗这个简单的提问背后是对数据生成机制的理解对统计工具的掌握以及对模型适用边界的敬畏。把这套框架内化之后你再看时间序列数据就再也不会觉得它只是一堆数字了而是一段有规律可循、有逻辑可讲的随机过程。
网站建设高端定制企业官网