Я использовал модель Var для прогнозирования данных в Python, у меня есть результаты для сравнения с фактическими данными.
Мой набор поездов и испытаний с 2004 по 2018.
Однако есть ли у нас метод, использующий модель var для предсказания гораздо большего будущего (например: 2019,2020,2021)
Вот мой код:
lag_order = res.k_ar
print(lag_order) # >4
out: 5
# Input data for forecasting
forecast_input = df_differenced.values[-lag_order:]
forecast_input
out:
array([[ 1.41939993, -1.58305387, 0.33095006, 3.66064988, 7.12839619],
[ 2.55318109, 1.34071932, -0.4432982 , -3.49101215, 0.28956284],
[-2.8474339 , -0.14762564, 0.1506366 , 1.90246504, -0.12238006],
[-0.1190565 , 0.39829286, -0.32609224, 0.18897195, 0.10324808],
[ 2.15817213, -1.70876212, 0.25909848, -1.00382328, -0.05941407]])
# Forecast
fc = res.forecast(y=forecast_input, steps=nobs)
df_forecast = pd.DataFrame(fc, index=df.index[-nobs:], columns=df.columns + '_2d')
df_forecast
Scen1_2d Scen2_2d Scen10_2d Scen11_2d Par1_2d
Date
2015-04-01 -0.874942 1.343019 -0.440789 1.167437 -0.118614
2015-07-01 0.251425 -0.844655 0.186415 -0.841573 0.390537
2015-10-01 -0.020896 0.663666 -0.155584 0.414400 -0.489230
2016-01-01 -0.060635 -0.484342 0.080413 -0.124568 0.432333
2016-04-01 0.094140 0.480481 -0.083731 -0.059566 -0.300614
2016-07-01 -0.092360 -0.340982 0.040299 0.118443 0.174188
2016-10-01 0.091063 0.326806 -0.051044 -0.142963 -0.070812
2017-01-01 -0.071041 -0.177652 0.012792 0.112728 0.010482
2017-04-01 0.060951 0.172027 -0.027916 -0.097752 0.026668
2017-07-01 -0.038588 -0.047077 -0.005095 0.057332 -0.036014
2017-10-01 0.030813 0.072831 -0.015283 -0.046846 0.039999
2018-01-01 -0.013471 0.021153 -0.013099 0.016677 -0.030911
2018-04-01 0.011718 0.030665 -0.010871 -0.017385 0.026711
2018-07-01 -0.000165 0.043792 -0.015009 -0.002910 -0.015690
2018-10-01 0.003279 0.021237 -0.010517 -0.005543 0.012863