Прогнозы простого экспоненциального сглаживания не отображаются поверх фактических данных в Python - PullRequest
0 голосов
/ 18 апреля 2019

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

Я использую statsmodels 0.9.0, python 3.6.8 и matplotlib 3.0.2

# Simple Exponential Smoothing
fit1 = SimpleExpSmoothing(df1).fit(smoothing_level=0.2,optimized=False)
fcast1 = fit1.forecast(12).rename(r'$\alpha=0.2$')
# plot
fcast1.plot(marker='o', color='blue', legend=True)
fit1.fittedvalues.plot(marker='o',  color='blue')



fit2 = SimpleExpSmoothing(df1).fit(smoothing_level=0.6,optimized=False)
fcast2 = fit2.forecast(12).rename(r'$\alpha=0.6$')
# plot
fcast2.plot(marker='o', color='red', legend=True)
fit2.fittedvalues.plot(marker='o', color='red')


fit3 = SimpleExpSmoothing(df1).fit()
fcast3 = fit3.forecast(12).rename(r'$\alpha=%s$'%fit3.model.params['smoothing_level'])
# plot
fcast3.plot(marker='o', color='green', legend=True)
fit3.fittedvalues.plot(marker='o', color='green')

df1.plot()

plt.show()

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

1 Ответ

0 голосов
/ 21 апреля 2019

Это не имеет отношения к Statsmodels, это просто, как работает построение Pandas. Один из способов убедиться, что все они построены на одном и том же рисунке, состоит в том, чтобы создать фигуру самостоятельно и затем явно передать ось:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

# ...

fcast1.plot(ax=ax, marker='o', color='blue', legend=True)
fit1.fittedvalues.plot(ax=ax, marker='o',  color='blue')

# etc.

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