MCM520 ← 资料站首页 移动平均 · 深度手册 打开交互阅读器 →

移动平均 · 深度手册

分类:预测类 | 难度:★☆☆ 入门 | 编号:movingavg

一、这是什么(一句话用途)

去噪 / 平稳序列的 naive 预测

二、核心思想

移动平均是最朴素的平滑与预测技术:用最近 kk 期的平均值作为下一期的预测。它假设"近期的平均最能代表近期水平",通过平均抵消随机噪声。优点是极度简单、无需训练;缺点是天然滞后于趋势(因为它本质上是把过去拉平),且只能用于近似平稳的序列。常作为数据预处理的去噪步骤,而非精确预测的主力。

三、数学原理与推导

简单移动平均(kk 期窗口):

x^t+1=1k∑i=t−k+1txi \hat{x}_{t+1}=\frac{1}{k}\sum_{i=t-k+1}^{t}x_i

加权移动平均赋予近期更大权重 wiw_i(∑wi=1\sum w_i=1):

x^t+1=∑i=t−k+1twixi \hat{x}_{t+1}=\sum_{i=t-k+1}^{t} w_{i}x_i

中心移动平均 1k∑i=t−⌊k/2⌋t+⌊k/2⌋xi\frac{1}{k}\sum_{i=t-\lfloor k/2\rfloor}^{t+\lfloor k/2\rfloor}x_i 用于展示趋势而非预测。窗口 kk 越大越平滑但滞后越严重。

四、建模 / 求解步骤

  1. 选窗口 k
  2. 算滑动均值
  3. 以最新均值预测
  4. 可加权(越近越重)

五、关键公式速查

ŷ_{t+1} = mean(y_{t−k+1}..y_t)

六、典型示例

日常波动数据用 7 日移动平均看趋势。

完整算例(数字演示,照着算一遍)

场景:同上序列,3 期移动平均。

MA(3):第3期=(120+135+130)/3=128.3,第4期=136.7,第5期=141.7。

结论:平滑掉短期波动,趋势向上。

七、Python 实现示例

import os, numpy as np
import pandas as pd
HERE = os.path.dirname(os.path.abspath(__file__))
df = pd.read_csv(os.path.join(HERE,"..","datasets","movingavg.csv"))
x = df["value"].to_numpy(dtype=float)
k = 7
ma = np.convolve(x, np.ones(k)/k, mode="valid")
print("7 日移动平均(末5):", np.round(ma[-5:],2))
print("下期预测=%.2f"%ma[-1])

配套文件:py_movingavg.py(需 numpy / pandas;与下方数据集配套练习)

八、MATLAB 实现示例

%% 移动平均示例(MATLAB/Octave)
df = readtable('..\datasets\movingavg.csv');
x = table2array(df(:,2:end));
k = 7; ma = movmean(x,k);
fprintf('下期预测=%.2f\n', ma(end));

配套文件:m_movingavg.m(基础 MATLAB / Octave 即可运行)

九、练手数据集(可下载)

30 期带噪声的时间序列。用于移动平均平滑与朴素预测。

十、常见误区与避坑清单

  • 滞后于趋势(掉队)
  • k 太大过平滑
  • 仅适合平稳序列

十一、结果怎么解读

用于平滑而非精确预测。

十二、常与谁搭配

配合指数平滑。

十三、论文写作技巧(怎么把它写进论文)

把 移动平均 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。

1. 动机怎么写(为什么用它而不是别的)

先说明你的数据具有时间 / 序列依赖,或需要由已知推断未知,因此采用预测类方法。交代输入特征与预测目标,并说明为何选 移动平均(如非线性强、含季节性、小样本等),对比朴素法(如移动平均)点出优势。

2. 结果怎么写(图表与指标)

结果必须给「预测值 vs 真实值」对比曲线 + 误差指标表(MAE / RMSE / MAPE),最好附训练 / 验证分段。若有多个模型,用一张表横向对比误差,突出 移动平均 更优。

3. 可直接套用的写作话术

  • 中文模板:针对<问题>,本文采用 移动平均 进行去噪 / 平稳序列的 naive 预测。该方法能够自动刻画<优势>,在处理<场景>时相较<对比方法>更具<特点>。
  • 英文模板:To address , we adopt 移动平均 to 去噪 / 平稳序列的 naive 预测. Benefiting from its ability to , it outperforms on .

4. 同类易踩的写作坑

不可只报 R² 不看外推;时间序列要显式说明训练 / 测试切分方式,避免用未来信息泄漏(look-ahead bias)。

5. 典型论文段落范例(可直接参考 / 改写)

下面是一段可直接套用的论文表述,已按本算法定制,填空处(…)替换成你的真实数值即可。

由于日用电量具有明显的时间依赖与周期波动,本文采用 移动平均 对未来 30 天负荷进行预测,以 RMSE=…、MAPE=… 的精度优于 ARIMA 基线,验证了模型对非线性趋势的捕捉能力。

Given the strong temporal dependence and periodic fluctuation of daily load, we employ 移动平均 to forecast the next 30 days, achieving RMSE=… and MAPE=… and outperforming the ARIMA baseline, which confirms its strength in capturing nonlinear trends.

十四、相关手册(延伸阅读)

十五、本手册导航


本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。