Comment tester l'autocorrélation des résidus?


23

J'ai une matrice avec deux colonnes qui ont beaucoup de prix (750). Dans l'image ci-dessous, j'ai tracé les résidus de la régression linéaire suivante:

lm(prices[,1] ~ prices[,2])

En regardant l'image, cela semble être une très forte autocorrélation des résidus.

Cependant, comment puis-je tester si l'autocorrélation de ces résidus est forte? Quelle méthode dois-je utiliser?

Résidus de la régression linéaire

Merci!


8
Vous n'avez pas besoin de tester l'autocorrélation. C'est là. L'intrigue le montre. Vous pouvez regarder la fonction d'autocorrélation de ces résidus (fonction acf()), mais cela confirmera simplement ce qui peut être vu à l'œil nu: les corrélations entre les résidus retardés sont très élevées.
Wolfgang

@ Wolfgang, oui, correct, mais je dois le vérifier par programme .. Je vais jeter un œil à la fonction acf. Merci!
Dail

@ Wolfgang, je vois acf () mais je ne vois pas une sorte de valeur p pour comprendre s'il y a une forte corrélation ou non. Comment interpréter son résultat? Merci
Dail

Avec H0: corrélation (r) = 0, alors r suit une normale / t dist avec une moyenne de 0 et une variance de sqrt (nombre d'observations). Ainsi, vous pouvez obtenir l'intervalle de confiance à 95% en utilisant +/-qt(0.75, numberofobs)/sqrt(numberofobs)
Jim

@Jim La variance de la corrélation n'est pas . L'écart type n'est pas non plusn . Mais il contient unn. nn
Glen_b -Reinstate Monica

Réponses:


17

Il existe probablement de nombreuses façons de procéder, mais la première qui vient à l'esprit est basée sur la régression linéaire. Vous pouvez régresser les résidus consécutifs les uns contre les autres et tester une pente significative. S'il y a auto-corrélation, alors il devrait y avoir une relation linéaire entre les résidus consécutifs. Pour terminer le code que vous avez écrit, vous pouvez faire:

mod = lm(prices[,1] ~ prices[,2])
res = mod$res 
n = length(res) 
mod2 = lm(res[-n] ~ res[-1]) 
summary(mod2)

mod2 est une régression linéaire de l' erreur de temps , ε t , contre l' erreur de temps t - 1 , ε t - 1 . si le coefficient de res [-1] est significatif, vous avez des preuves d'autocorrélation dans les résidus.tεtt1εt1

Remarque: Cela suppose implicitement que les résidus sont autorégressifs en ce sens que seul est important pour prédire ε t . En réalité, il pourrait y avoir des dépendances à plus longue portée. Dans ce cas, cette méthode que j'ai décrite doit être interprétée comme l'approximation autorégressive à un décalage de la véritable structure d'autocorrélation dans ε .εt1εtε


merci beaucoup pour l'exemple. Un seul doute, comment puis-je tester si res [-1] est significatif?
Dail

vous souhaitez tester la même manière que vous le feriez pour tout autre coefficient de régression - regard sur le -statistic et p -valuetp
Macro

faire un test rapide avec: lm (rnorm (1000) ~ jitter (1: 1000)) J'obtiens: Erreur standard résiduelle: 1,006 sur 997 degrés de liberté Multiple R-carré: 0,0003463, R-carré ajusté: -0,0006564 Statistique F : 0,3454 sur 1 et 997 DF, valeur p: 0,5569 la valeur p ne peut pas rejeter l'hypothèse nulle
Dail

Macro, j'ai testé les résidus du graphique que j'ai tracé ci-dessus, et le résultat est: Erreur standard résiduelle: 0,04514 sur 747 degrés de liberté Multiple R-carré: 0,9241, R ajusté au carré: 0,924 Statistique F: 9093 sur 1 et 747 DF, valeur p: <2.2e-16, cela ne semble pas très bon, c'est très étrange car il y a une forte autocorrélation, que puis-je faire?
Dail

3
C'est ce qu'on appelle un test de Breusch-Godfrey pour l'autocorrélation.
Charlie

16

Utilisez le test Durbin-Watson , implémenté dans le package lmtest .

dwtest(prices[,1] ~ prices[,2])

très étrange j'obtiens: p-value <2.2e-16, comment c'est possible? les données semblent très corrélées!
Dail

4
La valeur de p est la probabilité d'obtenir autant de corrélation que celle observée s'il n'y a pas de corrélation réelle. Donc, si le p est très petit, tel qu'il est, cela suggère qu'il y a beaucoup de corrélation dans l'échantillon.
Rob Hyndman

Voulez-vous dire qu'une valeur de p comme celle-ci indique que les résidus sont très autocorrélés?
Dail

hmm étrange, jetez un œil à: imageshack.us/f/59/17671620.png comment est-il possible que la bonne image ne soit pas autocorrélée?
Dail

: dail Il semblerait que l'image de gauche présente un changement structurel de variance (voir l'article de Ruey Tsay "Valeurs aberrantes, changements de niveau et changements de variance dans les séries chronologiques", Journal of Forecasting, VOl 7, 1-20 (1988) pour plus de détails) qui dans ce cas ne "confond" pas le DW peut-être en raison du fait que la distribution entière est toujours normale tandis que l'image de droite a quelques anomalies visuellement évidentes (et empiriquement identifiables) (Impulsions) créant une anomalie non normale (leptokurtotique voir wikopedia: Une distribution avec un excès de kurtosis positif est appelé distribution leptokurtic) qui provoque des ravages avec le DW
IrishStat

11

Le test DW ou le test de régression linéaire ne sont pas robustes aux anomalies dans les données. Si vous avez des impulsions, des impulsions saisonnières, des changements de niveau ou des tendances de l'heure locale, ces tests sont inutiles car ces composants non traités gonflent la variance des erreurs, biaisant ainsi les tests vous obligeant (comme vous l'avez découvert) à accepter incorrectement l'hypothèse nulle de non auto-corrélation. Avant de pouvoir utiliser ces deux tests ou tout autre test paramétrique dont je suis au courant, il faut "prouver" que la moyenne des résidus n'est pas statistiquement significativement différente de 0,0 PARTOUT sinon les hypothèses sous-jacentes ne sont pas valides. Il est bien connu que l'une des contraintes du test DW est son hypothèse selon laquelle les erreurs de régression sont normalement distribuées. A noter entre autres des moyens normalement répartis: pas d'anomalie (voirhttp://homepage.newschool.edu/~canjels/permdw12.pdf ). De plus, le test DW ne teste que l'auto-corrélation du décalage 1. Vos données pourraient avoir un effet hebdomadaire / saisonnier et cela ne serait pas diagnostiqué et, de plus, non traité, biaiserait à la baisse le test DW.


quels sont les tests pour tester que les résidus sont significativement différents de zéro? Si la régression inclut l'interception, la moyenne résiduelle est algébriquement nulle, je suis donc curieux de savoir comment il est possible de contourner ce problème.
mpiktas

: mpkitas Comme vous l'avez dit lorsque vous incluez une constante, la moyenne des erreurs est garantie à 0,0 mais cela ne garantit pas que la moyenne des erreurs est nulle partout. Par exemple, si une série a un changement de moyenne, la moyenne globale sera une constante, mais produira deux "agrégats" de résidus, chacun avec une moyenne différente. Vous pouvez consulter l'article de Ruey Tsay "Valeurs aberrantes, changements de niveau et changements de variance dans les séries chronologiques", Journal of Forecasting, VOl 7, 1-20 (1988) pour plus de détails. OU faculty.chicagobooth.edu/ruey.tsay/teaching/uts/lec10-08.pdf OU Google "détection d'intervention automatique"
IrishStat

1
Il s'agit simplement de l'hypothèse standard "aucune variable omise" implicite dans toutes les analyses de régression.
Charlie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.