滑动平均窗口怎么选:3 点、1 小时还是 24 小时
Choosing a Moving Average Window
同样的数据,滑动平均窗口取 3 点和 1 小时,会给出完全不同的结论。窗口不是越大越"平滑",而是越能抹掉你想抹掉的频率——窗口选择必须与数据用途绑定。
本文涉及的条目20 条 · 自动匹配自标签与标题
滑动平均的本质是低通滤波
滑动平均把信号里的高频成分抹平,保留低频趋势。窗口 N 越大,截止频率越低,曲线越平滑,但延迟越大、突变越钝。
滑动平均的近似截止频率:f_c ≈ 0.44 / (N × Δt)
| 窗口 | 数据频率 1/min | 截止周期(约) | 保留的信号 |
|---|---|---|---|
| 3 点 | 1 min | ~7 min | 分钟级趋势,滤掉采样抖动 |
| 15 点 | 1 min | ~34 min | 半小时级趋势 |
| 60 点(1 h) | 1 min | ~2.3 h | 小时级趋势 |
| 1440 点(24 h) | 1 min | ~2.3 天 | 日以上趋势 |
理解这句话:窗口 1 小时的滑动平均,会把所有"短于 2.3 小时的波动"都抹平——如果你关心的是"暴雨 1 小时的洪峰",这个窗口直接把洪峰吃掉了。
窗口选择的三个问题
选窗口前,先回答三个问题:
问题一:你要保留什么信号?
| 用途 | 需要保留的信号周期 | 建议窗口 |
|---|---|---|
| 降雨-水位联动预警 | 分钟~小时级(洪峰) | 3~15 点(≤ 15 min) |
| 滑坡位移趋势 | 天~周级(累积位移) | 小时级(60 点) |
| 日平均温度评价 | 日级 | 24 h(或直接用日均值) |
| 噪声小时等效 | 1 h(Leq 定义) | 不滑动平均,用能量平均 |
| 去除传感器采样抖动 | 秒~分钟级 | 3~5 点 |
问题二:你能接受多少延迟?
滑动平均的延迟 ≈ (N-1)/2 × Δt。窗口 24 h 的均值,你要等 12 h 才能看到"当前时刻的平滑值"——在线预警不可能用大窗口,预警必须用小窗口 + 原始值判据。
问题三:信号里有没有"该保留的突变"?
- 滑坡加速、暴雨洪峰、结构突变——这些是事件信号,滑动平均会把它们钝化;
- 如果任务是"捕捉事件",用原始值 + 变化率判据,而不是大窗口平滑;
- 如果任务是"评估长期趋势",大窗口合适,但要同步保留原始序列。
不同场景的实战建议
降雨-水位联动(山洪预警)
- 用 3~15 点滑动平均(或干脆用原始值 + 5 min 累计雨量);
- 千万别用小时窗口:小时均值把 30 min 50 mm 的强雨抹成 25 mm/h,预警价值归零;
- 判据用"滚动累计"(如 1 h 滚动雨量),不是滑动平均。
滑坡 GNSS 位移
- 原始序列噪声 ±10~20 mm,趋势信号是"日累积几 mm";
- 用 1 h 滑动中位数(不是均值——中位数抗尖峰);
- 位移判据用"24 h 滑动增量",既能平滑噪声,又不钝化"加速期"(增量是差值,窗口内的趋势保留)。
温度/水位缓变监测
- 数据本身平滑,3~5 点滑动平均去采样抖动即可;
- 大窗口(24 h)用于"日均值报表",但日报用标准日界(0:00~24:00)计算,不是滑动平均。
噪声监测
- 不要对 Leq 做滑动平均——Leq 本身就是能量平均,再平均会丢失时间结构(详见本站专题《Leq、L10、L90》);
- 统计量(L10/L90)基于原始采样计算,窗口概念不适用。
滑动平均的四个陷阱
- 首尾缺失:窗口在前 N-1 个点和最后 N-1 个点无完整窗口——实现时要决定"缩窗"还是"补齐",并在文档注明;
- 跳变被钝化:阶跃信号(设备切换、量程跳变)被滑动平均抹成斜坡——分析前先找突变点,不要在突变附近用大窗口;
- 窗口与采样率脱节:"滑动平均 60 点"在 1 min 采样下是 1 h,在 1 s 采样下是 1 min——说窗口要说时间长度,不说点数;
- 重复平滑:对已经平滑过的数据再平滑,等于多个低通级联,延迟叠加、信号进一步失真——只对原始序列平滑一次。
一个完整例子
水位序列(1 min 采样):
- 目的:日趋势评估 → 60 点(1 h)窗口,看日水位过程;
- 目的:暴雨洪峰预警 → 用 5 点窗口 + 原始值 10 min 增量判据;
- 目的:月报 → 直接日均值(24 h 窗口 + 日界),不做滑动。
结语
滑动平均窗口的选择是信号与延迟的权衡:窗口越大,趋势越清晰,事件越模糊、延迟越大。先回答"要保留什么频率的信号、能接受多少延迟",再选窗口。记不住细节就用三条:在线预警用小窗口或原始值,长期趋势用中窗口,报表用标准统计周期——永远保留原始序列,平滑只作为派生列。