我试图用两个或多个内生(y)变量恢复Python Statsmodels(版本0.12.1)中的置信度/预测区间,这在VARMAX中很常见。以下示例正确预测了两个内生变量的样本内和样本外均值。但样本内和样本外置信区间仅返回第一个内生变量dln_inv。我想知道如何恢复第二个变量dln_inc的置信区间。我将感谢任何帮助
import numpy as np
import statsmodels.api as sm
from statsmodels.tsa.api import VARMAX
import warnings
warnings.filterwarnings("ignore")
dta = sm.datasets.webuse('lutkepohl2', 'https://www.stata-press.com/data/r12/')
dta.index = dta.qtr
dta.index.freq = dta.index.inferred_freq
subset = dta.loc['1960-04-01':'1978-10-01', ['dln_inv', 'dln_inc', 'dln_consump']]
endog = subset[['dln_inv', 'dln_inc']] # notice two endogenous variables
exog = subset['dln_consump']
p = int(0)
q = int(1)
model = VARMAX(endog, exog=exog, order=(int(p),int(q))).fit(maxiter=100,disp=False)
in_sample_predicted = model.get_prediction()
in_sample_predicted_means = in_sample_predicted.predicted_mean
# the following command seems to produce the confidence interval for the first endogenous variable, dln_inv
in_sample_CI = in_sample_predicted.summary_frame(alpha=0.05)
n_periods = 5
exog_preforecast = exog + exog * np.random.normal(0,0.5,exog.shape)
out_sample_forecast = model.get_forecast(steps=n_periods,exog=exog_preforecast[-n_periods:])
out_sample_forecast_means = out_sample_forecast.predicted_mean
# the following command seems to produce the confidence interval for the first endogenous variable, dln_inv
out_sample_CI = out_sample_forecast.summary_frame(alpha=0.05)
有两种方法可以获得所有变量的置信区间
首先,如果您使用的是
summary_frame
方法,那么可以使用endog
参数(很遗憾,它似乎不在docstring中)传递要检索间隔的变量的整数索引其次,可以使用
conf_int
方法一次检索所有变量的invervals:这将产生以下数据帧输出:
相关问题 更多 >
编程相关推荐