web-dev-qa-db-fra.com

Prévision de séries chronologiques Holt-Winters avec modèles statistiques

J'ai essayé de prévoir avec holt-winters model comme indiqué ci-dessous, mais je continue d'obtenir une prédiction qui ne correspond pas à ce que j'attends. J'ai également montré une visualisation de l'intrigue

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')

Je ne suis pas sûr de ce qui me manque ici.

Here's the plot visualization

La prédiction semble être ajustée à la première partie des données de formation

8
Mujeebla

La principale raison de l'erreur est vos valeurs de début et de fin. Il prévoit la valeur de la première observation jusqu'au quinzième. Cependant, même si vous corrigez cela, Holt inclut uniquement la composante tendance et vos prévisions ne porteront pas les effets saisonniers. Utilisez plutôt ExponentialSmoothing avec des paramètres saisonniers.

Voici un exemple de travail pour votre jeu de données:

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')

ce qui donne le tracé suivant:

forecast results with Holt-Winters

20
ayhan