Код: Выделить всё
import numpy as np
import pandas as pd
from scipy.stats import norm
import statsmodels.api as sm
import matplotlib.pyplot as plt
from datetime import datetime
import requests
from io import BytesIO
# Dataset
friedman2 = requests.get('https://www.stata-press.com/data/r12/friedman2.dta').content
data = pd.read_stata(BytesIO(friedman2))
data.index = data.time
data.index.freq = "QS-OCT"
# Variables
endog = data.loc['1959':'1981', 'consump']
exog = sm.add_constant(data.loc['1959':'1981', 'm2'])
# Fit the model
mod = sm.tsa.statespace.SARIMAX(endog, exog, order=(1,0,1))
res = mod.fit(disp=False)
# Create changed exog variables for in-sample dates
exog_test1 = exog.loc['1980-10-01':'1981-10-01']
exog_test1.loc[:, 'm2'] = 1000
exog_test2 = exog.loc['1980-10-01':'1981-10-01']
# Compare predictions with actuals
display(endog.tail())
display(res.fittedvalues['1980-10-01':'1981-10-01'])
display(res.get_prediction(start='1980-10-01', end='1981-10-01', dynamic=True, exog=exog_test1).predicted_mean)
display(res.get_prediction(start='1980-10-01', end='1981-10-01', dynamic=True, exog=exog_test2).predicted_mean)



Из результатов видно, что функция get_prediction() действительно предоставляет фактический прогноз, начиная с 1 октября 1980 г., поскольку значения отличаются от установленные значения. Однако прогноз абсолютно одинаков для обеих переменных exog. Как я могу получить прогноз, в котором используются обновленные значения exog?
Подробнее здесь: https://stackoverflow.com/questions/792 ... g-variable