问题描述
我尝试使用holt-winters model
进行预测,如下所示,但我一直得到的预测与我的预期不一致.我还展示了情节的可视化
I tried forecasting with holt-winters model
as shown below but I keep getting a prediction that is not consistent with what I expect. I also showed a visualization of the plot
Train = Airline[:130]
Test = Airline[129:]
from statsmodels.tsa.holtwinters import Holt
y_hat_avg = Test.copy()
fit1 = Holt(np.asarray(Train['Passengers'])).fit()
y_hat_avg['Holt_Winter'] = fit1.predict(start=1,end=15)
plt.figure(figsize=(16,8))
plt.plot(Train.index, Train['Passengers'], label='Train')
plt.plot(Test.index,Test['Passengers'], label='Test')
plt.plot(y_hat_avg.index,y_hat_avg['Holt_Winter'], label='Holt_Winter')
plt.legend(loc='best')
plt.savefig('Holt_Winters.jpg')
我不确定我在这里想念什么.
I am unsure of what I'm missing here.
该预测似乎与培训数据的早期部分相符
The prediction seems to be fitted to the earlier part of the Training data
推荐答案
该错误的主要原因是您的开始和结束值.它预测第一个观测值直到第十五个观测值.但是,即使您对此进行了更正,Holt也仅包括趋势成分,并且您的预测不会包含季节性影响.而是将ExponentialSmoothing
与季节性参数一起使用.
The main reason for the mistake is your start and end values. It forecasts the value for the first observation until the fifteenth. However, even if you correct that, Holt only includes the trend component and your forecasts will not carry the seasonal effects. Instead, use ExponentialSmoothing
with seasonal parameters.
这是您的数据集的有效示例:
Here's a working example for your dataset:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.holtwinters import ExponentialSmoothing
df = pd.read_csv('/home/ayhan/international-airline-passengers.csv',
parse_dates=['Month'],
index_col='Month'
)
df.index.freq = 'MS'
train, test = df.iloc[:130, 0], df.iloc[130:, 0]
model = ExponentialSmoothing(train, seasonal='mul', seasonal_periods=12).fit()
pred = model.predict(start=test.index[0], end=test.index[-1])
plt.plot(train.index, train, label='Train')
plt.plot(test.index, test, label='Test')
plt.plot(pred.index, pred, label='Holt-Winters')
plt.legend(loc='best')
这将产生以下图:
这篇关于带有统计模型的Holt-Winters时间序列预测的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!