En tant qu'institution financière, nous nous heurtons souvent à l'analyse de données chronologiques. Souvent, nous finissons par faire une régression en utilisant des variables de séries chronologiques. Dans ce cas, nous rencontrons souvent des résidus avec une structure de séries chronologiques qui viole l'hypothèse de base d'erreurs indépendantes dans la régression OLS. Récemment, nous construisons un autre modèle dans lequel je pense que nous avons une régression avec des erreurs autocorrélées.Les résidus du modèle linéaire ont lm(object)
clairement une structure AR (1), comme le montrent ACF et PACF. J'ai pris deux approches différentes, la première était évidemment d'adapter le modèle en utilisant les moindres carrés généralisés gls()
dans R. Mon attente était que les résidus de gls (objet) soient un bruit blanc (erreurs indépendantes). Mais les résidus degls(object)
ont toujours la même structure ARIMA que dans la régression ordinaire. Malheureusement, il y a quelque chose qui ne va pas dans ce que je fais que je n'ai pas pu comprendre. J'ai donc décidé d'ajuster manuellement les coefficients de régression à partir du modèle linéaire (estimations OLS). Étonnamment, cela semble fonctionner lorsque j'ai tracé les résidus de la régression ajustée (les résidus sont du bruit blanc). Je veux vraiment l'utiliser gls()
dans le nlme
package pour que le codage soit beaucoup plus simple et plus facile. Quelle serait l'approche que je devrais adopter ici? Suis-je censé utiliser REML? ou est-ce que mon attente de résidus non corrélés (bruit blanc) provenant d'un objet gls () est fausse?
gls.bk_ai <- gls(PRNP_BK_actINV ~ PRM_BK_INV_ENDING + NPRM_BK_INV_ENDING,
correlation=corARMA(p=1), method='ML', data = fit.cap01A)
gls2.bk_ai <- update(gls.bk_ai, correlation = corARMA(p=2))
gls3.bk_ai <- update(gls.bk_ai, correlation = corARMA(p=3))
gls0.bk_ai <- update(gls.bk_ai, correlation = NULL)
anova(gls.bk_ai, gls2.bk_ai, gls3.bk_ai, gls0.bk_ai)
## looking at the AIC value, gls model with AR(1) will be the best bet
acf2(residuals(gls.bk_ai)) # residuals are not white noise
Y a-t-il un problème avec ce que je fais ???????
predict.arima()
vous donneront une meilleure prédiction quepredict.gls()
.Vous voulez les résidus normalisés. Tu vois
?residuals.lme
.la source