Как использовать скользящее среднее в питоне? - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу сделать прогноз временного ряда, используя простую скользящую среднюю.Я использую следующий код: -

from statsmodels.tsa.arima_model import ARMA
import statistics
data=[x + random() for x in range(1,100)]
model=ARMA(data,order=(0,1))
model_fit=model.fit(disp=False)
y_hat=model_fit.predict(len(data),len(data))

Я не могу понять, как предсказать следующие 10 значений, поскольку y_hat дает мне только 1 значение.Также y_hat не соответствует среднему значению данных, которые должны совпадать, поскольку я использую порядок 1 в MA.Может ли кто-нибудь помочь мне в этом?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019
y_hat=model_fit.predict(len(data),len(data))

ваше начальное значение равно len (data), а конечное значение также то же самое, поэтому оно дает единственное прогнозируемое значение.

Я использовал прогноз () в своем проекте.Вот мой фрагмент кода:

from statsmodels.tsa.stattools import acf

# Create Training and Test
train = df[:3000]
test = df[3000:]

# Build Model
# model = ARIMA(train, order=(3,2,1))  
model = ARIMA(train, order=(1, 1, 1))  
fitted = model.fit(disp=-1)  

# Forecast
fc, se, conf = fitted.forecast(len(test), alpha=0.05)  # 95% conf

# Make as pandas series
fc_series = pd.Series(fc, index=test.index)
lower_series = pd.Series(conf[:, 0], index=test.index)
upper_series = pd.Series(conf[:, 1], index=test.index)

# Plot
plt.figure(figsize=(12,5), dpi=100)
plt.plot(train, label='training')
plt.plot(test, label='actual')
plt.plot(fc_series, label='forecast')
plt.fill_between(lower_series.index, lower_series, upper_series, 
                 color='k', alpha=.15)
plt.title('Forecast vs Actuals')
plt.legend(loc='upper left', fontsize=8)
plt.show()

enter image description here

Значение прогноза постоянно в моем графике, потому что мои данные имеют сезонные компоненты.

0 голосов
/ 25 сентября 2019

Я думаю, что вы просто должны дать начальное и конечное значение, как это

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