Dopasowanie wielokrotnej regresji liniowej w R: reszty autokorelowane

11

Próbuję oszacować wielokrotną regresję liniową w R za pomocą następującego równania:

regr <- lm(rate ~ constant + askings + questions + 0)

pytania i pytania są kwartalnymi szeregami czasowymi danych, zbudowanymi z askings <- ts(...).

Problem polega na tym, że otrzymałem resztki autokorelowane. Wiem, że można dopasować regresję za pomocą funkcji gls, ale nie wiem, jak zidentyfikować prawidłową strukturę błędów AR lub ARMA, którą muszę zaimplementować w funkcji gls.

Spróbuję teraz oszacować ponownie,

gls(rate ~ constant + askings + questions + 0, correlation=corARMA(p=?,q=?))

ale niestety nie jestem ekspertem od R ani ekspertem statystycznym w ogóle, aby zidentyfikować p i q.

Byłbym zadowolony, gdyby ktoś mógł dać mi przydatną wskazówkę. Z góry bardzo dziękuję!

Jo

Jo Schuster
źródło

Odpowiedzi:

8

Próbować

library(forecast)
fit <- auto.arima(rate, xreg=cbind(askings,questions))

Będzie to pasowało do modelu liniowego, podobnie jak automatycznie zidentyfikuje strukturę ARiMR dla błędów. Używa MLE zamiast GLS, ale są one asymptotycznie równoważne.

Rob Hyndman
źródło
To jest bardzo pomocne.
Olga Mu
3

Jeśli Twoim celem jest przewidywanie, możesz dopasować zakres modeli do parametrów:

expand.grid(p = 1:P, q = 1:Q)

gdzie Pi Qsą maksymalnymi warunkami AR (p) i MA (q), które chcesz uwzględnić, i wybierz model najlepiej dopasowany, określony przez BIC.

auto.arima()w opakowaniu prognoza będzie w tym pomóc, ale może to być kodowane przy użyciu łatwo ręcznie expand.grid()i pętla, a arima()funkcja, która pochodzi z R.

Powyższe dotyczy resztek gls()z bez correlationstruktury.

Możesz również zrobić to wszystko ręcznie bezpośrednio, gls()po prostu dopasowując wiele modeli do kombinacji pi qwbudowanej AIC()funkcji.

Można również wykreślić ACF ( acf()) i częściowy ACF ( pacf()) reszt z modelu liniowego bez struktury korelacji i użyć ich do zasugerowania wymaganej kolejności modelu.

Przywróć Monikę - G. Simpson
źródło