频域方法
时域问的是"什么时候发生了什么",频域问的是"里面有哪些周期,各占多大分量"。同一条序列,两种看法互相补充:有些结构在时域上完全看不出来,换到频域就是一根突出的尖峰。这一页从叠加正弦开始,一直讲到怎么用滤波把想要的成分挑出来。
LAB 01
傅里叶分解
叠加正弦波逼近任意波形,与站内傅里叶可视化工具联动
均方误差—
用了多少项—
谐波幅度的衰减速度—
跳变处的过冲—
任何周期信号都能写成正弦的叠加,这就是傅里叶级数。关键在于各次谐波的幅度衰减得多快——衰减越快,需要的项越少。三角波的谐波按 1/k² 衰减,五六项就几乎看不出差别;方波和锯齿波按 1/k 衰减,要几十项;尖脉冲几乎不衰减,需要极多项。这个规律有一个很实用的含义:信号越光滑,频谱越集中,越容易压缩。JPEG、MP3 这类压缩算法的全部基础就是这一句话。再看方波跳变处那个甩出去的小尖角。不管你加多少项,它的高度都稳定在跳变幅度的 9% 左右,只是越来越窄——这就是吉布斯现象。(读数给的是相对波形幅度 1 的百分比:方波上约 18%,而方波的跳变幅度是 2,18% ÷ 2 就是那个 9%。)它提醒一件事:用有限项的傅里叶展开去逼近不连续信号,误差不会均匀地变小,而是集中到了不连续点附近。在时间序列里,这意味着突变点(政策调整、疫情、系统上线)会在频域方法里造成局部的失真。
LAB 02
周期图
把一条含噪信号的隐藏周期找出来
周期图上最强的两个周期—
真实的隐藏周期—
峰值 / 背景中位数—
找到了吗—
上面那条曲线看起来只是一团噪声,下面的周期图却有两根清清楚楚的尖峰。这就是频域方法最直接的价值:周期性信号在时域上被噪声摊平了,在频域上却被集中到一个点上。n 个点的能量集中到一根谱线上,信噪比大致提高 √n 倍——所以把序列长度从 64 拉到 1024,本来淹没的峰会浮出来。把噪声一路调大,看峰什么时候消失。信号幅度是 1:噪声到 1.5 时峰值/背景还有 90 倍,要把噪声推到十倍以上、同时把序列缩短到 128,峰才会真的埋进去。读数里的"峰值 / 背景中位数"是一个实用的判据:这个比值在 10 以上通常是真的,低到 3 以下就要小心——周期图上的随机起伏本身就很大(它的方差不随 n 减小),一根不高的峰完全可能是噪声。这也是为什么实践中常用平滑周期图或 Welch 方法:牺牲一点频率分辨率,换取估计的稳定。最后注意分辨率:两个周期靠得太近(比如 12 和 13)时,它们在周期图上会并成一个峰,分辨两者所需的序列长度,大致与它们频率差的倒数成正比。
LAB 03
滤波
低通、高通、带通,对应到「去噪」与「提取季节」
保留了多少能量—
滤波结果与真实信号的相关系数—
残差标准差—
相关系数最高的截止周期—
滤波在频域上做的事非常简单:把一部分频率的幅度乘以 0,其余不变。数据里埋着一个周期 24 的季节信号、一条缓慢的趋势、和一堆噪声。低通留下慢的部分,同时得到趋势和季节,噪声被滤掉;高通把趋势去掉,只留下季节和噪声——这等价于做差分,但比差分更可控(差分是一个固定形状的高通滤波器)。注意高通的截止周期要设在季节周期之上:默认的 20 小于 24,会把季节一起滤掉(相关系数只有 0.04),调到 32 才对(0.80)——读数里那个"相关系数最高的截止周期"就是在提示这件事。带通只留下截止周期附近的一小段,可以把季节单独挑出来。把截止周期慢慢拖过 24 这个位置,盯着相关系数。它会先升后降:截止太紧,季节信号被削掉;截止太松,噪声被放进来。最高点附近就是最优取舍,读数里给了这个位置。这条"先升后降"的曲线你应该已经很熟悉了——它和偏差—方差、和正则化强度、和 K 折的 K,是同一件事的不同外衣。另外提醒一句:这里用的是最简单的理想矩形滤波,它在时域上会产生振铃(又是吉布斯现象);实际工程中会用 Butterworth、Hamming 窗等平滑过渡的滤波器。
这一页想说的
频域方法不是时域方法的替代品,而是一副不同的眼镜。什么时候值得戴上它:你怀疑数据里有周期但不知道周期是多少;你要把不同尺度的成分分开;或者你的噪声和信号恰好占据不同的频段。什么时候不该用:序列很短、有明显的突变点、或者周期本身随时间在变——这三种情况下傅里叶方法都会给出误导性的结果,小波和时频分析才是对的工具。