Модель ARIMA Предсказание против фактических различий - PullRequest
0 голосов
/ 28 мая 2019

У меня есть данные о ежедневных продажах за 2018 год, и я провел моделирование ARIMA с помощью поиска в сетке (для циклов), получил оптимальные значения, такие как (0,1,2) и среднеквадратичное значение 61,562.

MyЗначение RMSE модели наивного прогноза (126,39) меньше, чем ARIMA RMSE (61,562), поэтому я считаю, что модель ARIMA работает хорошо?

У меня проблемы с пониманием различий между прогнозируемыми и ожидаемыми значениями ARIMA, и я хотелзнать, хорошо ли работает модель или нет, и различия приемлемы.

Прикреплен скриншот графика и прогноза ARIMA.

Predict Vs Test

Выход ARIMA

Train Set Lenght: 736
Test Set Lenght: 380
>Predicted=15.584, Expected= 20
>Predicted=18.602, Expected= 10
>Predicted=14.051, Expected= 30
>Predicted=22.576, Expected= 60
>Predicted=34.849, Expected= 10
>Predicted=16.423, Expected= 50
>Predicted=35.823, Expected= 54
>Predicted=36.277, Expected=  6
>Predicted=19.700, Expected= 35
>Predicted=32.607, Expected=  1
>Predicted=16.107, Expected= 36
>Predicted=31.214, Expected= 20
>Predicted=22.272, Expected=  4
>Predicted=17.035, Expected=  4
>Predicted=15.497, Expected=  8
>Predicted=15.150, Expected=  3
>Predicted=11.664, Expected=  3
>Predicted=10.629, Expected=  3
>Predicted=9.278, Expected=  3
>Predicted=8.268, Expected=  4
>Predicted=7.810, Expected=  4
>Predicted=7.114, Expected=  4
>Predicted=6.610, Expected=  4
>Predicted=6.168, Expected=  2
>Predicted=4.964, Expected= 12
>Predicted=8.790, Expected= 16
ARIMA Code snippet
train_series=north_top_painter_df["Volume"].values
train_size = int(len(train_series) * 0.66)
x_train, x_test = train_series[0:train_size], train_series[train_size:]
print('Train Set Lenght:',len(x_train))
print('Test Set Lenght:',len(x_test))
# walk-forward validation
history = [i for i in x_train]
predictions = list()

for i in range(len(x_test)):
  # predict
  model = ARIMA(history, order=(0,1,2))
  model_fit = model.fit(disp=0)
  #y_pred=model_fit.predict(start=len(train), end=len(train)+len(test)-1, dynamic=False)
  y_pred = model_fit.forecast()[0]
  predictions.append(y_pred)
  #observation
  test_obs = x_test[i]
  history.append(test_obs)
  print('>Predicted=%.3f, Expected=%3.f' % (y_pred, test_obs))
# report performance
rmse = sqrt(mean_squared_error(x_test, predictions))
print('RMSE: %.3f' % rmse)
plt.plot(x_test, label = "Test",color='blue') 
#plt.plot(y_pred)
plt.plot(predictions, color = 'red', label = "Predict") 
plt.legend(loc='best')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...