II-‐ Autocorréla-on Spa-ale
Généralités
• Lorsqu’on étudie une variable géoréférencée , ce qui se passe dans une localisation particulière dépend de ce qui se passe dans d’autres localisations. Ces interactions sont d’autant plus fortes que les localisations concernées sont plus proches.
• Autocorrélation spatiale= corrélation d’une variable géoréférencée avec elle-même.
Permet de
mesurer le degré de ressemblance entre observa-ons voisines
• L’ Autocorrélation spatiale peut être:
– Positive: les valeurs de la variable dans des lieux proches se ressemblent et dans des lieux éloignés sont dissemblables – Négative dans le cas contraire (phénomène d’évitement)
Y(s),s∈S
{ }
Généralités
Généralités
• Dans la suite du cours, on s’intéresse à des données laticielles : S est discret fixé à n points (par exemple, S est un ensemble de zones géographiques)
• On note (y1,…yn) les données dont on dispose sur le phénomène Y sur les n points de S. On considère qu’il s’agit d’une réalisation du vecteur aléatoire .
• On étudie la loi de
Y(s),s∈S
{ }
Y(s),s∈S
{ }
Généralités
• Exemple : données sids du package spdep (mort subite du nourrisson en caroline du nord)
ü Données de type "Spa-alPolygonsDataFrame" . Ce type d’objet peut contenir à la fois des données de localisa-ons géographiques et des données classiques sous la forme d’un tableau de données. Les localisa-ons sont repérées par le couple longitude-‐la-tude et u-lisent ici la référence NAD27.
nc_file=system.file("etc/shapes/sids.shp", package="spdep")[1]
llCRS=CRS("+proj=longlat +datum=NAD27")
nc.sids = readShapeSpa-al(nc_file, ID="FIPSNO", proj4string=llCRS)
ü Le format .shp présuppose qu’on a 3 fichiers : *.shp, *.shx, and *.dbf, Le premier con-ent les données géométriques (cartographie), le deuxième les index des enregistrements du
fichier .shp, le troisième les a_ributs. Les centres des régions sont accessible avec la fonc-on coordinates(), et peuvent être u-lisées pour placer des labels sur la carte.
Généralités
Contenu de nc.sids : SP_ID : Spa-alPolygons ID CNTY_ID : county ID
east : eas-ngs, county seat, miles, local projec-on north : northings, county seat, miles, local projec-on L_id : Cressie and Read (1985) L index
M_id : Cressie and Read (1985) M index names : County names
AREA : County polygon areas in degree units
PERIMETER : County polygon perimeters in degree units
CNTY_ : Internal county ID NAME : County names FIPS : County ID
FIPSNO : County ID
CRESS_ID : Cressie papers ID BIR74 : births, 1974-‐78 SID74 : SID deaths, 1974-‐78
NWBIR74 : non-‐white births, 1974-‐78 BIR79 : births, 1979-‐84
SID79 : SID deaths, 1979-‐84
NWBIR79 : non-‐white births, 1979-‐84
names(nc.sids)
[1] "SP_ID" "CNTY_ID" "east" "north"
"L_id" "M_id" "names" "AREA"
"PERIMETER" "CNTY_" "NAME" "FIPS"
"FIPSNO" "CRESS_ID" "BIR74"
[16] "SID74" "NWBIR74" "BIR79" "SID79"
"NWBIR79"
Généralités
Contours des unités géographiques (comtés)
plot(nc.sids, axes=TRUE)
text(coordinates(nc.sids), label=nc.sids$FIPSNO, cex=0.5) -tle("Fron-ères des comtés, Caroline du nord")
84°W 82°W 80°W 78°W 76°W
32°N33°N34°N35°N36°N37°N38°N
37001 37003
37005
37007 37009
37011
37013 37015
37017
37019 37021
37023
37025 37027
37029
37031 37033
37035 37037
37039
37041
37043
37045
37047
37049 37051
37053
37055 37057
37059
37061 37063
37065
37067 37069
37071
37073
37075
37077
37079 37081
37083
37085 37087
37089
37091
37093
37095 37097
37099
37101
37103 37105
37107 37109
37111
37113
37115 37117
37119 37121
3712337125
37127
37129 37131
37133 37135
37137 37139
37141
37143 37145
37147 37149
37151
37153 37155 37157
37159 37161
37163 37165
37167 37169 37171
37173 37175
37177
37179
37181
37183 37185
37187 37189
37191 37193
37195 37197
37199
Frontières des comtés, Caroline du nord
Généralités
• Les différentes étapes d’une étude de l’autocorréla@on spa@ale
ü Choix d’un critère de voisinage : Déterminer les aires liées entre elles (dépend de la connaissance du problème étudié)
ü Choix d’ une matrice de poids : Assigner des poids aux aires qui sont liées
ü Mise en oeuvre de tests sta-s-ques en u-lisant ce_e matrice de poids, pour examiner l’autocorréla-on spa-ale.
No-on de voisinage
• Généralités
ü Pour mesurer la ressemblance entre lieux proches, il faut définir une no-on de voisinage entre localisa-ons ́de S.
ü On peut définir différentes no-ons de voisinage, selon l’idée que l’on se fait du problème étudié, qui impacteront le résultat des analyses de l’autocorréla-on.
ü Un type donné de voisinage pourra être représenté par un graphe, appelé graphe de voisinage : à chaque observa-on spa-ale (zone géographique par ex ), on
associe un nœud du graphe (centre de la zone). Les nœuds correspondant à deux zones voisines sont reliés par un arc.
No-on de voisinage
Exemple : Ajout du système de voisinage aux données nc.sids (voisinage proposé par Cressie et Chan (1989), stocké dans le fichier ncCC89.gal)
• Créa-on de l’objet ncCC89 de classe neigborhood gal_file=system.file("etc/weights/ncCC89.gal",
package="spdep")[1]
ncCC89=read.gal(gal_file, region.id=nc.sids$FIPSNO)
Les systèmes de voisinage sont généralements stockés dans des fichiers .gal lus sous R avec la fonc-on
read.gal().
L’objet ainsi crée est un objet de classe
« nb » (neigborhood). Il s’agit d’une liste de listes, une pour chaque observa-on, contenant une liste de voisins et d’autres informa-ons, comme l’iden-fiant de la région.
Contenu résumé de l’objet ncCC89 est un objet de classe “nb”
summary(ncCC89)
Neighbour list object:
Number of regions: 100 Number of nonzero links: 394 Percentage nonzero weights: 3.94 Average number of links: 3.94 2 regions with no links:
37055 37095
Link number distribu-on:
0 1 2 3 4 5 6 7 8 2 3 14 18 28 21 7 6 1 3 least connected regions:
37019 37031 37133 with 1 link 1 most connected region:
37041 with 8 links
No-on de voisinage
Créa@on du graphe de voisinage
plot(nc.sids, border="grey")
plot(ncCC89, coordinates(nc.sids), add=TRUE, col="blue")
No-on de voisinage
• Les différentes no@ons de voisinage v Con@güité
ü No-on fréquemment u-lisée lorsque les données portent sur des zones géographiques.
ü Distance de con-güité entre deux zones = nombre minimal de fron-ères qu’il faut franchir pour aller de l’intérieur de l’une à l’intérieur de l’autre.
ü La no-on de con-güité repose sur celle de fron-ère partagée
q Deux zones sont dites con-gües à l’ordre k (lag k) si leur distance de con-güité est égale à k (analogue spa-al de la défini-on des retards (lag) en séries temporelles)
q CP: deux zones sont dites con-gües (à l’ordre 1) si elles ont une fron-ère commune.
No-on de voisinage
ü Défini-on d’une fron-ère partagée
La zone centrale La zone centrale La zone centrale a 4 voisins dans a 4 voisins dans a 8 voisins dans les direc-ons les direc-ons les direc-ons N-‐S et E-‐O N-‐E/S-‐O et N-‐O/S-‐E N-‐S, E-‐O
N-‐E/S-‐O, N-‐O/S-‐E
2/15/2011
5
Spatial weights matrices
Neighborhoods can be defined in a number of ways
Contiguity (common boundary)
What is a “shared” boundary?
Distance (distance band, K-nearest neighbors)
How many “neighbors” to include, what distance do we use?
General weights (social distance, distance decay)
Common weights measures
Most common is using binary connectivity based on contiguity
wij = 1 if regions i and j are contiguous, wij = 0 otherwise
May also be defined as a function of the distance between i and j
Distance of the line connecting the centroids of two areas
wij = dij-
wij = exp[-dij]
No-on de voisinage
ü Exemple : voisins de 5?
• Voisinage de type « rook » : 2,4,6,8
• Voisinage de type « bishop »: 1,3,7,9
• Voisinage de type « queen » 1,2,3,4,6,7,8,9.
1 2 3
4 5 6
7 8 9
No-on de voisinage
ü Exemple
Créa+on d’un voisinage de type queen sids_nbq=poly2nb(nc.sids) ; sids_nbq Neighbour list object:
Number of regions: 100 Number of nonzero links: 490 Percentage nonzero weights: 4.9 Average number of links: 4.9
Créa+on d’un voisinage de type rook
sids_nbr=poly2nb(nc.sids, queen=FALSE) Sids_nbr
Neighbour list object:
Number of regions: 100
Number of nonzero links: 462 Percentage nonzero weights: 4.62 Average number of links: 4.62
Graphes de voisinage
coords=coordinates(nc.sids) par(mfrow=c(3,1))
plot(nc.sids)
plot(sids_nbq, coords, add=T, col=2) legend("bo_om","queen", text.col=2)
plot(nc.sids)
plot(sids_nbr, coords, add=T, col=3) legend("bo_om","rook", text.col=3)
plot(nc.sids)
plot(sids_nbq, coords, add=T, col=2) plot(sids_nbr, coords, add=T, col=3) legend("bo_om",c("queen","rook"), text.col=c(2,3))
queen
rook
queen rook
No-on de voisinage
Contenu du fichier “nb” créé
summary(sids_nbq) Neighbour list object:
Number of regions: 100
Number of nonzero links: 490 Percentage nonzero weights: 4.9 Average number of links: 4.9 Link number distribu-on:
2 3 4 5 6 7 8 9 8 15 17 23 19 14 2 2 8 least connected regions:
37041 37043 37053 37055 37129 37137 37149 37177 with 2 links 2 most connected regions:
37097 37125 with 9 links
Répar++on des liens de voisinage
qq=table(card(sids_nbq)); qq 2 3 4 5 6 7 8 9
8 15 17 23 19 14 2 2
barplot(qq, col=2,main="répar--on du nombre de liens par région")
2 3 4 5 6 7 8 9
répartition du nombre de liens par région
05101520
No-on de voisinage
v Voisinage basé sur une distance
Nécessite que l’on ait choisi une distance dij entre lieux i et j (euclidienne, ou autre).
ü Méthode des k voisins les plus proches (k-‐nearest neighbors) : On choisit comme voisinage les k voisins les plus proches de l’observa-on i au sens de la distance dij.
ü Méthode des voisins à distance radiale : On chosit comme voisins de i les points j situés à moins d’une distance d:
ü Voisinage global : On choisit l’ensemble de tous les autres points de S comme voisins de i.
2/15/2011
10 Queen
Rook
Distance based neighbors k nearest neighbors
Can also choose the k nearest points as neighbors
> coords<-coordinates(sids_SP)
> IDs<-row.names(as(sids_SP, "data.frame"))
> sids_kn1<-knn2nb(knearneigh(coords, k=1), row.names=IDs)
> sids_kn2<-knn2nb(knearneigh(coords, k=2), row.names=IDs)
> sids_kn4<-knn2nb(knearneigh(coords, k=4), row.names=IDs)
> plot(sids_SP)
> plot(sids_kn2, coords, add=T)
k=1 k=2 k=3
0 ≤dij ≤d
No-on de voisinage
ü Exemple
Créa+on d’un voisinage basé sur les k (=1,2,4) plus proches voisins
IDs=row.names(as(nc.sids, "data.frame")) library(RANN)
sids_kn1=knn2nb(knearneigh(coords, k=1), row.names=IDs)
Neighbour list object:
Number of regions: 100 Number of nonzero links: 100 Percentage nonzero weights: 1 Average number of links: 1 Non-‐symmetric neighbours list
sids_kn2=knn2nb(knearneigh(coords, k=2), row.names=IDs) sids_kn4=knn2nb(knearneigh(coords, k=4), row.names=IDs) par(mfrow=c(3,1))
plot(nc.sids, main="k=1") plot(sids_kn1, coords, add=T) plot(nc.sids, main="k=2") plot(sids_kn2, coords, add=T) plot(nc.sids, main="k=4") plot(sids_kn4, coords, add=T)
2/15/2011
11 k=1
k=2
k=4
Can I do that with point data?
> bost<-read.csv("C:/Users/ERoot/Desktop/R/boston.csv", sep=",", header=T)
> b.coord<-SpatialPoints(bost[,c("LON","LAT")])
> bost2<-SpatialPointsDataFrame(b.coord, bost)
> coord_b<-coordinates(bost2)
> class(coord_b) [1] "matrix"
> bost_k2<-knn2nb(knearneigh(coord_b, k=2, longlat=T))
> plot(as(bost2,"Spatial"),axes=T)
> plot(bost_k2, coord_b, add=T)
> plot(bost2[bost2$CHAS==1,], col="blue", add=TRUE)
Créa+on d’un voisinage à distance radiale
• Fonc-on dnearneigh (): Iden-fie les voisins d’un point par la distance euclidienne entre une borne inférieure et une borne supérieure
• Fonc-on nbdists (): Etant donnée la liste des voisins de chaque point (donnée dans un fichier de voisinage de classe nb, cf sec-on voisinage) retourne les distances euclidiennes entre le point et chaque voisins via une liste de même forme.
nbdists(sids_kn1, coords) [[1]]
[1] 0.2766561 [[2]]
[1] 0.2607982 [[3]]
[1] 0.2914539
…………...
dist=unlist(nbdists(sids_kn1, coords)) summary(dist)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.1197 0.2582 0.2964 0.2910 0.3239 0.4226
sids_kd2=dnearneigh(coords, d1=0, d2=1*max(dist), row.names=IDs)
sont voisins les points à une distance < à max(dist)
No-on de voisinage
• Choix per@nent d’un voisinage :
• Lorsque les zones sont très hétérogènes, les k plus proches voisins ne conviennent pas car les distances entre points peuvent être très dissemblables
• La con-güité est inadaptée à des données portant sur des points : contrairement au cas des zones, la détermina-on de la con-guïté entre deux points n’a guère de sens.
• Il faut choisir une méthode ne laissant pas trop de points isolés
• En réalité, on peut généralement supposer que toutes les observa-ons (et pas seulement celles qui sont les plus proches les unes des autres) interagissent les unes avec les autres, même si leur ac-on s’amoindrit avec la distance. Considérer que le voisinage est S en-er est donc per-nent lorsque S n’est pas trop grand.
Matrice de poids
• Généralités
ü Une matrice de poids permet de quan-fier les rela-ons de voisinage entre points i.e. d’affecter un poids à chaque voisin. Sa structure dépend de la no-on de
voisinage choisie
ü Différents types de matrice de poids selon le voisinage choisi:
v Matrices binaires: Matrice de con-guité, Matrice de distance radiale, Matrice basée sur les k plus proches voisins,…
v Matrice de poids générales: lorsque le voisinage est S tout en-er. Elles sont généralement basées sur une distance.
Matrice de poids
• Forme générale d’une matrice de poids n= nombre de localisa-ons.
ü wij est d’autant plus élevé que j a une influence importante sur i.
ü Généralement la matrice est standardisée en ligne :
W =
0 ... w1i ... w1j ... w1n
... 0 ... ... ... ... ...
wi1 ... 0 ... wij ... win
... ... ... 0 ... ... ...
wj1 ... wji ... 0 ... wjn
... ... ... ... ... 0 ...
wn1 ... wni ... wnj ... 0
!
"
#
##
##
##
##
##
$
%
&
&
&
&
&
&
&
&
&
&&
wij =1
j=1 n
∑
Matrice de poids
v Propriétés :
ü Les matrices de poids sont souvent standardisées en ligne, en par-culier lorsqu’elles sont binaires.
-‐ Permet de créer des poids propor-onnels dans le cas où les aires n’ont pas le même nombre de voisins : Une matrice de poids non standardisée fait varier l’influence des observa-ons. Les zones ayant beaucoup de voisins sont sur-‐ pondérées en comparaison avec celles qui en ont peu.
-‐ Facilite les calculs des sta-s-ques de tests et permet de comparer les résultats obtenus avec différentes matrices de poids
ü Les matrices de poids peuvent être ou non symétriques (la non symétrie est approprié lorsque les rela-ons étudiées sont des rela-ons de diffusion ou des rela-ons de type centre -‐ périphérie).
Matrice de poids
• Les différents types de matrices de poids v Matrices binaires
² Matrice de con-guité :
Con-guité au sens d’une défini-on donnée de la fron-ère commune (rook, queen, bishop).
ü Le nombre de régions con-gues à i est alors
ü Une matrice de con-guité est généralement symétrique
W =(wij), wij = 0 si i et j ne sont pas contigus 1 si i et j sont contigus
!
"
#
$#
Li = wij
j=1 n
∑
Matrice de poids
² Matrice de distance radiale
ü généralement symétrique
² Matrice basée sur les k-‐plus proches voisins : Soit L’ensemble des k voisins les plus proches de i.
ü généralement pas symétrique
W =(wij), wij = 1 si 0≤dij ≤ d 0 si dij >d
"
#$
%$
Nk(i)
W =(wij), wij = 1 si j∈ Nk(i) 0 sinon
"
#$
%$
Matrice de poids
v Matrices de distances générales
² Distance puissance
² Distance exponen-elle
² Autres distances :
Ex: Les poids reflètent l’appartenance de deux individus à la même catégorie sociale.
où yi et yj sont des observa-ons sur des caractéris-ques socio-‐économiques per-nentes (revenu par tête , % de la popula-on dans un groupe racial ou ethnique,…).
W =(wij), wij =exp(−βdij), β >0 W =(wij), wij =dij−β, β >0
W =(wij), wij = 1 yi −yj
Matrice de poids
v Exemple de calcul d’une matrice de poids
2/15/2011
15
Binary weights
> sids_nbq_wb<-
nb2listw(sids_nbq, style="B")
> sids_nbq_wb
Characteristics of weights list:
Neighbour list object:
Number of regions: 100
Number of nonzero links: 490 Percentage nonzero weights: 4.9 Average number of links: 4.9
Weights style: B
Weights constants summary:
n nn S0 S1 S2 B 100 10000 490 980 10696
Row-standardised weights increase the influence of links from observations with few neighbours
Binary weights vary the influence of observations
Those with many
neighbours are up-weighted compared to those with few
Binary vs. row-standardized
A binary weights matrix looks like:
Observation 1 has neighbor 2
Observation 2 has neighbors 3 and 4
Observation 3 has neighbors 1 and 2
Observation 4 has neighbor 2, 3 and 4
A row-standardized matrix it looks like:
0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1
0 1 0 0 0 0 .5 .5 .5 .5 0 0 0 .33 .33 .33
Matrice de poids
v Créa@on d’une matrice de poids avec R:
nb2listw(neighbours, glist=NULL, style="W", zero.policy=FALSE)
ü Arguments:
• neighbours: un objet de classe ’nb’ (voisinage)
• glist: liste de poids généraux correspondant aux voisins
• style: peut prendre les valeurs W, B, C, U, and S (W si l’on veut une matrice standardisée, B si l’on veut une matrice binaire, le défaut est W)
• zero.policy: si FALSE, arrête avec un message d’erreur dès qu’il y a un point sans voisins.
Si TRUE permetde prendre en compte les points isolés (sans voisin).
ü Renvoie un objet de classe listw, comprenant:
• style : le style
• neighbours: la liste des voisins de chaque localisa-on
• weights : la liste des poids des voisins de chaque localisa-on
Matrice de poids
v Exemples :
ü Créa+on d’une matrice de con+guité standardisée (type queen)
sids_nbq_w=nb2listw(sids_nbq)
Characteris-cs of weights list:
Neighbour list object:
Number of regions: 100 Number of nonzero links: 490 Percentage nonzero weights: 4.9 Average number of links: 4.9 Weights style: W
Weights constants summary:
N nn S0 S1 S2 W 100 10000 100 44.65023 410.4746
nn, S0, S1 and S2 (cf précédemment) sont plusieurs indicateurs calculés sur la matrice des poids et u-lisés dans le calcul des sta-s-ques d’autocorréla-ons spa-ales (cf après)
Matrice de poids
ü Créa+on d’une matrice de con+guité non standardisée (type queen)
sids_nbq_wb= nb2listw(sids_nbq, style="B") sids_nbq_wb$weights
[[1]]
[1] 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
[[2]]
[1] 0.25 0.25 0.25 0.25 [[3]]
[1] 0.3333333 0.3333333 0.3333333 [[4]]
[1] 0.25 0.25 0.25 0.25 [[5]]
[1] 0.3333333 0.3333333 0.3333333
………
Chaque sous-‐liste correspond à une localisa-on et ses poids en ligne
Créa+on d’une matrice des deux plus proches voisins non standardisée
sids_kn2_w= nb2listw(sids_kn2, style="B")
sids_kn2_w$neig Neighbour list object:
Number of regions: 100
Number of nonzero links: 200 Percentage nonzero weights: 2 Average number of links: 2 Non-‐symmetric neighbours list
Matrice de poids
ü Créa+on d’une matrice de distance radiale
sids_kd2_w=nb2listw(sids_kd2, style="B") sids_kd2_w$weight
[[1]]
[1] 1 1 1 1 [[2]]
[1] 1 1 1 1 [[3]]
[1] 1 1 [[4]]
[1] 1 1 1
Matrice de poids
• Variable décalée (lag) :
ü La i° variable décalée mesure de l’effet global sur la i° observa-on des autres
points de l’espace ; Si W est une matrice de poids et Y = (Y1, ..., Yn)’ est le vecteur colonne des n observa-ons de la variable spa-alisée Y(s), la i° variable décalée vaut:
On note dans la suite
ü Lorsque la matrice de poids W est une matrice standardisée, la i°variable spa-ale décalée con-ent la moyenne pondérée des valeurs prises par Y sur les régions voisines à la région i. De plus, et
zi =(WY)i = wijYj
j=1 n
∑
S0 = wij
i=1,i≠j n i=1
∑
n
∑
wi.= wijj=1 n
∑
S1=1
2 (wij
i=j n i=1
∑
n
∑
+wji)2 S2 =(
wi.+w.i)
i=1 n
∑
z = 1 n zi
i=1 n
∑
=n1 wijYji=1 n j=1
∑
n
∑
= 1n Yjj=1 n
∑
= y S0 =nMatrice de poids
• jj
Le modèle CAR stationnaire
Exemple de construction de W
On définit pour tout i un facteur de pondération tel que wij est grand lorsque i est proche de j.
Exemple : Voisinage "tour" d’ordre 1 :
1 2 3
4 5 6
7 8 9
w51 = w53 = w57 = w59 = 0 w52 = w54 = w56 = w58 = 1/4. Donc
z5 = 1
4(Y2 + Y4 + Y6 + Y8) z1 = 1
2(Y2 + Y4)
Matrice de poids
ü Créa-on de la variable SID décalée pour chaque lieu avec matrice de con-guité queen standardisée
wy=lag.listw(sids_nbq_w, nc.sids$SID79)
[1] 11.000000 10.500000 4.333333 7.750000 3.666667 6.400000 5.166667 5.200000
21.400000 9.666667 5.142857 10.142857 12.800000 7.666667 2.666667 14.333333 6.500000 9.833333
[19] 12.875000 1.333333 1.000000 2.000000 15.400000 10.000000 6.000000 9.333333 1.500000 1.000000 13.428571 8.000000
Tests d’autocorréla-on spa-ale
• Les différents tests mesurant l’autocorréla@on spa@ale :
ü Tests pour variables qualita-ves: test de couleur des cartes
ü Tests globaux d’autocorréla-on spa-ale : les valeurs sont-‐elles globalement (sur l’ensemble du site) posi-vement (néga-vement) corrélées?
Deux indices principaux : I de Moran et C de Geary. I préféré à C, en raison d’une stabilité générale plus grande.
ü Tests locaux d’associa-on spa-ale (LISA): La valeur observée en i est-‐elle associée posi-vement aux valeurs des localisa-ons voisines (ressemblances) ou
néga-vement (dissemblance)?
Indices LISA : Décomposent l’indice global de façon à iden-fier la contribu-on individuelle de chaque lieu. Perme_ent de détecter les poches locales d’autocorréla-on spa-ale
Tests d’autocorréla-on spa-ale
• Tests globaux d’autocorréla@on spa@ale : On veut tester :
H0 : independance entre les valeurs de Y prises sur les différentes localisa-ons (spa-al randomness)
contre H1 : associa-on
ü associa+on posi+ve : les valeurs de Y proches ont tendance à être regroupées dans l’espace (agréga-on)
ü associa+on néga+ve : les voisins tendent à être dissemblables (structure en damier)
RQ : Les résultats de ces tests dépendent du choix de la matrice W
Tests d’autocorréla-on spa-ale
v I de Moran (1950)
ü Sta-s-que la plus classique d’associa-on spa-ale, analogue au Durbin-‐Watson de séries temporelles
• I a des valeurs comprises entre -‐1 et 1
• I est d’autant plus grand que des valeurs semblables tendent à se regrouper dans des lieux proches (a_rac-on)
• I est d’autant plus pe-t que des valeurs dissemblables tendent à se regrouper dans des lieux proches (répulsion)
• Lorsque I est proche de 0, la répar--on des valeurs de Y se fait au hasard : il y a absence de corréla-on spa-ale.
AVen@on : le I de Moran dépend du choix de la matrice W et peut être affecté par le niveau d’aggréga-on (effet d’échelle) ainsi que par la forme des unités spa-ales
I =
n w
ij( y
i− y )( y
j− y )
j=1 n i=1
∑
n
∑
S
0( y
i− y )
2i=1 n
∑
2/15/2011
18
Moran’s I
Classic/best measure of spatial autocorrelation
Depends upon definition of neighboring unit via the spatial weights matrix
Typically ranges from -1 to 1
Like regression, it has a few assumptions
Regional x/y values all come from normal distributions w/same mean and variance for each region
Randomly rearrange the data on map and compute I many times, would have a normal distribution
Why? Because we use the normal distribution to calculate the p-value
Moran’s I
n = number of regions
wij = measure of spatial proximity between region i and j
j i
ij n
i i n
i n
j i
j i
ij
w y
y
y y y y w n
I
1
2 1
) (
) )(
(
Product of the deviation from the mean for all pairs of adjacent regions (wij=1)
Sum of the weights (count of all adjacent pairs) Essentially a measure of
variance across the regions
2/15/2011
18
Moran’s I
Classic/best measure of spatial autocorrelation
Depends upon definition of neighboring unit via the spatial weights matrix
Typically ranges from -1 to 1
Like regression, it has a few assumptions
Regional x/y values all come from normal distributions w/same mean and variance for each region
Randomly rearrange the data on map and compute I many times, would have a normal distribution
Why? Because we use the normal distribution to calculate the p-value
Moran’s I
n = number of regions
wij = measure of spatial proximity between region i and j
j i
ij n
i i n
i n
j i
j i
ij
w y
y
y y y y w n
I
1
2 1
) (
) )(
(
Product of the deviation from the mean for all pairs of adjacent regions (wij=1)
Sum of the weights (count of all adjacent pairs) Essentially a measure of
variance across the regions
2/15/2011
18
Moran’s I
Classic/best measure of spatial autocorrelation
Depends upon definition of neighboring unit via the spatial weights matrix
Typically ranges from -1 to 1
Like regression, it has a few assumptions
Regional x/y values all come from normal distributions w/same mean and variance for each region
Randomly rearrange the data on map and compute I many times, would have a normal distribution
Why? Because we use the normal distribution to calculate the p-value
Moran’s I
n = number of regions
wij = measure of spatial proximity between region i and j
j i
ij n
i i n
i n
j i
j i
ij
w y
y
y y y y w n
I
1
2 1
) (
) )(
(
Product of the deviation from the mean for all pairs of adjacent regions (wij=1)
Sum of the weights (count of all adjacent pairs) Essentially a measure of
variance across the regions
Tests d’autocorréla-on spa-ale
ü Loi de la sta-s-que de test sous H0 sous l’hypothèse de normalité (N)
q (N): on suppose que les observa-ons (y1,..yn) sont des réalisa-ons d’un vecteur gaussien à composantes i.i.d sous H0.
avec
Z = I −EN(I)
VN(I) → N(0,1) sous H0
EN(I)=− 1 n−1
VN(I)= n2S1−nS2 +3S02
S02(n2 −1) −EN2(I)
Tests d’autocorréla-on spa-ale
ü Loi de la sta-s-que de test sous H0 sous Hypothèse de Randomisa9on (R)
q (R): Lorsqu’on répar-t plusieurs fois les données au hasard sur la carte
(permuta-on des lieux) et qu’on calcule I à chaque fois, la répar--on des valeurs I obtenues est à peu près gaussienne.
Z = I −ER(I)
VR(I) → N(0,1) sous H0
ER(I)=− 1 n−1
VN(I)= n
(
(n2−3n+3)S1−nS2 +3S02)
−K(
(n2 −n)S1−2nS2+6S02)
S02(n−1)(n−2)(n−3) −ER2(I)
K =
n (yi − y)4
i=1 n
∑
(yi − y)2
i=1 n
#
∑
$%% &
'((
2
Tests d’autocorréla-on spa-ale
ü Loi de la sta-s-que de test sous H0 en l’absence d’hypothèse sur la distribu@on de I
q Si on a un doute sur N ou R, on simule la loi de I par Bootstrap pour es-mer la p-‐
value.
Algorithme :
1) On calcule I.
2) On exécute B fois la tâche suivante : On permute aléatoirement les observa-ons et on recalcule I : on ob-ent un ensemble de B valeurs de l’indice de Moran
3) La p-‐value du test est le pourcentage de valeurs générées supérieures à I :
(I1,...,IB)
Nombre de b / Ib > I B
Tests d’autocorréla-on spa-ale
ü Exemples
Test de Moran avec hypothèse N :
moran.test(nc.sids$SID79, listw=sids_nbq_w, alterna-ve="two.sided", randomisa-on=FALSE)
Moran's I test under normality
data: nc.sids$SID79
weights: sids_nbq_w
Moran I sta-s-c standard deviate = 2.5927, p-‐value = 0.009524 alterna-ve hypothesis: two.sided
sample es-mates:
Moran I sta-s-c Expecta-on Variance 0.158977893 -‐0.010101010 0.004252954
Conclusion : on reje_e H0 : il existe une autocorréla-on spa-ale globale, qui est posi-ve (signe de l’indice)
Pour un test à 5%, on reje_e H0 dès que p-‐value<5%
Ecart-‐type de la sta-s-que de moran sous H0 lorsque (N) vraie Valeur de I
EN(I)
VarN(I) H0: absence
d’autocorréla-on H1: corréla-on