指数平滑方法简介

指数平滑是时间序列预测的重要方法,包括一次指数平滑(适用于无趋势序列)、二次指数平滑(Holt's 线性趋势方法,用于有趋势序列)和三次指数平滑(Holt-Winters' 模型,处理季节性序列)。Python 的 statsmodels 库支持这些模型。模型选择可基于 AIC 和 BIC 准则,与 ARIMA 方法存在特定关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文链接个人站 | 简书 | 优快云
版权声明:除特别声明外,本博客文章均采用 BY-NC-SA 许可协议。转载请注明出处。

指数平滑(Exponential smoothing)是除了 ARIMA 之外的另一种被广泛使用的时间序列预测方法(关于 ARIMA,请参考 时间序列模型简介)。 指数平滑即指数移动平均(exponential moving average),是以指数式递减加权的移动平均。各数值的权重随时间指数式递减,越近期的数据权重越高。常用的指数平滑方法有一次指数平滑、二次指数平滑和三次指数平滑。

1. 一次指数平滑

一次指数平滑又叫简单指数平滑(simple exponential smoothing, SES),适合用来预测没有明显趋势和季节性的时间序列。其预测结果是一条水平的直线。模型形如:

Forecast equation: y ^ t + h ∣ t = l t \hat{y}_{t+h|t} = l_t y^t+ht=lt
Smoothing equantion: l t = α y t + ( 1 − α ) l t − 1 l_t = \alpha y_t + (1-\alpha)l_{t-1} lt=αyt+(1α)lt1

其中 y t y_t yt 是真实值, y ^ t + h ( h ∈ Z + ) \hat{y}_{t+h} (h\in Z^+) y^t+h(hZ+) 为预测值, l t l_t lt 为平滑值, 0 < α < 1 0< \alpha < 1 0<α<1

定义残差 ϵ t = y t − y ^ t ∣ t − 1 \epsilon_t = y_t - \hat{y}_{t|t-1} ϵt=yty^tt1,其中 t = 1 , ⋯   , T t=1,\cdots,T t=1,,T,则可以通过优化方法得到 α \alpha α l 0 l_0 l0

( α ∗ , l 0 ∗ ) = min ⁡ ( α , l 0 ) ∑ t = 1 T ϵ t 2 = min ⁡ ( α , l 0 ) ∑ t = 1 T ( y t − y ^ t ∣ t − 1 ) 2 (\alpha^*, l_0^*) = \min\limits_{(\alpha, l_0)}\sum\limits_{t=1}^T\epsilon_t^2 = \min\limits_{(\alpha, l_0)}\sum\limits_{t=1}^T\left(y_t - \hat{y}_{t|t-1}\right)^2 (α,l0)=(α,l0)mint=1Tϵt2=(α,l0)mint=1T(yty^tt1)2

使用 python 的 statsmodels 可以方便地应用该模型:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.holtwinters import SimpleExpSmoothing

x1 = np.linspace(0, 1, 100)
y1 = pd.Series(np.multiply(x1, (x1 - 0.5)) + np.random.randn(100))
ets1 = SimpleExpSmoothing(y1)
r1 = ets1.fit()
pred1 = r1.predict(start=len(y1), end=len(y1) + len(y1)//2)

pd.DataFrame({
   
   
    'origin': y1,
    'fitted': r1.fittedvalues,
    'pred': pred1
}).plot(legend=True)

效果如图:
ses.png

2. 二次指数平滑

2.1 Holt’s linear trend method

Holt 扩展了简单指数平滑,使其可以用来预测带有趋势的时间序列。直观地看,就是对平滑值的一阶差分(可以理解为斜率)也作一次平滑。模型的预测结果是一条斜率不为0的直线。模型形如:

Forecast equation: y ^ t + h ∣ t = l t + h b t \hat{y}_{t+h|t} = l_t + hb_t y^t+ht

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值