Variables instrumentales

Transcription

Variables instrumentales
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
TD avec le logiciel
- Fiche 6.5
Variables instrumentales
Plan
1.
ANALYSE CANONIQUE ET ANALYSE DES CORRESPONDANCES ............................. 2
2.
ANALYSE CANONIQUE ET INTER-BATTERIES DE TUCKER........................................ 6
3.
COMPOSANTES PRINCIPALES ET VARIABLES INSTRUMENTALES .......................... 7
4.
INTERPRETATION D'UNE ACPVI (ACP NORMEE) ....................................................... 10
5.
ANALYSES DES CORRESPONDANCES SUR VARIABLES INSTRUMENTALES ....... 13
6.
INTERPRETATION D'UNE AFCVI ................................................................................... 18
7.
PROBLEME : UNE ENQUETE PHYTO-ECOLOGIQUE .................................................. 19
Sommaire
La fiche introduit à l'usage de l'ACP sur variables instrumentales et de l'Analyse Canonique
des Correspondances ou AFC sur variables instrumentales. Elle donne des points de
comparaison avec l'Analyse Canonique et l'Analyse Inter-Batteries.
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 1 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
1.
Analyse canonique et analyse des correspondances
L'analyse canonique s'occupe de deux tableaux de variables quantitatives. Utiliser le
data.frame monde84. Il comporte 48 lignes et 5 colonnes. Ces données brutes font partie d'un
ensemble de statistiques publiées dans "L'état du Monde 1984" (Édition La Découverte). La
plupart des valeurs concernent 1983, certaines sont associées au dernier recensement de
chaque pays. La première variable (pib) est le Produit Intérieur Brut par habitant exprimé en
dollars. Les observations pour les pays à économie planifiée sont des estimations C.I.A. La
seconde variable (croipop) est le taux de croissance de la population exprimé en 1 pour 1000.
La troisième variable (morta) est le taux (en 1/1000) de mortalité infantile, nombre de décès
d'enfants âgés de moins d'un an rapporté au nombre d'enfants nés vivants pendant l'année
étudiée. La quatrième variable (anal) est le taux (%) d'analphabétisme, soit la proportion des
illettrés dans la population de plus de quinze ans. La cinquième variable (scol) est le taux (%)
d'inscription scolaire pour la catégorie (approximative suivant les pays) des 11-17 ans.
Etudier la distribution de chacune des variables et former un tableau X avec les colonnes lpib
(log(pib)) et croipop et un tableau Y avec les colonnes lmorta (log(morta)), lanal
(log(anal+1)) et rscol (sqrt(100-scol)).
> X <- cbind.data.frame(lpib=log(monde84$pib),croipop=monde84$croipop)
> Y <- cbind.data.frame(lmorta=log(monde84$morta),lanal=log(monde84$anal+1),
rscol=sqrt(100-monde84$scol))
> pairs(cbind.data.frame(X,Y))
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 2 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
On veut étudier la relation entre les variables de X et celles de Y. On fait une observation
préliminaire :
> X0 <- scale.wt(X)
> Y0 <- scale.wt(Y)
> coefficients(lm(Y0[,1]~-1+X0[,1]+X0[,2]))
X0[, 1] X0[, 2]
-0.6796 0.3332
> coefficients(lm(Y0[,2]~-1+X0[,1]+X0[,2]))
X0[, 1] X0[, 2]
-0.6171 0.3322
> coefficients(lm(Y0[,3]~-1+X0[,1]+X0[,2]))
X0[, 1] X0[, 2]
-0.6394 0.2483
Vérifier la signification statistique et commenter. L'analyse canonique a pour but de trouver
une combinaison des variables de X0 et une combinaison des variables de Y0 qui maximise :
corr 2 ( X0a, Y0b)
La fonction 'cancor' est dans 'mva'.
> cancor(X0,Y0)
$cor
[1] 0.9189 0.1015
$xcoef
[,1]
[,2]
lpib
0.10731 -0.1426
croipop -0.05222 -0.1707
$ycoef
[,1]
[,2]
[,3]
lmorta -0.11766 -0.002982 -0.3527
lanal -0.01672 -0.245644 0.2638
rscol -0.01301 0.262881 0.1202
$xcenter # indique simplement que les variables ont été préalablement centrées
lpib
croipop
1.538e-16 2.221e-16
$ycenter
lmorta
1.950e-16
lanal
rscol
2.636e-16 -9.252e-18
> can1 <- cancor(X0,Y0)
> var(X0%*%can1$xcoef)*47
[,1]
[,2]
[1,] 1.000e+00 9.784e-17
[2,] 9.784e-17 1.000e+00
> var(Y0%*%can1$ycoef)*47
[,1]
[,2]
[,3]
[1,] 1.000e+00 1.969e-16 -3.630e-16
[2,] 1.969e-16 1.000e+00 1.884e-16
[3,] -3.630e-16 1.884e-16 1.000e+00
> cor(Y0%*%can1$ycoef[,1],X0%*%can1$xcoef[,1])
[,1]
[1,] 0.9189
La procédure cancor est purement géométrique et utilise la métrique canonique de \ n .
Après centrage, ici inutile, les colonnes de X0 sont 2 vecteurs de \ n et les colonnes de Y0
sont 3 vecteurs de \ n . Leur norme n'a aucun rôle :
> cancor(X,Y)
$cor
[1] 0.9189 0.1015
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 3 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
On cherche un vecteur normé dans chacun des sous-espaces (donné par les coefficients de la
combinaison linéaire) qui optimise le cosinus et définit ainsi l'angle entre les deux sousespaces par :
cos ( H , K ) = suph∈H ,k∈K (cos (h, k ))
> s.label((cbind.data.frame(Y0%*%can1$ycoef[,1],X0%*%can1$xcoef[,1])),
lab=row.names(monde84),clab=0.75)
> abline(0,1)
> varcanoX <- X0%*%can1$xcoef[,1]
> varcanoY <- Y0%*%can1$ycoef[,1]
> cor(varcanoX,X)
lpib croipop
[1,] 0.9562 -0.799
> cor(varcanoX,Y)
lmorta
lanal
rscol
[1,] -0.9161 -0.8555 -0.8098
> cor(varcanoY,Y)
lmorta lanal
rscol
[1,] -0.997 -0.931 -0.8813
> cor(varcanoY,X)
lpib croipop
[1,] 0.8787 -0.7342
> cor(X,Y)
lmorta
lanal
rscol
lpib
-0.8756 -0.8125 -0.7854
croipop 0.7329 0.6951 0.6244
On peut jouer sur la géométrie des 5 vecteurs de \ n . On a des corrélations inter et intragroupes (cosinus d'angles entre vecteurs), des corrélations multiples (cosinus d'angles entre
vecteurs et sous-espaces) et des corrélations canoniques (cosinus d'angles entre sous-espaces).
L'intérêt statistique de l'analyse canonique est limité mais son intérêt théorique est
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 4 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
considérable. En particulier l'AFC est l'analyse canonique entre deux paquets d'indicatrices de
classes. L'exercice qui suit est d'essence mathématique.
> data(chats)
> chats
f0 f12 f34 f56 f78 f9a fbc fcd
age1 8 15 44 11
7
4
0
0
age2 6 12 36 21 11
6
1
1
age3 4
7 18 13 12
4
2
2
age4 2
8
7
3
7
5
1
0
age5 2
3
5
3
4
6
0
0
age6 1
0
5
3
2
2
1
1
age7 0
0
3
2
5
4
1
1
age8 2
2
5
1
7
4
1
0
Placer les effectifs dans un vecteur :
> unlist(unclass(chats))
f01 f02 f03 f04 f05 f06 f07 f08
8
6
4
2
2
1
0
2
f341 f342 f343 f344 f345 f346 f347 f348
44
36
18
7
5
5
3
5
f781 f782 f783 f784 f785 f786 f787 f788
7
11
12
7
4
2
5
7
fbc1 fbc2 fbc3 fbc4 fbc5 fbc6 fbc7 fbc8
0
1
2
1
0
1
1
1
> cha.eff <- unlist(unclass(chats))
f121
15
f561
11
f9a1
4
fcd1
0
f122
12
f562
21
f9a2
6
fcd2
1
f123
7
f563
13
f9a3
4
fcd3
2
f124
8
f564
3
f9a4
5
fcd4
0
f125
3
f565
3
f9a5
6
fcd5
0
f126
0
f566
3
f9a6
2
fcd6
1
f127
0
f567
2
f9a7
4
fcd7
1
f128
2
f568
1
f9a8
4
fcd8
0
age5
age4
age3
age2
age6
age5
age4
age3
age7
age6
age5
age4
Transformer les noms de lignes et de colonnes en facteurs :
> util <- matrix(0,8,8)
> factor(row.names(chats)[as.vector(row(util))])
[1] age1 age2 age3 age4 age5 age6 age7 age8 age1 age2 age3 age4
[16] age8 age1 age2 age3 age4 age5 age6 age7 age8 age1 age2 age3
[31] age7 age8 age1 age2 age3 age4 age5 age6 age7 age8 age1 age2
[46] age6 age7 age8 age1 age2 age3 age4 age5 age6 age7 age8 age1
[61] age5 age6 age7 age8
Levels: age1 age2 age3 age4 age5 age6 age7 age8
> factor(names(chats)[as.vector(col(util))])
[1] f0 f0 f0 f0 f0 f0 f0 f0 f12 f12 f12 f12 f12 f12 f12
[20] f34 f34 f34 f34 f34 f56 f56 f56 f56 f56 f56 f56 f56 f78 f78
[39] f78 f78 f9a f9a f9a f9a f9a f9a f9a f9a fbc fbc fbc fbc fbc
[58] fcd fcd fcd fcd fcd fcd fcd
Levels: f0 f12 f34 f56 f78 f9a fbc fcd
> row.fac <- factor(names(chats)[as.vector(col(util))])
> col.fac <- factor(row.names(chats)[as.vector(row(util))])
f12 f34 f34 f34
f78 f78 f78 f78
fbc fbc fbc fcd
Répéter pour avoir dans deux tableaux les indicatrices de classe avec une ligne par individus :
> row.fac <- rep(row.fac,cha.eff)
> col.fac <- rep(col.fac,cha.eff)
Observer que la procédure 'corresp' prend en entrée deux variables qualitatives :
> library(mass)
> corresp(row.fac,col.fac)
First canonical correlation(s): 0.3479
x scores:
f0
f12
f34
f56
-0.4592 -0.6456 -0.8011 -0.2470
f78
1.2302
f9a
1.6958
fbc
2.3882
fcd
2.1404
y scores:
age1
age2
-1.1603 -0.4982
age5
0.9365
age6
0.9916
age7
2.6166
age8
1.4791
age3
0.3067
age4
0.6138
aussi bien qu'une table de contingence sous forme de matrice :
> corresp(chats)
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 5 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
First canonical correlation(s): 0.3479
Row scores:
age1
age2
-1.1603 -0.4982
age3
0.3067
age4
0.6138
age5
0.9365
age6
0.9916
age7
2.6166
age8
1.4791
Column scores:
f0
f12
f34
f56
-0.4592 -0.6456 -0.8011 -0.2470
f78
1.2302
f9a
1.6958
fbc
2.3882
fcd
2.1404
Vérifier que l'analyse canonique donne les résultats avec un facteur trivial surnuméraire
(expliquer la présence de la corrélation 1) :
> cancor(model.matrix(~-1+row.fac),model.matrix(~-1+col.fac),xc=F,yc=F)
$cor
[1] 1.00000 0.34792 0.22936 0.12345 0.11363 0.07354 0.04930 0.03010
...
Vérifier la procédure de ade4 :
> sqrt(dudi.coa(chats,scann=F)$eig)
[1] 0.34792 0.22936 0.12345 0.11363 0.07354 0.04930 0.03010
2.
Analyse canonique et inter-batteries de Tucker
L'analyse canonique voit dans les deux tableaux deux paquets de variables dans le même
espace. L'inter-batteries n'y voit que deux paquets d'individus appariés dans deux espaces
différents comme la rotation procuste. Exécuter la rotation procustéenne :
> pro1 <- procuste(X0,Y0)
> s.label(cbind.data.frame(pro1$scor1[,1],pro1$scor2[,1]),
lab=row.names(monde84),clab=0.75)
> abline(0,1)
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 6 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
L'absence de déformation dans la rotation diminue fortement l'idée de corrélation. Entre
analyse canonique et rotation procustéenne, l'analyse de co-inertie trouve un compromis. Les
axes maximisent le produit du critère optimisé en analyse canonique par le produit des
critères optimisés dans les ACP simples. L'analyse inter-batteries est assurée par 'coinertia'
(dans ade4).
>
>
>
>
pca1 <- dudi.pca(X0,scan=F)
pca2 <- dudi.pca(Y0,scan=F)
coiner1 <- coinertia(pca1,pca2,scan=F)
summary(coiner1)
Eigenvalues decomposition:
eig
covar
sdX
sdY
corr
1 3.4530874 1.85825 1.2563 1.6518 0.8955 # pas loin du 0.9189 optimisé par cancor
2 0.0007268 0.02696 0.6495 0.4144 0.1002
Inertia & coinertia X:
inertia
max ratio
1
1.578 1.588 0.9937 # presque l'optimum
12
2.000 2.000 1.0000
Inertia & coinertia Y:
inertia
max ratio
1
2.728 2.733 0.9983 # presque l'optimum
12
2.900 2.907 0.9975
RV:
0.7682
> cor(pca1$li[,1],pca2$li[,1])
[1] -0.8873
> cor(Y$lmorta,pca1$li[,1])
[1] 0.9025
L'analyse inter-batteries en tenant compte de la structure des nuages individus est très proche
de l'analyse canonique sur les tableaux des premières coordonnées factorielles des ACP de
départ. Seule une nuance dans l'interprétation la différencie d'une rotation procustéenne. La
morale est qu'on ne peut pas tout avoir en même temps (le beurre, ...).
3.
Composantes Principales et Variables Instrumentales
Il y a encore une autre manière de voir le lien entre X et Y, peut-être la plus complexe et la
plus nuancée. Une première approche simple des ACPVI consiste à penser que chaque
variable de Y a un modèle à partir des variables de X. Ces modèles ont une composante
principale qui est un modèle des modèles donc un modèle commun des données.
> pcaY <- dudi.pca(Y)
Select the number of axes: 2
> pcaiv1 <- pcaiv(pcaY,X0)
Select the number of axes: 2
> pcaiv1
Principal Component Analysis with Instrumental Variables
call: pcaiv(dudi = pcaY, df = X0)
class: pcaiv dudi
$rank (rank)
: 2
$nf (axis saved) : 2
eigen values: 2.227 0.001723
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 7 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
vector
$eig
$lw
$cw
length
2
48
3
mode
numeric
numeric
numeric
content
eigen values
row weigths (from dudi)
col weigths (from dudi)
data.frame
$Y
$X
$tab
nrow
48
48
48
ncol
3
2
3
content
Dependant variables
Explanatory variables
modified array (projected variables)
data.frame
$c1
$as
$ls
$li
nrow
3
2
48
48
ncol
2
2
2
2
content
PPA Pseudo Principal Axes
Principal axis of dudi$tab on PAP
projection of lines of dudi$tab on PPA
$ls predicted by X
data.frame
$fa
$l1
$co
$cor
nrow
3
48
3
3
ncol
2
2
2
2
content
Loadings (CPC as linear combinations of X
CPC Constraint Principal Components
inner product CPC - Y
correlation CPC - X
iner inercum inerC inercumC ratio R2
lambda
2.73 2.73
2.73 2.73
0.998 0.816 2.23
0.174 2.91
0.171 2.9
0.997 0.0101 0.00172
Cette procédure est dissymétrique. 'cancor' prend deux tableaux, 'procuste' prend deux
tableaux, 'coinertia' prend deux triplets, 'pcaiv' prend un triplet et un tableau. Le tableau est
celui des variables instrumentales. On suppose simplement que si x1, x2, ..., xp sont les
variables de ce tableau, les modèles du type
y~x1+x2+...+xp
ont un sens. Les xi peuvent être qualitatives (factor), quantitatives ou à modalités ordonnées
(ordered).
L'ACPVI fait l'analyse du tableau projeté :
>
>
>
>
par(mfrow=c(1,3))
plot(pcaiv1$tab[,1],predict(lm(Y0[,1]~X0[,1]+X0[,2])))
plot(pcaiv1$tab[,2],predict(lm(Y0[,2]~X0[,1]+X0[,2])))
plot(pcaiv1$tab[,3],predict(lm(Y0[,3]~X0[,1]+X0[,2])))
Les 3 modèles jouent un rôle équivalent :
> pcaiv1$c1
CS1
CS2
lmorta -0.6139 -0.1627
lanal -0.5732 -0.5810
rscol -0.5428 0.7975
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 8 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
On a trouvé un prédicteur commun aux trois variables :
> plot(pcaiv1$l1[,1],Y0[,1])
> plot(pcaiv1$l1[,1],Y0[,2])
> plot(pcaiv1$l1[,1],Y0[,3])
Ce prédicteur est une combinaison des variables de X :
> summary(lm(pcaiv1$l1[,1]~X0[,1]+X0[,2]))
Call:
lm(formula = pcaiv1$l1[, 1] ~ X0[, 1] + X0[, 2])
Residuals:
Min
1Q
Median
-1.00e-15 -9.20e-17 -3.61e-18
3Q
6.83e-17
Max
1.12e-15
Residual standard error: 2.73e-16 on 45 degrees of freedom
Multiple R-Squared:
1,
Adjusted R-squared:
1
Ce prédicteur est une composante principale sous contrainte, c'est-à-dire qu'elle appartient au
sous-espace engendré par X0 (contrainte) et maximise la somme des carrés des corrélations
avec les variables de Y (composante principale) :
> sum(cor(pcaiv1$l1[,1],Y0)^2)
[1] 2.227
> pcaiv1$eig
[1] 2.227037 0.001723 # le second facteur est sans signification
En analyse canonique, on maximise cos ( H , K ) = suph∈H ,k ∈K (cos (h, k )) , soit quand les
vecteurs sont des variables normées corrh2∈H ,k∈K (h, k ) . En ACPVI, on maximise
∑
k ∈K
corrh2∈H (h, k )
En résumé, la rotation procustéenne envoie un nuage sur l'autre et est proche de l'analyse de
co-inertie qui étudie deux nuages de points dans une optique de couplage d'axes principaux.
L'analyse canonique est symétrique et travaille sur le nuage des variables.
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 9 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
[X]
Variable
canonique
x*
Variables
du tableau X
z
Score
canonique
y*
Variable
canonique
Variables
du tableau Y
[Y]
L'ACPVI s'apparente à une régression simultanée des variables de Y par une variable de X
adaptée. Ici, la nature des données (le sens du problème) impose la dernière comme
pertinente.
4.
Interprétation d'une ACPVI (ACP normée)
vector
$eig
$lw
$cw
length
2
48
3
mode
numeric
numeric
numeric
content
eigen values
row weigths (from dudi)
col weigths (from dudi)
data.frame
$Y
$X
$tab
nrow
48
48
48
ncol
3
2
3
content
Dependant variables
Explanatory variables
modified array (projected variables)
data.frame
$c1
$as
$ls
$li
nrow
3
2
48
48
ncol
2
2
2
2
content
PPA Pseudo Principal Axes
Principal axis of dudi$tab on PAP
projection of lines of dudi$tab on PPA
$ls predicted by X
data.frame
$fa
$l1
$co
$cor
nrow
3
48
3
3
ncol
2
2
2
2
content
Loadings (CPC as linear combinations of X
CPC Constraint Principal Components
inner product CPC - Y
correlation CPC - X
Replacer les produits de la procédure sur le schéma de l'analyse :
m
Yt ↑
Qm = Ι m
→
n
n
↓ PX
P ↑
t
X
n
tab
cw
lw
l1
le tableau
PX Y
m
↓Y
←
1
D = In
n
n
des modèles linéaires des colonnes de Y par X
poids des colonnes (1 pour chacune des m colonnes de Y)
poids des lignes (1/n pour chacune des n lignes de Y ou de X)
composantes principales sous contrainte ou CPC (combinaisons linéaires de
variables de X maximisant le critère de l'analyse)
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 10 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
> var(pcaiv1$l1)*47/48
RS1
RS2
RS1 1.000e+00 -1.041e-17
RS2 -1.041e-17 1.000e+00
co
corrélations entre CPC et variables de Y
> cor(Y,pcaiv1$l1)
RS1
RS2
lmorta -0.9161 -0.006754
lanal -0.8554 -0.024114
rscol -0.8100 0.033102
> pcaiv1$co
Comp1
Comp2
lmorta -0.9161 -0.006754
lanal -0.8554 -0.024114
rscol -0.8100 0.033102
eig
valeurs propres, optimum du critère somme des carrés des corrélations entre
CPC et variables de Y
> sum(pcaiv1$co[,1]^2)
[1] 2.227
> pcaiv1$eig[1]
[1] 2.227
Quand on interprète l'analyse avec ce point de vue on fait une analyse en composantes
explicatives : Obadia, J. 1978. L'analyse en composantes explicatives. Revue de Statistique
Appliquée 24:5-28.
Mais dans un schéma de dualité, il y a toujours deux points de vue. Le second est formé de :
c1
pseudo-axes principaux ou PAP, vecteurs normés de
\m
> t(as.matrix(pcaiv1$c1))%*%as.matrix(pcaiv1$c1)
CS1
CS2
CS1 1.000e+00 5.551e-17
CS2 5.551e-17 1.000e+00
ls
coordonnées des projections des lignes de Y sur les PAP
> (as.matrix(pcaY$tab)%*%as.matrix(pcaiv1$c1))[1:3,]
CS1
CS2
1 -1.8384 0.4994
2 -1.6010 -0.2594
3 0.3046 0.1876
> pcaiv1$ls[1:3,]
Axis1
Axis2
1 -1.8384 0.4994
2 -1.6010 -0.2594
3 0.3046 0.1876
as
coordonnées des projections des axes principaux (AP) de Y sur les PAP.
Ceci permet de comparer les AP et les PAP. Les PAP ont une propriété
d'optimalité originale.
li
prédiction des coordonnées des projections des lignes de Y sur les PAP
par régressions multiples sur X. Ces régressions définissent des carrés
de corrélation multiple ou pourcentage de variance expliquée. Les PAP
optimisent la variance expliquée, c'est-à-dire le produit de la variance
de la projection (critère d'ACP) par le carré de corrélation multiple
(critère d'analyse canonique). On peut superposer ls (projections sur les
PAP) et li (prédiction des positions).
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 11 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
> lmprovi <- lm(pcaiv1$ls[,1]~X0[,1]+X0[,2])
> predict(lmprovi)[1:5]
1
2
3
4
5
-0.2878 -0.4275 0.4022 1.5848 -0.2531
> pcaiv1$li[1:5,1]
[1] -0.2878 -0.4275
0.4022
1.5848 -0.2531
> sum(predict(lmprovi)^2)/48 # variance en 1/n des prédictions ou variance expliquée
[1] 2.227 # On retrouve la valeur propre comme optimum du critère
> summary(lmprovi)
Call:
lm(formula = pcaiv1$ls[, 1] ~ X0[, 1] + X0[, 2])
Residual standard error: 0.732 on 45 degrees of freedom
Multiple R-Squared: 0.816,
Adjusted R-squared: 0.808
cohérent avec :
iner inercum inerC inercumC ratio R2
lambda
2.73 2.73
2.73 2.73
0.998 0.816 2.23
0.174 2.91
0.171 2.9
0.997 0.0101 0.00172
Quand on interprète l'analyse avec ce point de vue, on fait une analyse en composantes
principales sur variables instrumentales au sens de Rao : Rao, C. R. 1964. The use and
interpretation of principal component analysis in applied research. Sankhya, A 26:329-359.
When a large number of measurements are available, it is natural to enquire
whether they could be replaced by a fewer number of the measurements or of their
functions, without loss of much information, for convenience in the analysis and in
the interpretation of the data. Principal components, which are linear functions of the
measurements, are suggested for this purpose. It is, therefore, relevant to examine in
what sense principal components provide a reduction of the data without much loss of
information we are seeking from the data.
En ce sens on peut dire qu'on a résumé les critères mortalité infantile, analphabétisme et
scolarisation en un seul critère en conservant le maximum d'information prédictible par le PIB
et le taux de croissance de la population.
Le dernier élément de sortie de la fonction donne une indication sur le lien entre l'analyse de
départ et l'analyse sous contrainte. Le premier PAP qui optimise :
Varexpliquée = Var × Rz2, X
est inférieur au premier axe principal du point de vue de la variance projetée. De même le
plan des deux premiers PAP est moins bon que le plan des deux premiers AP, ... La
composante ratio donne les taux d'inertie conservés par rapport à l'optimum :
iner inercum inerC inercumC ratio R2
lambda
2.73 2.73
2.73 2.73
0.998 0.816 2.23
0.174 2.91
0.171 2.9
0.997 0.0101 0.00172
Donc la première composante principale simple était pratiquement la solution de l'ACPVI :
> cor(pcaY$li,pcaiv1$ls)
Axis1
Axis2
Axis1 0.999960 -0.08311
Axis2 -0.007124 -0.98250
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 12 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
5.
Analyses des correspondances sur variables
instrumentales
Quand le schéma d'entrée dans 'pcaiv' est une analyse des correspondances, on parle d'AFCVI
dont l'usage est très répandue en écologie sous le nom de CCA (Canonical Correspondence
Analysis : Ter Braak, C. J. F. 1986. Canonical correspondence analysis : a new eigenvector
technique for multivariate direct gradient analysis. Ecology 67:1167-1179).
Utiliser les données 'avimedi' (Blondel, J., D. Chessel, and B. Frochot. 1988. Niche expansion
and density compensation of island birds in mediterranean habitats. A case study from
comparison of two ecological successions. Ecology 69:1899-1917). On a 302 relevés
d'avifaune répartis dans 2 régions (Provence et Corse) et 6 types de végétation (ordonnés sur
un gradient d'ouverture de la pelouse S1 à la forêt haute S6).
> data(avimedi)
> summary(avimedi$plan)
reg
str
Pr:178
S1:40
Co:124
S2:40
S3:92
S4:46
S5:40
S6:44
> dim(avimedi$fau)
[1] 302 51
> coa1 <- dudi.coa(avimedi$fau)
Select the number of axes: 3
Interpréter l'analyse simple.
> cla <- avimedi$plan$reg:avimedi$plan$str
> s.class(coa1$li,cla,sub="Plan 1-2 sans contrainte")
> s.class(coa1$li,cla,xax=1,yax=3,sub="Plan 1-3 sans contrainte")
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 13 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
> interAB <- pcaiv(coa1,cla)
Select the number of axes: 3
> between(coa1,cla)$eig
Select the number of axes: 3
[1] 0.66722 0.43905 0.35373 0.21882 0.16309 0.05456 0.04061 0.03654 0.02485
[10] 0.01537 0.01021
> interAB$eig
[1] 0.66722 0.43905 0.35373 0.21882 0.16309 0.05456 0.04061 0.03654 0.02485
[10] 0.01537 0.01021
L'analyse inter-classes est une ACPVI sur une variable qualitative. On a, plus généralement,
le moyen de décomposer l'inertie dans un plan d'expérience (Sabatier, R., J. D. Lebreton, and
J. D. Chessel. 1989. Principal component analysis with instrumental variables as a tool for
modelling composition data. Pages 341-352 in R. Coppi and S. Bolasco, editors. Multiway
data analysis. Elsevier Science Publishers B.V., North-Holland)
> pcaiv(coa1,model.matrix(~avimedi$plan$reg:avimedi$plan$str))$eig
Select the number of axes: 3
[1] 0.66722 0.43905 0.35373 0.21882 0.16309 0.05456 0.04061 0.03654 0.02485
[10] 0.01537 0.01021
La structure du tableau est exclusivement une structure inter-classes :
> interAB
…
iner
0.694
0.485
0.397
inercum
0.694
1.18
1.58
inerC
0.693
0.484
0.392
inercumC
0.693
1.18
1.57
ratio
0.999
0.998
0.995
R2
0.963
0.908
0.902
lambda
0.667
0.439
0.354
> sum(coa1$eig)
[1] 4.971
> sum(interAB$eig)
[1] 2.024
> 2.024/4.971
[1] 0.4072
On dit que l'inter-classe prend en compte 40.7 % d'inertie. Mais l'inertie est faite de structures
et d'aléas :
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 14 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
> inertia.dudi(coa1,F,F)
$TOT
inertia
cum ratio
1 0.694104 0.6941 0.1396
2 0.485387 1.1795 0.2373
3 0.396572 1.5761 0.3170
...
> inertia.dudi(interAB,F,F)
$TOT
inertia
cum ratio
1 0.66722 0.6672 0.3296
2 0.43905 1.1063 0.5466
3 0.35373 1.4600 0.7213
...
Retrouver l'argument ratio. Observer que l'inertie de l'inter-classe est 40.7% de l'inertie totale
mais qu'elle contient 72% de structure alors que l'inertie totale contient environ 32% de
structure. Vérifier que l'ordination directe et l'ordination contrainte sont très voisine.
> cor(coa1$li,interAB$li)
Axis1
Axis2
Axis3
Axis1 0.97899 -0.1551 0.1675
Axis2 -0.08738 0.9479 -0.1042
Axis3 -0.15230 0.0905 -0.9268
Pourquoi ce calcul explicite est-il plus correct ?
> t(as.matrix(coa1$l1)*coa1$lw)%*%as.matrix(interAB$l1)
RS1
RS2
RS3
RS1 0.979340 -0.02448 0.001140
RS2 0.035241 0.94791 -0.009401
RS3 0.001291 -0.01065 -0.935982
Dans cet exemple, il est équivalent :
- soit d'extraire du tableau des données sa structure directement
- soit d'extraire par une contrainte du type A:B une part de l'information puis une partie
de cette part comme structure.
En outre, on prouve que toute l'information de l'expérience est dans l'ensemble des profils des
espèces sur les critères région et strates.
On a un outil performant de modélisation dans un contexte massivement multivarié :
> interAplusB <- pcaiv(coa1,avimedi$plan)
Select the number of axes: 4
> inertia.dudi(interAplusB)
$TOT
inertia
cum ratio
1 0.61968 0.6197 0.4476
2 0.36330 0.9830 0.7101
3 0.23444 1.2174 0.8795
4 0.10992 1.3273 0.9589
5 0.03371 1.3611 0.9832
6 0.02324 1.3843 1.0000
> s.class(interAplusB$ls,cla)
Le graphe est explicite :
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 15 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
On a cherché une ordination à effet additif. Il vaut mieux, cependant, représenter une
projection stricte sur les PAP (composante ls) et son modèle (composante li) :
> s.match(interAplusB$li,interAplusB$ls,clab=0)
> s.class(interAplusB$li,cla,add.plot=T)
On a disposé les espèces dans un plan (voir ci-après) pour placer les relevés à la moyenne des
espèces qu'ils contiennent (averaging) pour obtenir les meilleurs modèles additifs possibles.
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 16 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
Ce n'est manifestement pas tout à fait possible : l'erreur est vers l'extérieur en Provence et vers
l'intérieur en Corse, les deux structures ayant des propriétés internes fortes.
Si on veut alors enlever l'effet région, c'est-à-dire superposer au mieux les deux ordinations,
on utilise une ACPVI orthogonale (Principal components of X uncorrelated with the
instrumental variable Z dans Rao op. cit. p. 342). On voit immédiatement qu'une telle
opération est presque possible :
> pcaivnonA <- pcaivortho(coa1,avimedi$plan$reg)
Select the number of axes: 3
> s.match(pcaivnonA$li,pcaivnonA$ls,clab=0)
> s.class(pcaivnonA$li,cla,add.plot=T)
Les petites flèches indiquent l'erreur de correction sur les vraies moyennes conditionnelles à
opérer pour obtenir deux nuages ayant le même centre de gravité (dans un sens pour une
classe et dans le sens opposé pour l'autre classe). Ce qui frappe immédiatement c'est
l'insertion de la typologie Corse dans celle de la Provence et la mise en évidence du syndrome
d'insularité sur les structures des communautés (pour en savoir plus : Blondel, J. 1985.
Biogéographie évolutive. Masson, Paris).
A noter que l'analyse intra-classes est une ACPVI orthogonale :
> pcaivnonA$eig
[1] 0.586421 0.443273 0.318119 0.217223 0.185231 0.155292 0.147673 0.130596
...
> within(coa1,avimedi$plan$reg)$eig
Select the number of axes: 3
[1] 0.586421 0.443273 0.318119 0.217223 0.185231 0.155292 0.147673 0.130596
...
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 17 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
6.
Interprétation d'une AFCVI
Replacer les produits de la procédure sur le schéma de l'analyse :
J
Yt ↑
DJ
→
J
↓ D PD−J 1
−1
I
n
n
PXt ↑
↓ PX = X ( Xt D I X ) Xt D I
n
−
←
DI
n
Il y a encore deux lectures du schéma et deux modes d'interprétation de l'analyse. On peut
garder le langage de l'écologie (J espèces, n sites et p variables de milieu). Le premier mode
utilise :
tab
cw
lw
l1
co
eig
le tableau
PX Y
d'usage purement technique
poids des colonnes (la pondération marginales des espéces dans le tableau
faunistique).
poids des lignes (la pondération marginale des sites dans le tableau
faunistique qui sert aux régressions pondérées)
composantes principales sous contrainte ou CPC (combinaisons linéaires de
variables de X maximisant le critère de l'analyse). Ce sont des scores
des relevés de variance 1, combinaison linéaire des variables de milieu.
Le calcul montre que ce sont les positions des espèces au barycentre des
relevés pour leur distribution (espèces à la moyenne des relevés).
valeurs propres, optimum du critère somme des carrés des écarts entre
moyenne par espèce et origine, c'est à dire variance des moyennes
conditionelles (double centrage).
Quand on interprète l'analyse avec ce point de vue on fait une analyse canonique des
correspondances CCA : Ter Braak, C. J. F. 1986. Canonical correspondence analysis : a new
eigenvector technique for multivariate direct gradient analysis. Ecology 67:1167-1179.
Ce schéma est parfaitement adapté à la vision de la niche écologique et des gradients
environnementaux sur lesquels se séparent les niches des espèces. Mais dans un schéma de
dualité, il y a toujours deux points de vue. Le second est formé de :
J
c1
pseudo-axes principaux ou PAP, vecteurs normés de \ . Ce sont des scores
des espèces centrés et réduits pour la pondération des espèces.
ls
coordonnées des projections des lignes de Y sur les PAP. Le calcul montre
qu'on calcule ainsi les positions des sites par moyennes des espèces
qu'ils contiennent (sites à la moyenne des espèces).
coordonnées des projections des axes principaux (AP) de Y sur les PAP.
Ceci permet de replacer les plans principaux de l'AFC d'origine sur les
PAP et ainsi de comparer l'analyse simple et l'analyse sous contraintes.
as
>
>
>
>
par(mfrow=c(1,3))
s.corcircle(interAplusB$as,sub="A+B")
s.corcircle(interAB$as,sub="A:B")
s.corcircle(pcaivnonA$as,sub="A orthogonal")
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 18 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
li
prédiction des coordonnées des projections des lignes de Y sur les PAP
par régressions multiples sur X. Ces régressions définissent des carrés
de corrélation multiple ou pourcentage de variance expliquée. Les PAP
optimisent la variance expliquée, c'est à dire le produit de la variance
de la projection (critère d'ACP) par le carré de corrélation multiple
(critère d'analyse canonique). On peut superposer ls (projections sur les
PAP) et li (prédiction des positions).
Quand on utilise ce modèle, on fait une AFCVI : Lebreton, J. D., R. Sabatier, G. Banco, and
A. M. Bacou. 1991. Principal component and correspondence analyses with respect to
instrumental variables : an overview of their role in studies of structure-activity and speciesenvironment relationships. Pages 85-114 in J. Devillers and W. Karcher, editors. Applied
Multivariate Analysis in SAR and Environmental Studies. Kluwer Academic Publishers.
7.
Problème : une enquête phyto-écologique
Utiliser les données 'mafragh' :
> data(mafragh)
> names(mafragh)
[1] "xy"
"flo"
"espnames"
"neig"
"mil"
"partition"
On a 97 relevés écologiques (Belair, G. d., and M. Bencheikh-Lehocine. 1987. Composition
et déterminisme de la végétation d'une plaine côtière marécageuse : La Mafragh (Annaba,
Algérie). Bulletin d'Ecologie 18:393-407) avec :
- une analyse du milieu (le code des variables est 1-Argile (%), 2-Limon (%), 3-Sable
(%), 4-K2O, 5-Mg++, 6-Na+ (pour 100 g de sol), 7-K+, 8-Conductivité, 9-Capacité de
rétention, 10-Na+ (pour 1 litre de solution), 11-Altitude (m)),
- un relevé floristique (espnames contient le nom des espèces),
- 2 coordonnées spatiales et un graphe de voisinage entre points.
Tracer la carte sur le graphe de voisinage.
> s.label(mafragh$xy,nei=mafragh$neig,addax=F)
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 19 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf
D. Chessel, A.B. Dufour & J. Thioulouse - Biométrie et Biologie Evolutive - Université Lyon1
Effectuer et dépouiller l'ACP normée du tableau de milieu, l'analyse des correspondances du
tableau floristique, l'analyse canonique des correspondances du coupe :
> coa2
Select
> m <Select
<- dudi.coa(mafragh$flo)
the number of axes: 3
pcaiv(coa2,mafragh$mil)
the number of axes: 3
>m
…
iner
0.869
0.649
0.598
inercum
0.869
1.52
2.12
inerC
0.808
0.512
0.397
inercumC
0.808
1.32
1.72
ratio
0.929
0.869
0.812
R2
0.639
0.48
0.513
lambda
0.516
0.246
0.204
> s.corcircle(m$as)
Utiliser la cartographie (la plaine est derrière un cordon dunaire et la mer est en haut) :
> s.value(mafragh$xy,scale(mafragh$mil)[,11],sub="Altitude",neig=mafragh$neig)
> s.value(mafragh$xy,m$l1[,1],neig=mafragh$neig)
Illustrer l'interprétation 11, co et c1, ls, li. Utiliser la partition des relevés faites par les auteurs
qui est dans mafragh$partition, par exemple :
> table(cutree(hclust(dist(mafragh$flo,"bin")^2,"ward"),k=7),mafragh$partition)
1
2
3
4
5
6
7
C1 C2 C3 C4 C5 C6 C7
0 0 1 11 0 0 0
0 24 0 0 1 0 0
0 0 0 1 16 0 0
0 0 6 1 1 0 0
0 0 1 8 0 0 0
6 1 0 0 0 0 0
0 0 0 0 2 7 10
Construire un résumé de l'information acquise.
_____________________________________________________________________________
Logiciel R / Variables Instrumentales / tdr65.doc / Page 20 / 02-04-03
http://pbil.univ-lyon1.fr/R/fichestd/tdr65.pdf

Documents pareils