def test_autoreg_append_deterministic(append_data): y = append_data.y y_oos = append_data.y_oos y_both = append_data.y_both x = append_data.x x_oos = append_data.x_oos x_both = append_data.x_both terms = [TimeTrend(constant=True, order=1), Seasonality(12)] dp = DeterministicProcess(y.index, additional_terms=terms) res = AutoReg(y, lags=3, trend="n", deterministic=dp).fit() res_append = res.append(y_oos, refit=True) res_direct = AutoReg(y_both, lags=3, trend="n", deterministic=dp.apply(y_both.index)).fit() assert_allclose(res_append.params, res_direct.params) res_np = AutoReg(np.asarray(y), lags=3, trend="n", deterministic=dp).fit() res_append_np = res_np.append(np.asarray(y_oos)) assert_allclose(res_np.params, res_append_np.params) res = AutoReg(y, exog=x, lags=3, trend="n", deterministic=dp).fit() res_append = res.append(y_oos, exog=x_oos, refit=True) res_direct = AutoReg( y_both, exog=x_both, lags=3, trend="n", deterministic=dp.apply(y_both.index), ).fit() assert_allclose(res_append.params, res_direct.params)
def test_autoreg_append(append_data, use_pandas, lags, trend, seasonal): period = 12 if not use_pandas else None y = append_data.y y_oos = append_data.y_oos y_both = append_data.y_both x = append_data.x x_oos = append_data.x_oos x_both = append_data.x_both if not use_pandas: y = np.asarray(y) x = np.asarray(x) y_oos = np.asarray(y_oos) x_oos = np.asarray(x_oos) y_both = np.asarray(y_both) x_both = np.asarray(x_both) res = AutoReg(y, lags=lags, trend=trend, seasonal=seasonal, period=period).fit() res_append = res.append(y_oos, refit=True) res_direct = AutoReg(y_both, lags=lags, trend=trend, seasonal=seasonal, period=period).fit() res_exog = AutoReg(y, exog=x, lags=lags, trend=trend, seasonal=seasonal, period=period).fit() res_exog_append = res_exog.append(y_oos, exog=x_oos, refit=True) res_exog_direct = AutoReg( y_both, exog=x_both, lags=lags, trend=trend, seasonal=seasonal, period=period, ).fit() assert_allclose(res_direct.params, res_append.params) assert_allclose(res_exog_direct.params, res_exog_append.params) if use_pandas: with pytest.raises(TypeError, match="endog must have the same type"): res.append(np.asarray(y_oos)) with pytest.raises(TypeError, match="exog must have the same type"): res_exog.append(y_oos, np.asarray(x_oos)) with pytest.raises(ValueError, match="Original model does"): res.append(y_oos, exog=x_oos) with pytest.raises(ValueError, match="Original model has exog"): res_exog.append(y_oos)