Почему остатки регрессии из регрессионной модели с ошибками ARIMA отличаются от остатков из модели линейной регрессии?
Начнем загрузку пакета fpp3 (https://github.com/robjhyndman/fpp3-package) и набора данных о расходах на потребление в США (https://rdrr.io/cran/fpp3/man/us_change.html)
library(fpp3)
us_change <- readr::read_csv("https://otexts.com/fpp3/extrafiles/us_change.csv") %>%
mutate(Time = yearquarter(Time)) %>%
as_tsibble(index = Time)
Предположим, мы хотим спрогнозировать изменения потребления на основе изменений дохода, поэтому мы используем доход в качестве предиктора.
Начнем с простой модели линейной регрессии
fit_lm <- us_change %>% model(TSLM(Consumption ~ Income))
Типовой отчет:
> report(fit_lm)
Series: Consumption
Model: TSLM
Residuals:
Min 1Q Median 3Q Max
-2.40845 -0.31816 0.02558 0.29978 1.45157
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.54510 0.05569 9.789 < 2e-16 ***
Income 0.28060 0.04744 5.915 1.58e-08 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.6026 on 185 degrees of freedom
Multiple R-squared: 0.159, Adjusted R-squared: 0.1545
F-statistic: 34.98 on 1 and 185 DF, p-value: 1.5774e-08
Образец остатков:
> residuals(fit_lm)
# A tsibble: 187 x 3 [1Q]
# Key: .model [1]
.model Time .resid
<chr> <qtr> <dbl>
1 TSLM(Consumption ~ Income) 1970 Q1 -0.202
2 TSLM(Consumption ~ Income) 1970 Q2 -0.413
3 TSLM(Consumption ~ Income) 1970 Q3 -0.104
4 TSLM(Consumption ~ Income) 1970 Q4 -0.748
5 TSLM(Consumption ~ Income) 1971 Q1 0.795
6 TSLM(Consumption ~ Income) 1971 Q2 -0.0392
7 TSLM(Consumption ~ Income) 1971 Q3 0.100
8 TSLM(Consumption ~ Income) 1971 Q4 0.778
9 TSLM(Consumption ~ Income) 1972 Q1 0.640
10 TSLM(Consumption ~ Income) 1972 Q2 1.06
# ... with 177 more rows
Теперь мы предполагаем, что ошибки из регрессии содержат автокорреляцию, поэтому мы используем модель регрессии с ошибками ARIMA.
fit_reg_arima_errs <- us_change %>% model(ARIMA(Consumption ~ Income))
Типовой отчет:
> report(fit_reg_arima_errs)
Series: Consumption
Model: LM w/ ARIMA(1,0,2) errors
Coefficients:
ar1 ma1 ma2 Income intercept
0.6922 -0.5758 0.1984 0.2028 0.5990
s.e. 0.1159 0.1301 0.0756 0.0461 0.0884
sigma^2 estimated as 0.3219: log likelihood=-156.95
AIC=325.91 AICc=326.37 BIC=345.29
В этом случае у нас есть два типа остатков: остатки из регрессионной модели и остатки из модели ARIMA.
Пример остатков регрессии:
> regression_errors = residuals(fit_reg_arima_errs, type="regression") %>% print()
# A tsibble: 187 x 3 [1Q]
# Key: .model [1]
.model Time .resid
<chr> <qtr> <dbl>
1 ARIMA(Consumption ~ Income) 1970 Q1 0.616
2 ARIMA(Consumption ~ Income) 1970 Q2 0.460
3 ARIMA(Consumption ~ Income) 1970 Q3 0.877
4 ARIMA(Consumption ~ Income) 1970 Q4 -0.274
5 ARIMA(Consumption ~ Income) 1971 Q1 1.90
6 ARIMA(Consumption ~ Income) 1971 Q2 0.912
7 ARIMA(Consumption ~ Income) 1971 Q3 0.795
8 ARIMA(Consumption ~ Income) 1971 Q4 1.65
9 ARIMA(Consumption ~ Income) 1972 Q1 1.31
10 ARIMA(Consumption ~ Income) 1972 Q2 1.89
# ... with 177 more rows
Пример остатков ARIMA:
ARIMA_errors = residuals(fit_reg_arima_errs, type="innovation") %>% print()
# A tsibble: 187 x 3 [1Q]
# Key: .model [1]
.model Time .resid
<chr> <qtr> <dbl>
1 ARIMA(Consumption ~ Income) 1970 Q1 -0.167
2 ARIMA(Consumption ~ Income) 1970 Q2 -0.320
3 ARIMA(Consumption ~ Income) 1970 Q3 0.0720
4 ARIMA(Consumption ~ Income) 1970 Q4 -0.694
5 ARIMA(Consumption ~ Income) 1971 Q1 1.05
6 ARIMA(Consumption ~ Income) 1971 Q2 0.142
7 ARIMA(Consumption ~ Income) 1971 Q3 -0.0525
8 ARIMA(Consumption ~ Income) 1971 Q4 0.695
9 ARIMA(Consumption ~ Income) 1972 Q1 0.469
10 ARIMA(Consumption ~ Income) 1972 Q2 0.788
# ... with 177 more rows
Разве остатки регрессии из этой последней модели не должны быть идентичны (или, по крайней мере, подобны) остаткам из первой модели линейной регрессии?
И почему остатки регрессии от регрессии с ошибками ARIMA совпадают со значениями переменной ответа (Потребление)?
> us_change[,c("Time","Consumption")]
# A tsibble: 187 x 2 [1Q]
Time Consumption
<qtr> <dbl>
1 1970 Q1 0.616
2 1970 Q2 0.460
3 1970 Q3 0.877
4 1970 Q4 -0.274
5 1971 Q1 1.90
6 1971 Q2 0.912
7 1971 Q3 0.795
8 1971 Q4 1.65
9 1972 Q1 1.31
10 1972 Q2 1.89
# ... with 177 more rows
Что мне не хватает?
Пример кода взят из книги "Прогнозирование: принципы и практика. / Гайндман, Робин Джон; Афанасопулос, Джордж". ( http://https//otexts.com/fpp3/)