本节摘要:平稳过程是"统计性质不随时间漂移"的过程,其全部二阶结构装在自协方差函数里;谱分析把它搬到频域,自协方差与功率谱互为傅里叶对偶。本节给出两档平稳定义、二阶理论的适用范围、功率谱的读法与白噪声的身份辨析,并以一个含周期成分信号的完整识别流程收尾——这是时间序列分析与信号处理共用的地基。
信号处理的工程师看一张脑电图,第一件事不是读波形而是问频谱:alpha 节律在不在?工频干扰有多强?时间序列分析师看一组月度销量,先看周期与季节性。两拨人做的是同一件事:把时间轴上的波动翻译成频率轴上的成分。能让这场翻译合法成立的前提,叫平稳性。
严平稳:过程的全部有限维分布在时间平移下不变——把整条统计"录像"平移任意段,看到的分布一模一样。这是很强的要求,检验基本靠理论而非数据。
宽平稳(协方差平稳):只要求均值恒定、自协方差只依赖时间差——E[X(t)] 为常数,Cov(X(s), X(t)) 只与 t − s 有关。工程与统计实践中九成的"平稳"指这一档。
两档的关系要背准:高斯过程里两者等价(二阶矩决定全部分布,1.2 节的协方差矩阵逻辑);非高斯过程宽平稳不蕴含严平稳。另有一个高频混点:布朗运动不平稳——Var(W(t)) = t 随时间增长,均值虽恒定方差却漂移;但布朗增量平稳。给过程差分、去趋势常常是把不平稳数据"拉回平稳"的第一手段,ADF 之类的平稳性检验是时间序列工作流的标准开场。
宽平稳过程的自协方差函数 γ(k) = Cov(X(t), X(t+k)) 只依赖滞后 k。它是相关性随间隔衰减的完整档案:衰减越快记忆越短,出现震荡说明有周期成分,永远不衰减到零提示长记忆。三条明星曲线先认个脸:
白噪声:γ(0) 之外全为零——任何两个不同时刻毫无关联,最彻底的"无记忆"。指数衰减型:γ(k) ∝ φ 的 k 次方——一阶自回归过程的指纹,越远越淡、指数遗忘。周期型:γ(k) 随 k 呈余弦起伏——里面藏着频率确定的周期成分。

维纳–辛钦定理是频域视角的宪法:宽平稳过程的自协方差函数 γ(k) 与功率谱密度 S(f) 是一对傅里叶变换。功率谱把总方差按频率摊开——S(f) 在某频率高,说明该频率的成分贡献了大量波动;全谱平坦就是白噪声("白"这个名字直接借自光学:全频段等强即白光)。
读谱的三个动作可以直接抄作业:看峰(谱峰位置即主导周期,峰高即该周期波动占比);看斜(低频翘尾提示趋势或长记忆,高频翘尾提示高频噪声主导);看谷(陷谷点常是滤波或采样造成的)。工程里"50 赫兹工频干扰""轴承故障特征频率"这类诊断结论,全部来自对谱峰位置的机械读取。
频域视角还有一份理论分红:布朗运动的增量谱是 1/f² 型(谱密度与频率平方成反比)——这与 4.1 节特征展开里振幅随频率衰减的形状完全对应。1/f 噪声家族(谱密度正比于频率负一次幂附近)在电子器件、心跳节律、音乐信号里大量出现,它们介于白噪声(平坦)与布朗(平方衰减)之间,常被用来诊断"长程相关的强度"。看到 1/f 别当玄学,它是"方差在频率对数轴上呈直线"的简写。
⚠️ 白噪声辨析:高斯白噪声说"分布正态",白噪声只说"不相关"——两者是交叉概念而非同义词。同理,白噪声不必然平稳(独立不同分布的序列可以不相关却不平稳)。这三个词在文献里常被混写,读论文时要看作者的定义清单。
背景:某厂房震动监测记录(每分钟一采样,共 1440 点),怀疑存在设备故障导致的周期冲击与背景噪声。操作流程四步:
第一步,平稳性检查。画滑动均值与滑动方差:均值线平、方差线平,通过宽平稳的目测关;若方差随时间爬升,先做对数或差分变换。
第二步,读自相关。样本自相关在滞后 20 与 40 处出现尖峰——周期约 20 分钟的成分现形(40 是 20 的二次谐波,互相印证)。
第三步,读谱。功率谱在对应频率处一根尖峰,其余区域接近平坦:结论为"白噪声背景 + 单一周期成分",而非宽带故障谱。
第四步,量化与建议。按谱峰面积估计周期成分占总方差约三成,对照维护手册中该频率对应的部件(如某叶轮的转频),安排针对性检修而非整机停机。
import numpy as np rng = np.random.default_rng(77) n = 1440 t = np.arange(n) # 造一段"白噪声 + 周期 20 分钟 + 漂移"的合成震动记录 signal = rng.normal(0, 1.0, n) + 2.0*np.sin(2*np.pi*t/20.0) + 0.002*t # 第一步的代理:比较前后半段均值与方差 print(f"前半 均值 {signal[:n//2].mean():.3f} 方差 {signal[:n//2].var():.3f}") print(f"后半 均值 {signal[n//2:].mean():.3f} 方差 {signal[n//2:].var():.3f}") # 漂移会让后半均值明显抬高——先去趋势(减去线性拟合)再做谱分析 detrended = signal - np.polyval(np.polyfit(t, signal, 1), t) # 第二步:样本自相关在滞后 20、40 处尖峰 x = detrended - detrended.mean() acov = np.correlate(x, x, mode="full")[n-1:] / n acf = acov / acov[0] print(f"滞后 20 的自相关 {acf[20]:.3f},滞后 19 {acf[19]:.3f},滞后 40 {acf[40]:.3f}") # 第三步:功率谱找峰 freq = np.fft.rfftfreq(n) psd = np.abs(np.fft.rfft(x))**2 peak = freq[1:][np.argmax(psd[1:])] print(f"谱峰频率 {peak:.4f},对应周期 {1/peak:.1f} 分钟") # 典型输出:周期 20.0 分钟的峰被干净捞出;背景近似平坦——四步流程全程闭合
变式:若读谱发现低频大片翘尾且自相关迟迟不衰减,结论换成长记忆或单位根,处理路线从"滤周期"换成"差分建 ARIMA"——同一套体检,不同处方。频域视角的价值正在于此:它把"数据看起来乱"翻译成"能量在哪些频率"的可判定问题。
时间序列统计与信号处理各有一套词汇,读文献时按这张表换算:
| 统计语言 | 信号语言 | 备注 |
|---|---|---|
| 自协方差函数 γ(k) | 自相关序列(归一化后) | 差一个方差归一 |
| 功率谱密度 | 频谱 / PSD | 完全同一对象 |
| 白噪声 | 白噪声 | 罕见的直接互通 |
| 平稳性检验 | 稳态判定 | 工程侧常靠目测 + 物理约束 |
| 采样定理下的混叠 | 频率折叠 | 高频冒充低频,滤波先行 |
这张表的实用价值在协作场景:数据科学家与硬件工程师对齐口径时,把"自协方差衰减快"翻译成"信号时间常数短",讨论效率立刻上一个台阶。读两类文献的入门者建议把它贴在手边——术语差异造成的误解,比方法差异造成的更多。
频域的护照盖完章,回到时域办最后一件事:给不可微的路径重新发明微积分——伊藤积分与伊藤引理。