Я пытаюсь запустить Белый тест на гетероскедастичность в статистических моделях. Однако для одного из параметров требуется массив экзогенных переменных. Следовательно, я создал DataFrame с константами, тенденциями и экзогенными условиями (см. Ниже).
exog = sm.tsa.tsatools.lagmat(df.dlog_biz_machine_investment.dropna(), maxlag=1, use_pandas=True)
exog = sm.tsa.tsatools.add_trend(exog, trend='ct', prepend=True)
exog = pd.concat([exog, df.log_biz_machine_investment_L1.dropna()], axis=1)
mod = sm.tsa.arima.ARIMA(endog=df.dlog_biz_machine_investment.dropna(), exog=exog, freq='QS', trend='n').fit()
print(mod.summary())
>>> SARIMAX Results
=======================================================================================
Dep. Variable: dlog_biz_machine_investment No. Observations: 129
Model: ARIMA Log Likelihood 122.929
Date: Tue, 05 May 2020 AIC -235.858
Time: 16:18:34 BIC -221.559
Sample: 04-01-1971 HQIC -230.048
- 04-01-2003
Covariance Type: opg
===================================================================================================
coef std err z P>|z| [0.025 0.975]
---------------------------------------------------------------------------------------------------
const 0.4551 0.190 2.397 0.017 0.083 0.827
trend 0.0014 0.001 2.496 0.013 0.000 0.003
dlog_biz_machine_investment.L.1 -0.2043 0.084 -2.441 0.015 -0.368 -0.040
log_biz_machine_investment_L1 -0.1280 0.054 -2.370 0.018 -0.234 -0.022
sigma2 0.0087 0.001 11.859 0.000 0.007 0.010
===================================================================================
Ljung-Box (Q): 50.76 Jarque-Bera (JB): 48.15
Prob(Q): 0.12 Prob(JB): 0.00
Heteroskedasticity (H): 0.36 Skew: -0.23
Prob(H) (two-sided): 0.00 Kurtosis: 5.96
===================================================================================
Вышеупомянутое должно быть эквивалентно ARIMA (1,0,0) с 'dlog_biz_machine_investment' в качестве endog, с одним лагом и log_biz_machine_investment (одним лагом), постоянным и трендовым членом. Однако, когда я запускаю модель ARIMA (1,0,0), я получаю разные результаты (технически я должен получить тот же ответ). Что-то мне здесь не хватает? Вдобавок мне интересно, можно ли получить экзогенные значения из ARIMAResults, что избавит меня от хлопот по созданию другого массива для использования в тесте Уайта. Спасибо!
mod = sm.tsa.arima.ARIMA(df.dlog_biz_machine_investment.dropna(), exog=df.log_biz_machine_investment_L1.dropna(), order=(1,0,0), freq='QS', trend='ct')
results = mod.fit()
print(results.summary())
>>> SARIMAX Results
=======================================================================================
Dep. Variable: dlog_biz_machine_investment No. Observations: 129
Model: ARIMA(1, 0, 0) Log Likelihood 122.067
Date: Tue, 05 May 2020 AIC -234.133
Time: 16:22:10 BIC -219.834
Sample: 04-01-1971 HQIC -228.323
- 04-01-2003
Covariance Type: opg
=================================================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------------------------
const 0.5641 0.171 3.307 0.001 0.230 0.898
drift 0.0017 0.001 3.318 0.001 0.001 0.003
log_biz_machine_investment_L1 -0.1596 0.049 -3.277 0.001 -0.255 -0.064
ar.L1 -0.1696 0.096 -1.769 0.077 -0.357 0.018
sigma2 0.0088 0.001 11.728 0.000 0.007 0.010
===================================================================================
Ljung-Box (Q): 54.55 Jarque-Bera (JB): 51.61
Prob(Q): 0.06 Prob(JB): 0.00
Heteroskedasticity (H): 0.38 Skew: -0.31
Prob(H) (two-sided): 0.00 Kurtosis: 6.03
===================================================================================