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