Прогноз временных рядов Holt-Winters с использованием statsmodels - PullRequest
0 голосов
/ 20 сентября 2018

Я просто следую за сообщением здесь , чтобы опробовать мое первое предсказание с примером набора данных ниже.Я ожидал граф прогнозирования, такой как Ожидаемый , но я получил график, как прикрепленный здесь. получил это

мой пример кода

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

df = pd.read_csv('data.csv', 
        parse_dates=['date'], 
        index_col='date')

df.index.freq = 'H'

train, test = df.iloc[:250, 0], df.iloc[250:, 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')
plt.show()

мой выборочный набор данных, который повторно выбирается по часам

date,count
2018-08-19 18:00,11
2018-08-19 19:00,4412
2018-08-19 20:00,4300
2018-08-19 21:00,3522
2018-08-19 22:00,2579
2018-08-19 23:00,1546
2018-08-20 00:00,918
2018-08-20 01:00,492
2018-08-20 02:00,299
2018-08-20 03:00,184
2018-08-20 04:00,201
2018-08-20 05:00,334
2018-08-20 06:00,867
2018-08-20 07:00,1767
2018-08-20 08:00,2904
2018-08-20 09:00,3892
2018-08-20 10:00,4744
2018-08-20 11:00,5081
2018-08-20 12:00,5370
2018-08-20 13:00,5408
2018-08-20 14:00,5523
2018-08-20 15:00,5162
2018-08-20 16:00,5182
2018-08-20 17:00,4685
2018-08-20 18:00,4472
2018-08-20 19:00,4454
2018-08-20 20:00,4406
2018-08-20 21:00,3719
2018-08-20 22:00,2636

Что мне не хватает?

[Редактировать]

После того, как я изменилсясезонные периоды с 12 до 24, я получил этот график.

После того, как изменили на 24

[Редактировать]

После удаления данных

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Ваша новая подгонка может быть правильной: исключительные значения недели 8 вполне могут привести к переоценке сезонных факторов.

Сделайте тест: удалите эти недели (разделите их на 4) и сделайтепредварительная посадкаЕсли подгонка лучше, вы можете начать подгонять значение лучше, чем оценка.

Если подгонка не изменяется, то завышение может происходить из параметров smoothing_level, smoothing_seasonal или других параметров подходит .

0 голосов
/ 21 сентября 2018

На первый взгляд кажется, что у вас неправильный цикл сезонности.

Попробуйте сезонные_периоды = 24, а не сезонные_периоды = 12.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...