Définition
L'autocorrélation (ou l'autocovariance) d'une série fait référence au fait que dans une série temporelle ou spatiale, la mesure d'un phénomène à un instant t peut être corrélée aux mesures précédentes (au temps t − 1, t − 2, t − 3, etc.) ou aux mesures suivantes (à t + 1, t + 2, t + 3, ...). Une série autocorrélée est ainsi corrélée à elle-même, avec un décalage (lag) donné.
Voici la définition mathématiques de l'autocovariance et de l'autocorrélation pour une variable Xt de moyenne μ et d'écart-type σ.
Autocovariance de X pour un décalage de k:
Autocorrélation de X pour un décalage de k:
Calcul
Considérons la série suivante:
On peut calculer l'autocorrélation de la série (pour différents décalages k) de la manière suivante:
result_acf=acf(x)
print(data.frame(result_acf$lag,result_acf$acf)[1:10,])
## result_acf.lag result_acf.acf
## 1 0 1.000000000
## 2 1 -0.058671812
## 3 2 -0.070941755
## 4 3 0.834912500
## 5 4 -0.003573716
## 6 5 -0.094295738
## 7 6 0.701497697
## 8 7 0.027054973
## 9 8 -0.143765876
## 10 9 0.585117703
Le graphique ainsi obtenu est un corrélogramme.
L'autocorrélation est particulièrement forte pour les décalages 3, 6, et 9. (Et 0, mais ça ne signifie rien: l'autocorrélation de la série avec elle-même -sans décalage- est forcément de 1!).
Vérifions ci-après que la série est très corrélée avec elle-même pour un décalage de 3:
plot ( 1:length(x), x,type="l")
points((1:length(x))-3,x,type="l",col="red")
On peut retrouver les résultats de la fonction acf
à la main (par exemple, ici, pour un décalage k = 3), de la manière suivante:
n=100
k=3
mu_estim=mean(x)
sigma_estim=sd(x)
x1=x[(k+1): 100 ]
x2=x[ 1 :(100-k)]
gamma_k3=mean((x1-mu_estim)*(x2-mu_estim))*((n-k)/(n))
rho_k3=gamma_k3/(sigma_estim^2)
# résultat obtenu "à la main":
print(rho_k3)
## [1] 0.8265634
# résultat obtenu via l'utilisation de la fonction acf:
result_acf_k3=result_acf$acf[which(result_acf$lag==3)]
print(result_acf_k3)
## [1] 0.8349125
Significativité
La droite horizontale pointillée sur le graphique issu de la fonction "acf" nous indique le seuil critique au-delà duquel l'autocorrélation est considérée significative.
En effet, sous hypothèse d'indépendance, la corrélation croisée de deux séries X et Y (de même taille n, et de même moyenne et écart-type) sera dans 95% des cas comprise dans l'intervalle
On peut le vérifier comme suit:
n=100
mu=mu_estim
sigma=sigma_estim
gamma=rep(NA,1000)
for (i in 1:1000){
x1=rnorm(n,mu,sigma)
x2=rnorm(n,mu,sigma)
gamma[i]=mean((x1-mu)*(x2-mu))/(sigma^2)
}
# quantiles d'ordre 2.5% et 97.5% de gamma (x et y sont indépendants):
quantile(gamma,c(0.025,0.975))
## 2.5% 97.5%
## -0.2073450 0.1881062
# valeur critique proposées par la fonction acf:
print(1.96/sqrt(n))
## [1] 0.196
Autocorrélation partielle
Observons à nouveau le corrélogramme. On a une forte autocorrélation pour un décalage de 3, de 6, de 9... Or l'autocorrélation pour le décalage de 6 et 9 pourrait très bien être une conséquence de celle existant pour le décalage de 3.
L'autocorrélation partielle permet de mesurer l'autocorrélation d'un signal pour un décalage k "indépendamment" des autocorrélations pour les décalages inférieurs.
result_pacf=pacf(x)
print(data.frame(result_pacf$lag,result_pacf$acf)[1:10,])
## result_pacf.lag result_pacf.acf
## 1 1 -0.058671812
## 2 2 -0.074641079
## 3 3 0.833557643
## 4 4 0.147011978
## 5 5 -0.037987995
## 6 6 0.009651406
## 7 7 -0.024764942
## 8 8 -0.134581704
## 9 9 -0.034975492
## 10 10 0.094532964
On vérifie ici que les autocorrélations observées aux décalages 6 et 9 étaient un effet résiduel de l'autocorrélation pour un décalage de 3.
Références
Pour plus de renseignements sur l'autocorrélation et (au sens très large) sur l'analyse de séries temporelles, vous pouvez vous référer à Cowpertwait and Metcalfe (2009) et Venables and Ripley (2002).
Cowpertwait, Paul S. P, and Andrew V Metcalfe. 2009. Introductory Time Series with R. New York: Springer-Verlag. http://dx.doi.org/10.1007/978-0-387-88698-5.
Venables, W. N, and Brian D Ripley. 2002. Modern Applied Statistics with S. New York: Springer. http://www.myilibrary.com?id=18937.
36 Comments
Kenza
Bonjour,
Cela fait presque 15 jours que je cherche des explications claires sur l'auto corrélation et je peux vous dire qu'en lisant votre article je viens enfin de comprendre.
Merci énormément
lvaudor
Merci à vous ! 🙂
yanis
La droite "horizontale" pointillée... Pas verticale. merci pour le cours.
lvaudor
Ah oui! C'est corrigé... Merci!
danielle
merci beaucoup
Dannie
J'ai enfin compris la signifiication de l'autocorrélation partielle merci! C'est clairement expliqué.
Nicolas
Votre article est d'une limpidité bluffante, merci !
lvaudor
🙂
Samuel
Enfin, je trouve une explication claire, Merci
Cyril
Vraiment excellent !
lvaudor
🙂
mustang
ca fait de longues journées en train de chercher a comprendre lcoeifficent d'autocorrealation et leur significativité, maintenant je vous remercie vivement j'ai bien compris ceci
John
Franchement votre site est un véritable joyau. Merci beaucoup
lvaudor
Merci beaucoup!! 🙂
Mr D
Enfin une explication claire, grand merci ! 🙂
amina
merci infiniment c'est trés clair pour moi maintenant
valérie
Bonjour,
je vous remercie, effectivement votre site est excellent, pourriez-vous présenter la crosscorrélation de la même manière, s'il vous plait.
stephane reyes
super merci.
Leila Chaabane
Très clair bravo!
lynda
Très clair bravo, mais ma question comment déterminer la distance d'autocorrélation.
lvaudor
Bonjour,
A priori, je pense que le terme de "distance d'autocorrélation" doit correspondre à la distance (ou décalage, ou lag) au-delà de laquelle il n'y a pas d'autocorrélation...
ahmed
et le cas spatial?
Charles
Bonjour,
Tout d'abord merci pour votre cours. Cependant il me reste une petite question en lisant la fin de ce cours afin de créer des modèles de séries temporelles.
"On vérifie ici que les autocorrélations observées aux décalages 6 et 9 étaient un effet résiduel de l'autocorrélation pour un décalage de 3."
Ok ce sont des effets résiduel, mais du coup que dois t'on faire, comment traite on cette information, et comment détermine t'on les paramètres (p,d,q) d'un modèle ARIMA suite à ces acf ?
Encore merci pour la clarté du cours !
Issa
J'aime. Merci
Armand
Merci pour la clarté des explications !
Nloga
Merci pour la simplicité et la clarté de la présentation.
Marc
un grand merci pour cette page très claire et pédagogique - j'y ai trouvé les explications nécessaires pour une application aux turbulences de vent / éolien.
Fabs
Merci pour cette page ! J'ai une question : si nous avons des données multivariées et temporelles (par exemple, la température et le vent en fonction du temps), peut-on appliquer l'autocorrelation ? Je veux voir s'il y a une corrélation entre les différents pas de temps mais en prenant en compte la température ET le vent. Merci par avance
lvaudor
Bonjour!
J'ai l'impression que vous parlez alors de corrélation (entre température et vent) plutôt que d'autocorrélation? Dans ce cas, si la corrélation entre les deux n'a pas de "lag" vous pouvez appliquer des techniques de régression classique (linéaire ou non) entre température et vent. Vous pourriez également vous intéresser aux transformées d'ondelettes (type XWT) qui permettent d'analyser les corrélations entre deux signaux, y compris quand cette corrélation n'est pas la même selon les échelles temporelles, et y compris quand cette corrélation a un "lag". C'est un très vaste sujet, mais j'ai fait quelques supports, et notamment un outil en ligne qui aide à faire ce genre de traitements. Vous pouvez trouver des renseignements ici: http://perso.ens-lyon.fr/lise.vaudor/tuto-ondelettes/.
MPE
Bonjour, synopsis théorique très clairs, mille mercis ! Cependant, (je suis en autoformation sur l'analyse des séries temp.) et cas singulier, je suis non-voyant. Dans ce contexte, je passe un peu à côté de la partie "graphée" de votre présentation (de même que je passe à côté de tous les ouvrages papier). Pourriez-vous me consacrer le temps d'un échange en privé pour confirmer les représentations que je dois me faire et garder à l'esprit ?
Moi
Votre blog est toujours un phare dans la nuit 🙂
Aurélie
Après beaucoup d'errance, je suis enfin tombée sur un article qui explique très clairement les choses. Un grand merci à vous !
Hana
Très contente de tomber sur vos explications. Je vous remercie énormément. ça m'a énormément à comprendre l'autocorrélation après des mois de recherche. Mille fois merci!
Edouard Dangbenon
Merci pour l'explication du seuil critique de la fonction d'auto-corrélation croisée.
W. KERKENI
Merci pour ce cours.
Sinon je veux bien savoir comment identifier exactement le p et q du modèle ARMA à partir des courbes ACF et PACF?
Rr
Merci, Tres clair