Simple Moving Average (简单移动平均)讲解

Simple Moving Average (简单移动平均)讲解

前言

继上一篇Exponential Smoothing之后,这次笔者继续介绍另一种基础且常见的时间序列预测方法 —— 简单移动平均(Simple Moving Average,简称 SMA)

SMA 是我在读研期间最早接触到的预测方法之一。相比指数平滑,SMA 的概念更加直观、实现更加简单。它虽然没有权重衰减机制,但通过“滑动窗口”平均处理,也能很好地揭示数据的整体趋势。

1. 什么是 Simple Moving Average?

Simple Moving Average(SMA,简单移动平均) 是一种基础的时间序列平滑方法,通过计算一段时间内数据的平均值,来反映当前的趋势。

它的思想非常直观:把最近一段时间的数据加总后取平均,平滑掉短期波动,揭示长期趋势。

例如,对于一组每日销售数据,若我们希望用最近3天的数据作为今天的预测值,就可以用 SMA。

与指数平滑(Exponential Smoothing)相比,SMA 权重均匀,对突变不够敏感,但更加稳定、计算也更简单。


2. SMA 的基本原理与计算公式

SMA 的核心计算公式如下:

S t = 1 w ∑ i = t − w + 1 t A i S_t = \frac{1}{w} \sum_{i=t-w+1}^t A_i St=w1i=tw+1tAi

其中:

  • S t S_t St:表示第 t t t 时刻的预测值(或平滑值)
  • A i A_i Ai:第 i i i 个时刻的实际观测值
  • w w w:窗口大小,即平均计算的时间跨度(如 3 天、5 天等)

直观解释:每次向前滑动一个单位,就丢掉最早的值,加入最新的值,形成新的平均数。


3. 窗口大小的选择与影响

窗口大小 w w w 是 SMA 中最关键的超参数,决定了模型对新数据的反应速度:

窗口大小平滑效果对变化反应
小(如3)较弱更灵敏
大(如7)更强更迟钝

建议

  • 如果数据波动较大且我们关心“最新走势”,可以使用较小窗口;
  • 如果希望整体趋势更平稳,则适当增大窗口。

4. SMA 的优缺点

✅ 优点

  • 简单易懂:无需复杂参数,公式直观明了;
  • 稳定性强:适合消除高频噪声,体现长期趋势;
  • 计算代价低:实现成本低,适用于实时系统。

❌ 缺点

  • 对突变反应慢:无法及时捕捉快速上升或下降;
  • 权重固定:对窗口内的每个数据赋予相同权重,可能不符合实际情形;
  • 不能外推未来多个点:只适合一阶预测。

5. 应用场景举例

  • 股票/基金的技术分析(如5日、10日均线)
  • 日常销售量/流量趋势判断
  • 传感器数据降噪(例如温度、压力等)
  • 简单的实时业务监控指标平滑处理

SMA 虽然简单,但在很多商业系统、初步数据分析场景中,依然发挥着重要作用。


6. 小实例:用 Python 实现 SMA

假设我们有以下观测数据:

观测值 A = [50, 52, 53, 54, 55, 56, 60]
窗口大小 w = 3

从第3个数据点开始,每次取最近3个值求平均:

S3 = (50 + 52 + 53) / 3 = 51.67
S4 = (52 + 53 + 54) / 3 = 53.00
S5 = (53 + 54 + 55) / 3 = 54.00
S6 = (54 + 55 + 56) / 3 = 55.00
S7 = (55 + 56 + 60) / 3 = 57.00

Python实现:

def simple_moving_average(series, window):
    sma = []
    for i in range(window - 1, len(series)):
        window_values = series[i - window + 1:i + 1]
        sma.append(sum(window_values) / window)
    return sma

# 示例数据
A = [50, 52, 53, 54, 55, 56, 60]
window = 3
print(simple_moving_average(A, window))

输出结果:

[51.67, 53.0, 54.0, 55.0, 57.0]

7. 总结

  • SMA 是最经典也最容易上手的平滑预测方法之一;
  • 适用于平稳且对实时性要求不高的场景;
  • 可作为学习和实际项目中的“第一步工具”,打好预测基础。

希望这篇笔记对你有所帮助。作为一名正在读研的学生,我也在慢慢学习一些基础或进阶的时序预测方法。未来还会陆续更新包括加权移动平均、Holt 指数平滑、ARIMA 等更多基础或进阶的时间序列预测方法。如果你也正在学习这方面内容,欢迎一起交流探讨,一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值