python指数平滑预测_指数平滑方法简介

本文介绍了指数平滑方法,包括一次、二次和三次指数平滑,以及Holt-Winters模型。通过Python的statsmodels库演示了如何应用这些方法进行时间序列预测,并讨论了与ARIMA模型的关系。
摘要由CSDN通过智能技术生成

本文链接:个人站 | 简书 | CSDN

版权声明:除特别声明外,本博客文章均采用 BY-NC-SA 许可协议。转载请注明出处。

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

1. 一次指数平滑

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

Forecast equation:

math?formula=%5Chat%7By%7D_%7Bt%2Bh%7Ct%7D%20%3D%20l_t

Smoothing equantion:

math?formula=l_t%20%3D%20%5Calpha%20y_t%20%2B%20(1-%5Calpha)l_%7Bt-1%7D

其中

math?formula=y_t 是真实值,

math?formula=%5Chat%7By%7D_%7Bt%2Bh%7D%20(h%5Cin%20Z%5E%2B) 为预测值,

math?formula=l_t 为平滑值,

math?formula=0%3C%20%5Calpha%20%3C%201

定义残差

math?formula=%5Cepsilon_t%20%3D%20y_t%20-%20%5Chat%7By%7D_%7Bt%7Ct-1%7D,其中

math?formula=t%3D1%2C%5Ccdots%2CT,则可以通过优化方法得到

math?formula=%5Calpha

math?formula=l_0

math?formula=(%5Calpha%5E*%2C%20l_0%5E*)%20%3D%20%5Cmin%5Climits_%7B(%5Calpha%2C%20l_0)%7D%5Csum%5Climits_%7Bt%3D1%7D%5ET%5Cepsilon_t%5E2%20%3D%20%5Cmin%5Climits_%7B(%5Calpha%2C%20l_0)%7D%5Csum%5Climits_%7Bt%3D1%7D%5ET%5Cleft(y_t%20-%20%5Chat%7By%7D_%7Bt%7Ct-1%7D%5Cright)%5E2

使用 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值