De l`analyse multi-variables `a l`analyse multi
Transcription
De l`analyse multi-variables `a l`analyse multi
M2 Écologie,Évolution,Biométrie UE Description Statistique des Structures Biologiques De l’analyse multi-variables à l’analyse multi-tableaux A.B. Dufour & D. Chessel Notes de cours cssb7 On pose la question des tableaux multiples à partir de jeux de données exemplaires. Les analyses élémentaires des cubes de données introduisent la notion de compromis. Table des matières 1 Introduction 2 2 La classe ktab 2.1 Rangement des objets . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Signification et objectifs . . . . . . . . . . . . . . . . . . . . . . . 2.3 Comment faire des ktab ? . . . . . . . . . . . . . . . . . . . . . . 5 5 6 10 3 Les variables floues 12 4 Les 4.1 4.2 4.3 analyses inter et intra-classes 13 Tableaux de modèles et d’erreurs . . . . . . . . . . . . . . . . . . 13 Transformation de Bouroche . . . . . . . . . . . . . . . . . . . . . 16 Les AFC intra-classes . . . . . . . . . . . . . . . . . . . . . . . . 17 5 Approches élémentaires des cubes de données 17 5.1 Analyses triadiques partielles . . . . . . . . . . . . . . . . . . . . 17 5.2 L’AFC de Foucart . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Références 30 1 A.B. Dufour & D. Chessel 1 Introduction Quand on introduit une partition dans l’ensemble des descripteurs ou dans celui des conditions d’acquisition, on passe de l’analyse des données des tableaux ou des couples de tableaux à celle des K-tableaux. On trouvera dans la librairie ade4 nombre d’exemples de ce type au premier rang desquels celui de L. Friday [11] décrit dans : http://pbil.univ-lyon1.fr/R/pps/pps078.pdf et celui de J. Verneaux [22] décrit dans : http://pbil.univ-lyon1.fr/R/pps/pps047.pdf Le premier exemple représente la situation K-tableaux mêmes individus et la question de la valeur typologique des groupes d’espèces. Le second représente la situation K-tableaux mêmes variables et la question de la reproduction d’une même structure dans différentes conditions. library(ade4) data(friday87) wfri <- data.frame(scale(friday87$fau[, -(75:77)], scal = FALSE)) wfri <- ktab.data.frame(wfri, friday87$fau.blo[-8], tabnames = friday87$tab.names[-8]) kplot(sepan(wfri), clab.r = 2, clab.c = 1) d=1 A3 d=1 M AC B A1 K L M F H G A5 A4 A8 A7 Ab J B C B5 A2 D Aa A9 B2 N N G D B7K F H B1 H d=1 C P E2 E3 E1 M D3 K Fj FG JL Eb Ec H Eigenvalues Q D E7 E6 G D4 d=2 L E9 Ea F Ed Eigenvalues Q E5 E R F H A K R J F6 Fh Fa F9 M EP F4 Coleoptera d = 0.5 d=2 G2 J I4 I5 K Eigenvalues G H I7 G1 Eigenvalues N I8 M L F Q J R P E I6 I3 A B D CG J3 J5 I1 L Eigenvalues G3 C D Hydracarina F J6 N Q J P R E C B J2 K A D G I2 M J4 N N H d=2 H Q R P E B K L B Diptera F G4 Fl Fi Fb Ff Fd F7 Ephemeroptera M A A Fm Fg D C N N Fk F8 F3 F1 F2 Fe F5 Fc Eigenvalues E8 H M Trichoptera B E4 L C1 Q R P C3 Cd F Odonata d=1 B MD K G C9 E AC J D Eigenvalues Hemiptera Q J R P E L Cc Q R C A D2 B Cb L Eigenvalues N C7 C5 J B3 P C4 G K Ca C8 E Eigenvalues C2 C6 B4 A6 D1 d=2 B6 AP R EQ Mollusca J1 Oligochaeta Ces données sont exemplaires parce qu’elles représentent une multitude de situations écologiques, ce sont des exemples, et parce qu’elles sont parfaitement disponibles, ce sont des modèles. Les premières représentent la question K + 1tableaux : Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 2/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel et la seconde la question 2K-tableaux. On s’intéressera donc pour commencer à la question des K-tableaux. Ces situations indiquent qu’on manipule simultanément plusieurs analyses, par exemple 9 ACP centrées (ci-dessus) ou 9 ACP normées (ci-dessous). data(jv73) w <- split(jv73$morpho, jv73$fac.riv) w <- lapply(w, dudi.pca, scan = F) par(mfrow = c(3, 3)) for (k in c(1:2, 5:7, 9:12)) s.corcircle(w[[k]]$co, clab = 1.5, sub = names(w)[k], csub = 2) Pen Vme Alt Smm Vme Das Smm Qmm Smm Alt Qmm Pen Das Alt Pen Qmm Das Vme Allaine Audeux Cusancin Vme x1 x1 x1 Smm Qmm Alt Smm Das Das Smm Qmm Das Pen Qmm Alt Pen Vme Dessoubre Vme Drugeon Doubs Vme Qmm Pen Smm x1 Das x1 Vme x1 Smm Alt Pen Alt Das Qmm Vme Qmm Smm Alt Furieuse Pen Alt Lison Pen Das Loue Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 3/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel On voit immédiatement que la configuration ”mêmes variables et mêmes individus” se présente naturellement. Dans ce champ, les cubes de données jouent un rôle central en exprimant la difficulté immédiate de la multiplicité des points de vue. Les données de J. Blondel et H. Farré [2] sont un troisième cas d’école, parce qu’elles ont été publiées en toute transparence. Il s’agit de mesurer la variabilité du cortège avifaunistique entre 4 régions (Pologne, Bourgogne, Provence et Corse), le long du gradient de fermeture de la végétation vu par six strates d’échantillonnage (1- végétation buissonnante basse (hauteur < 1 m) à 6- forêts de plus de 20 m de hauteur). Les valeurs sont des effectifs de couples nicheurs pour 100 ha. A défaut de méthodes appropriées, on peut toujours présenter les données dans une analyse à un tableau. La question qui vient immédiatement est lequel. Il y a, en effet, 6 manières de faire d’un cube un tableau pour se ramener au cas précédent et on a peu de chances de tomber sur la bonne au hasard : On aborde donc des questions qui ne sont pas simples. La génétique des populations propose même une structure doublement K-tableaux : L’écologie des communautés a posé des questions expérimentales pertinentes avant d’avoir des solutions techniques adaptées : c’est un mérite qui lui a coûté cher. Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 4/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel 2 La classe ktab 2.1 Rangement des objets Qu’il s’agisse de mêmes individus ou de mêmes variables ou des deux, il n’y a qu’une manière de ranger les objets pour des raisons pratiques (figure 1 A). Ceci implique quelques précautions pour l’utilisateur. Au plan théorique, on voit donc que trois situations se présentent. K tableaux peuvent avoir les mêmes individus (figure 1 B) : (X1 , Q1 , D) (X2 , Q2 , D) ··· (XK , QK , D) ou les mêmes variables (figure 1 C) : (X1 , Q, D1 ) (X2 , Q, D2 ) ··· (XK , Q, DK ) ou les mêmes marges : (X1 , Q, D) (X2 , Q, D) ··· (XK , Q, D) ou être des tables de contingences avec une marge en commun (figure 1 D) ce qui pose une question spécifique que nous rencontrerons plus loin. On considère les K-tableaux comme une forme de données unique qui peut avoir des significations diverses : Figure 1 – K-Tableaux : un stockage commun pour des situations variées. Un objet de la classe ktab est une liste de data frames ayant en commun les lignes (row.names) et les poids. Chaque rectangle représente un data frame de la liste. Chacun de ces data frames est le tableau d’un schéma de dualité à deux pondérations qui s’écrit (Xk , Qk , D), le D étant commun. Les noms des lignes des Xk sont les mêmes. Les Qk sont rangés dans un vecteur commun. Une liste de la classe ktab comprend donc : ? blo le vecteur du nombre de colonnes des tableaux ? lw le vecteur des poids des lignes commun à tous les tableaux Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 5/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel ? cw le vecteur des poids des colonnes ? TL un data frame à deux composantes pour gérer le rangement des paramètres associés aux lignes des tableaux ? TC un data frame à deux composantes pour gérer le rangement des paramètres associés aux colonnes des tableaux ? T4 un data frame à deux composantes pour gérer le rangement des paramètres à 4 composantes associés à un tableau Les composantes TL, TC et T4 contiennent des variables qualitatives permettant de manipuler des informations associées aux tableaux par le schéma. ? T est la variable qualitative dont chaque modalité représente un tableau, ? L la variable qualitative dont chaque modalité représente une ligne du tableau concerné. ? C la variable qualitative dont chaque modalité représente une colonne du tableau concerné. Le croisement de T avec L ou C permet de gérer les valeurs associées à chaque ligne ou chaque colonne du tableau. Le croisement de T avec 4 permet de gérer 4 valeurs associées à chaque tableau. 2.2 Signification et objectifs Un objet de la classe ktab est donc l’assemblage de K analyses séparées, qu’elles soient appariées par les lignes ou par les colonnes ou par les deux. Ceci signifie que les traitements préalables des tableaux (e.g. centrés par colonnes si les colonnes sont des variables, normalisés par lignes si les lignes sont des variables, doublement centrés si les tableaux sont des tables de contingence, . . . ) sont faits avant la constitution de la liste. Ceci est particulièrement important pour les doubles appariements : Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 6/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel Dans ce cas, B1 et C2 sont strictement équivalents, de même que C1 et B2, de même que D1 et D2. Ceci est purement formel et ne préjuge en rien de ce qu’on veut faire. On peut introduire la question en disant que globalement : ? un tableau peut être une variable en ce sens que plusieurs colonnes peuvent être nécessaires pour enregistrer l’information d’un type donné ; ? un tableau peut être un individu en ce sens que plusieurs lignes peuvent être nécessaires pour enregistrer l’information d’un type donné ; ? un tableau peut être une structure en ce sens qu’il définit à lui seul une typologie de variables et/ou d’individus. Ainsi une distribution de granulométrie donnée par 20% argile, 70% limon et 10% sable prendra 3 colonnes mais ne contiendra qu’une variable. Au contraire, une mesure de p variables sur n individus appartenant à la même population sera multivariée (chaque colonne est utile indépendamment des autres) mais ne représentera qu’un individu (une population, un groupe, un échantillon). Au contraire, enfin, un tableau faunistique représente un mode de dispersion des taxons entre les stations, mais rien n’empêche de reproduire la mesure à une autre date et le tableau représente alors une structure. Rien ne se ressemble moins sur le fond que deux K-tableaux de nature différente, alors que formellement ce sont des objets très proches. On devra donc abandonner définitivement l’idée que la forme des données impose la forme du traitement. Bien au contraire, il est ici possible de faire exactement le contraire de ce dont on a besoin ! La principale difficulté vient d’un argument théorique. Il y a plusieurs méthodes (ACP, AFC, ACM, . . . ) associées à un seul tableau qui résolvent plusieurs problèmes (inertie, codage, auto-modélisation) à l’aide d’un seul algorithme qui relève d’un seul modèle (duality diagram). Cette unicité est perdue dans un couple de tableaux, plus encore avec K tableaux. LA méthode n’existe pas et n’existera jamais. La question centrale est celle des objectifs. Quand on aborde l’analyse des données multi-tableaux, la principale difficulté est la maı̂trise des objectifs poursuivis. La richesse implicite de la Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 7/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel structure des données interdit un comportement basé sur la présentation formelle des données. Deux exemples qui ne demandent aucune introduction technique montrent cet aspect fondamental. Prenons le petit exemple numérique qui figure en fin de l’ouvrage de C. Lavit [15] pour l’illustration du programme STATIS. 0 0.8 ● Mat82 ● Mat75 agr ● Lun82 ● Gig82 ● Mat68 ● Gan82 ● Gan75 ● Lun75 ● Gig75 ● Lun68 ● Gig68 0.7 0.2 ter ● Gan68 ouv 0.1 0.9 On a pour 4 communes (Gignac, Ganges, Matellas, Lunel) la mesure de 3 variables communes (taux des emplois agricoles, ouvriers et tertiaires) lors de trois recensements (1968, 1975 et 1982). exo1 <- matrix(c(51.88, 32.55, 15.57, 44.94, 34.59, 20.47, 25.95, 39.15, 34.9, 37.87, 43.19, 18.94, 34.2, 43.32, 22.48, 16.13, 42.18, 41.69, 7.76, 70.93, 21.31, 6.22, 65.96, 27.82, 6.44, 57.06, 36.5, 37.24, 32.45, 30.31, 16.09, 31.22, 52.69, 6.54, 24.68, 68.78), ncol = 3, byr = T) exo1 <- as.data.frame(exo1) names(exo1) <- c("agr", "ouv", "ter") com <- as.factor(rep(c("Gig", "Lun", "Gan", "Mat"), c(3, 3, 3, 3))) rec <- as.factor(rep(c("68", "75", "82"), 4)) row.names(exo1) = paste(com, rec, sep = "") triangle.plot(exo1, lab = row.names(exo1), clab = 1, labeltriangle = T) Or cette figure, interprétée, en donne deux autres. par(mfrow = c(1, 2)) par(mar = rep(0, 4)) w <- triangle.plot(exo1) l1 <- split(as.data.frame(w), com) lapply(1:4, function(k) lines(l1[[k]], lwd = 2)) w <- triangle.plot(exo1) l2 <- split(as.data.frame(w), rec) lapply(1:3, function(k) polygon(l2[[k]], col = palette(rainbow(3))[k])) palette("default") Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 8/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel 0 0.8 0 ● ● ● agr 0.8 ● ter ● ● agr ter ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.7 0.2 ● ● ● ● ouv 0.1 0.7 0.9 0.2 ouv 0.1 0.9 A gauche, on a dessiné les évolutions par commune, ce qui conduit à une question sur la typologie des évolutions. A droite on a dessiné les typologies de communes par dates, ce qui conduit à une question sur l’évolution des typologies. Ici les données sont en dimension deux. On voit tout du même endroit. Quand il y a de nombreuses variables, les deux représentations associées aux deux objectifs peuvent être totalement différentes. Un autre exemple est disponible dans la liste euro123 : data(euro123) par(mfrow = c(2, 2)) triangle.plot(euro123[[1]], min3 = c(0, 0.2, 0.3), max3 = c(0.5, 0.7, 0.8), clab = 1, label = row.names(euro123[[1]]), addax = T) triangle.plot(euro123[[2]], min3 = c(0, 0.2, 0.3), max3 = c(0.5, 0.7, 0.8), clab = 1, label = row.names(euro123[[1]]), addax = T) triangle.plot(euro123[[3]], min3 = c(0, 0.2, 0.3), max3 = c(0.5, 0.7, 0.8), clab = 1, label = row.names(euro123[[1]]), addax = T) moy <- t(data.frame(lapply(euro123[1:3], function(x) apply(x, 2, mean)))) moy pri sec ter in78 0.1340000 0.3600000 0.5060000 in86 0.1046667 0.3130000 0.5823333 in97 0.0672500 0.2764167 0.6563333 triangle.plot(moy, min3 = c(0, 0.2, 0.3), max3 = c(0.5, 0.7, 0.8), label = c("78", "86", "97"), clab = 2) Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 9/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel 0 0.8 0 ● Netherlands ● Belgium ● United_Kingdom ● Denmark ● Luxembourg ● France ● Netherlands ● ●Belgium Denmark ● United_Kingdom ● Luxembourg ● France pri ter ● ● Ireland ● Italy 0.8 ● pri ● Italy ● Ireland ● Germany ● Spain ● Germany ter ● ● Portugal Greece ● Spain Greece ● ● Portugal 0.5 0.2 0.3 0.5 0.7 0.2 sec 0 0.8 0 ● Luxembourg ● Netherlands ● United_Kingdom ●● Denmark Belgium ● France ● Greece ● Portugal 0.3 0.7 0.8 97 86 78 ● ● ● Germany ● ● Italy Spain ● Ireland pri sec ● ter ● 0.5 0.2 sec 0.3 0.5 0.7 0.2 0.3 0.7 La figure pose clairement la question de l’axe de l’évolution ou de l’évolution de l’axe. L’évolution de la moyenne est une question. La déformation de la structure en est une autre. La difficulté de la problématique n’implique pas nécessairement celle de la mise en œuvre technique puisque ici on voit en permanence toute l’information. La statistique K-tableaux introduit la notion de moyenne et de variabilité non plus d’une valeur mais d’une typologie. Est en cause la variabilité de la variabilité. C’est une question nouvelle. Ces questions ont été posées à propos de l’évolution du tapis végétal [19]. De la morphométrie à l’écosystémie, la biologie évolutive est un domaine privilégié de réflexion sur la variabilité. 2.3 Comment faire des ktab ? Il y a quatre stratégies de constitution de K-tableaux : 1. avec une liste de schémas de dualité : ktab.list.dudi 2. avec une liste de data frames : ktab.list.df 3. avec un data frame : ktab.data.frame 4. à partir d’une analyse intra-classe : ktab.within Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 10/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel La plus transparente est de faire K schémas de dualité séparés et de les assembler par ktab.list.dudi. La fonction vérifie que l’assemblage est possible, et en particulier, que les pondérations sont compatibles. data(euro123) pca1 <- dudi.pca(euro123$in78, scale = F, scann = F) pca2 <- dudi.pca(euro123$in86, scale = F, scann = F) pca3 <- dudi.pca(euro123$in97, scale = F, scann = F) kta1 <- ktab.list.dudi(list(pca1, pca2, pca3), tabnames = c("1978", "1986", "1997")) kta1 Identifier les éléments. Pour voir l’intégralité du contenu : unclass(kta1) Pour refaire les analyses séparées : kplot(sepan(kta1), mfr = c(2, 2), clab.c = 1.5) d = 0.1 d = 0.1 Netherlands Denmark Netherlands pri France United_Kingdom Luxembourg Spain Italy Greece terDenmark Belgium United_Kingdom France Luxembourg Portugal Greece Ireland ter Belgium Ireland pri Spain Italy Portugal sec sec Germany Germany Eigenvalues Eigenvalues 1978 1986 d = 0.05 Greece Netherlands Luxembourg pri ter Denmark France United_Kingdom Belgium Ireland Spain Portugal Italy Eigenvalues sec Germany 1997 La seconde manière est de partir d’une liste de data frames et de définir au moment de l’assemblage les poids des lignes et des colonnes : names(euro123) T78 <- data.frame(scalewt(euro123$in78, scale = F)) T86 <- data.frame(scalewt(euro123$in86, scale = F)) T97 <- data.frame(scalewt(euro123$in97, scale = F)) kta2 <- ktab.list.df(list(T78, T86, T97), tabnames = c("1978", "1986", "1997")) kta2 Observer qu’on obtient, avec les valeurs par défaut, une pondération unitaire des lignes, ce qui n’est pas le cas du précédent. Cette option est surtout faite pour associer des tableaux dont les lignes sont des variables (data frames transposés). La troisième manière est la plus simple : elle part d’un tableau et d’un vecteur de nombre de colonnes par blocs : w <- cbind.data.frame(euro123$in78, euro123$in86, euro123$in97) w <- scalewt(w, scale = F) w <- data.frame(w) kta3 <- ktab.data.frame(w, rep(3, 3), tabnames = c("1978", "1986", "1997")) kta3 Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 11/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel La dernière stratégie pour constituer un K-tableaux part d’une analyse intraclasse avec le schéma de principe : w <- rbind.data.frame(euro123$in78, euro123$in86, euro123$in97) pca1 <- dudi.pca(w, scal = F, scan = F) wit1 <- within(pca1, factor(rep(c("1978", "1986", "1997"), rep(12, 3))), scan = F) ktaprovi <- ktab.within(wit1, colnames = rep(row.names(euro123$in78), 3)) kta4 <- t(ktaprovi) Noter l’obligation de transposer le K-tableaux pour se ramener au cas précédent. Les opérations possibles sur les K-tableaux sont schématisées par : 3 Les variables floues Un archétype des tableaux ayant valeur expérimentale de variables est celui des variables floues. Quand on veut noter le lien entre une espèce et l’altitude, on peut dire 670 m pour signifier que l’espèce se trouve en moyenne à 670 m. On peut dire 1|3|2|0|0 sur le code [0,400], [400,800], [800,1200], [1200,1600] et [1600,2000] pour dire qu’une fois sur 6 on trouve l’espèce dans la première classe, 1 fois sur 2 dans la seconde et 1 fois sur 3 dans la troisième. Le profil écologique est une variable floue. La littérature naturaliste du siècle passé est devenu un nouvel espace expérimental en permettant l’extraction (data mining) de l’information sur des grands ensembles de taxa. Sur plusieurs variables et plusieurs espèces, on obtient des tableaux de variables floues : L’exemple de B. Statzner et ses collègues [18] est documenté dans : http://pbil.univ-lyon1.fr/R/pps/pps029.pdf Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 12/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel data(bsetal97) w = bsetal97$biol.blo[1:3] biol.fuzzy = prep.fuzzy.var(bsetal97$biol, bsetal97$biol.blo) w1 = biol.fuzzy[, 1:19] ww1 = 1:sum(w) ww0 = seq(from = 0, by = 4, len = length(w)) ww0 = rep(ww0, w) + ww1 phy = taxo2phylog(as.taxo(bsetal97$taxo)) row.names(w1) = names(phy$leaves) table.phylog(w1, phy, x = ww0, clabel.r = 0.5, clabel.col = 0.75, csi = 0.5, clabel.n = 0) Il y a identité formelle entre les trois classes de données : ? Traits biologiques en variables floues : espèces en lignes, modalités en colonnes, chaque paquet de modalités définit un trait biologique ou écologique (figure 2). ? Fréquences alléliques : populations en lignes, allèles en colonnes, chaque paquet d’allèles est attaché à un locus donné. ? Usage du code génétique : séquences en lignes, codons en colonnes, chaque paquet de codons regroupe les synonymes codant pour un même acide aminé. Ces quelques exemples invitent à se poser des questions : peut-on comparer des typologies ? Existe-t’il une moyenne de typologies ? Mesure-t’on la variabilité entre typologies ? Les traits biologiques sont-il liés entre eux ? Qu’est ce que la corrélation entre tableaux ? Peut-on repérer des tableaux qui ne servent à rien, des locus non structurant, des groupes faunistiques non indicateurs ? L’accès le plus facile se fait par les analyses inter et intra-classes. 4 4.1 Les analyses inter et intra-classes Tableaux de modèles et d’erreurs Dès qu’on introduit un facteur en face d’une variable, on décompose la variance de cette variable en deux composantes inter (la variabilité des moyennes par classes) et intra (la variabilité moyenne dans une classe). Tout ceci s’étend à une matrice de variances covariances sans difficulté. X est un tableau, X est le tableau centré associé, C = wYT Y sa matrice de covariances (w est 1/n ou 1/(n − 1) suivant les sensibilités et cela n’a aucune importance). La régression sur le facteur est une projection qui remplace les données par les moyennes par classe. Les données se décomposent en un modèle et une erreur : b + (Y − Y) b =M+E Y=Y équation qui ne devrait pas poser de problème mais n’est pas complètement stupide si on rajoute que : C = w(M + E)T (M + E) = wMT M + wET E La variance (la matrice de covariance) des données égale celle des modèles plus celle des erreurs parce que la covariance (la matrice de covariances) entre les données et les erreurs est nulle. C’est la chose essentielle à savoir ! Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 13/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.1 0.3 0.5 0.7 0.9 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● eggnum.1 eggnum.2 eggnum.3 eggnum.4 eggnum.5 eggnum.6 egglen.1 egglen.2 egglen.3 egglen.4 egglen.5 egglen.6 size.1 size.2 size.3 size.4 size.5 size.6 size.7 A.B. Dufour & D. Chessel Acilius sulcatus Agabus erichsoni Agabus undulatus Colymbetes fuscus Cybister lateralimarginalis Dytiscus marginalis Dytiscus semisulcatus Elmis aenea Stenelmis sexlineata Gyrinus substriatus Orectochilus villosus Enochrus quadripunctatus Hydrobius fuscipes Hydrochara caraboides Hydrophilus piceus Hydrophilus triangularis Psephenus falli Psephenus herricki Chironomus plumosus Culex pipiens Boophthora erythrocephala Eusimuliu aureum Odagmia ornata Simulium morsitans Simulium noelleri Simulium vittatum Wilhelmia equina Wilhelmia lineata Lipsothrix nigrilinea Tipula sacra Baetis fuscatus Baetis rhodani Callibaetis floridanus Caenis horaria Caenis luctuosa Ephemerella dorothea Ephemerella ignita Ephemerella needhami Ephemerella rotunda Ephemera danica Ephemera simulans Ephemera varia Ephemera vulgata Epheron album Ecdyonurus forcipula Epeorus humeralis Epeorus pleuralis Heptagenia hebe Rhithrogena semicolorata Stenonema fuscum Leptophlebia cupida Leptophlebia vespertina Siphlonurus quebecensis Orohermes crepusculus Sialis fuliginosa Sialis lutaria Sialis rotunda Aeshna isosceles Anax imperator Calopteryx maculata Phaon iridipennis Pyrrhosoma nymphula Epiophlebia superstes Archilestes grandis Lestes congener Lestes eurinus Lestes viridis Zygonyx natalensis Platycnemis pennipes Osmylus fulvicephalus Sisyra fuscata Allocapnia pygmaea Capnia bifrons Alloperla onkos Chloroperla torrentium Eustheniopsis venosa Dinotoperla brevipennis Leuctra hippopus Nemoura avicularis Nemoura cinerea Nemoura trispinosa Nemurella pictetii Dinocras cephalotes Neoperla clymene Paragnetina media Perla burmeisteriana Perla bipunctata Diura bicaudata Hydroperla crosbyi Isoperla clio Isoperla transmarina Perlodes mortoni Pteronarcys proteus Taeniopteryx nebulosa Beraeodes minutus Brachycentrus nigrisoma Brachycentrus subnubilis Oligoplectrum maculatum Agapetus bifidus Agapetus fuscipes Cheumatopsyche campyla Cheumatopsyche lasia Cheumatopsyche speciosa Hydropsyche angustipennis Hydropsyche instabilis Hydropsyche phalerata Hydropsyche simulans Athripsodes aterrimuss Athripsodes cinereus Ceraclea senilis Mystacides longicornis Oecetis lacustris Triaenodes bicolor Apatania fimbriata Apatania muliebris Apatania zonella Clistoronia magnifica Drusus annulatus Limnephilus flavicornis Limnephilus lunatus Onocosmoecus unicolor Potamophylax latipennis Pseudostenophylax edwardsi Philopotamus montanus Oligotricha striata Phryganea grandis Neureclipsis bimaculata Plectrocnemia conspersa Rhyacophila nubila Notidobia ciliaris Sericostoma personatum Figure 2 – Traits biologiques, taxonomie et phylogénie en mélange : une grande classe de données qui relève de la statistique K-tableaux. Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 14/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel data(jv73) Y = as.data.frame(scale(jv73$morpho)) M <- as.data.frame(lapply(Y, function(x) predict(lm(x ~ jv73$fac.riv)))) E <- as.data.frame(lapply(Y, function(x) residuals(lm(x ~ jv73$fac.riv)))) cbind(round(cov(Y, Y), 2), round(cov(E, M), 2)) Alt Das Pen Smm Qmm Vme Alt Das Pen Smm Qmm Vme Alt 1.00 -0.14 0.21 -0.14 -0.09 0.03 0 0 0 0 0 0 Das -0.14 1.00 -0.79 0.66 0.71 0.45 0 0 0 0 0 0 Pen 0.21 -0.79 1.00 -0.59 -0.58 -0.23 0 0 0 0 0 0 Smm -0.14 0.66 -0.59 1.00 0.86 0.27 0 0 0 0 0 0 Qmm -0.09 0.71 -0.58 0.86 1.00 0.63 0 0 0 0 0 0 Vme 0.03 0.45 -0.23 0.27 0.63 1.00 0 0 0 0 0 0 cbind(round(cov(M, M), 2), round(cov(E, E), 2)) Alt Das Pen Smm Qmm Vme Alt Das Pen Smm Qmm Vme Alt 0.69 0.19 -0.06 0.03 0.11 0.17 0.31 -0.34 0.27 -0.17 -0.20 -0.14 Das 0.19 0.33 -0.29 0.32 0.40 0.29 -0.34 0.67 -0.50 0.34 0.31 0.17 Pen -0.06 -0.29 0.34 -0.30 -0.34 -0.19 0.27 -0.50 0.66 -0.29 -0.24 -0.04 Smm 0.03 0.32 -0.30 0.65 0.61 0.20 -0.17 0.34 -0.29 0.35 0.24 0.07 Qmm 0.11 0.40 -0.34 0.61 0.71 0.41 -0.20 0.31 -0.24 0.24 0.29 0.22 Vme 0.17 0.29 -0.19 0.20 0.41 0.50 -0.14 0.17 -0.04 0.07 0.22 0.50 Nous avons ici une illustration de la linéarité très forte. Le tableau des données Y est la somme du modèle et de l’erreur. Dans M chaque colonne est le résultat d’une application linéaire (projection) portant sur la colonne correspondante de Y. Mais chaque ligne de M est déduite de la ligne correspondante de Y (déplacement vers le centre de gravité de la classe) qui ne l’est pas. Faire l’analyse de Y, c’est faire l’analyse globale. Faire celle de M, c’est faire l’analyse interclasse ; faire celle de E, c’est faire l’analyse intra-classe. glob1 <- dudi.pca(jv73$morpho, scale = T, scan = F) bet1 <- between(glob1, jv73$fac.riv, scan = F) wit1 <- within(glob1, jv73$fac.riv, scan = F) Observer que l’inertie de la première est de 5 (le nombre de variable) dont 54% est de nature inter-classe et 46% de nature intra-classe. En gros la moitié de la variabilité totale est prédictible par le nom de la rivière. Mais observer que la réduction de dimension dans les trois cas est quasiment la même : round(glob1$eig/sum(glob1$eig), 2) [1] 0.57 0.18 0.13 0.09 0.03 0.01 round(bet1$eig/sum(bet1$eig), 2) [1] 0.61 0.22 0.10 0.06 0.00 0.00 round(wit1$eig/sum(wit1$eig), 2) [1] 0.64 0.19 0.07 0.05 0.04 0.01 Observer que les coordonnées sont très voisines : a = glob1$li[, 1] b = bet1$ls[, 1] c = wit1$ls[, 1] round(cor(data.frame(a, b, c)), 2) a b c a 1.00 0.98 0.98 b 0.98 1.00 0.93 c 0.98 0.93 1.00 Le lien entre les variables est de même nature entre les stations d’une rivière et entre les moyennes par rivières. Il s’agit d’un élément mécanique : une rivière d’altitude a un débit plus faible et une pente plus forte qu’une rivière moins élevée. Retrouver que l’altitude varie beaucoup entre rivières. Mais l’amont d’une rivière a un débit plus faible et une pente plus forte que l’aval, quelle que soit l’altitude. On retrouve ça sur la figure plus technique qui suit : Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 15/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel par(mfrow = c(1, 3)) s.corcircle(glob1$co) s.corcircle(bet1$as) s.corcircle(wit1$as) Alt Axis2 Vme Pen Qmm Axis1 Axis1 Das Smm Axis2 Dans R92 , les variables (normalisées, de longueur 1) sont projetées sur le plan des composantes. Dans R5 , les axes d’inertie (normés) de l’analyse inter (les axes d’inertie du nuage des centres de gravité) sont projetés sur les axes d’inertie globaux. Enfin, les axes d’inertie de l’analyse intra (celle du nuage formé des sous-nuages recentrés) sont projetés sur les axes d’inertie globaux. Cette introduction n’a qu’un seul objectif : souligner qu’un paquet de tableaux superposés est une structure de données qui conduit à l’emploi de méthodes profondément différentes dans leurs objectifs. Si les colonnes communes sont des variables, on peut séparer les populations par leur moyenne (inter-classes, discriminante). On peut rechercher au contraire un compromis entre leur structure interne (intra-classes, STATIS, cf. infra). Inter-classes et intra-classes sont des jumelles au plan théorique (deux ACPVI projetant soit sur un espace soit sur son orthogonal). Elles sont opposées au plan expérimental (ce qui sépare contre ce qui rapproche). Intra-classes et STATIS sont fort éloignées au plan théorique, elle sont voisines au plan expérimental. Plus qu’ailleurs, il est indispensable de savoir ce que l’on veut. Ici, c’est l’analyse intra-classe qui nous intéresse, pare qu’elle aborde chaque rivière comme un système. Si on ne s’intéresse qu’à cet aspect, sans vouloir le coordonner à une analyse globale ou inter-associée, deux fonctions sont à connaı̂tre. 4.2 Transformation de Bouroche La première concerne les variables numériques. Ce qui précède utilise une normalisation des données (élimination des questions d’unité en plaçant les moyennes à 0 et les variances à 1) puis un recentrage par groupe (élimination de l’effet moyen). Il s’en suit que la variance totale d’une variable est sa variance interclasse. On peut amplifier la correction soit en replaçant la variance à 1 dans chaque groupe (chaque variable joue dans chaque groupe un rôle équivalent) soit en reportant la variance totale après recentrage à 1 (chaque variable joue globalement le même rôle en pouvant avoir des variances par groupes très diverse). On utilise dans ce but la fonction within.pca avec les option scaling = "partial" ou scaling = "global". Dans le premier cas, on fait des ACP normée par blocs, dans le second on fait des ACP centrées par blocs après une Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 16/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel normalisation sur variables recentrées (transformation de Bouroche [3]). En utilisant simplement dudi.pca et within on fait des ACP centrées par blocs avec ou sans normalisation préalable. within s’applique à tout type de variables. Cette discussion est un peu pénible mais indique une difficulté. C’est encore une question d’intention. Par exemple, la variabilité entre les stations d’une rivière n’est pas constante dans le temps. Elle s’exprime plus ou moins en fonctions des événements hydrologiques. Si on pense que c’est un fait parasite, on remet les variances à l’unité. Si on pense que c’est un fait important, on le laisse s’exprimer dans des variances inégales. J. Verneaux, dans un recodage intégral des données en classes (voir la fiche citée) veut maı̂triser la signification des valeurs. On le comprend. Toutes les méthodes sont très sensibles aux transformations préalables. Il faut en prendre le plus grand soin. Les critères expérimentaux doivent ici prendre le pas sur les contraintes techniques. 4.3 Les AFC intra-classes La seconde concerne la notion d’intra-classe en AFC [1]. C’est une question assez difficile sur le fond pour une raison très simple. Dans un tableau à n lignes et p colonnes décomposé en blocs de n1 , n2 , . . . , nK lignes, l’ACP du total donne un poids unité à chaque variable, les ACP de chacun des tableaux font de même et la coordination des différentes analyses se fait simplement. Dans la même situation, en AFC, il en va tout autrement. L’AFC du tout utilise la pondération marginale du tableau complet, chaque AFC de chaque morceau utilise sa propre pondération marginale et devient difficilement comparable avec les autres. On doit imposer une marge commune et recentrer les blocs en conséquence. Les différents morceaux sont alors des AFC sur modèles. Ceci concerne les tableaux faunistiques avec les mêmes espèces ou les mêmes sites ou (encore pire) les deux. Ceci concerne aussi les tableaux populations-allèles par locus et de manière générale les tables de contingence à marges communes. La fonction utile est within.coa, le descriptif du calcul est p. 27-29 dans : http://pbil.univ-lyon1.fr/R/fichestd/tdr62.pdf Noter encore que le tableau d’AFC peut être doublement partitionné. On trouve cette situation avec des espèces par groupes et des relevés par date [5] ou avec des séquences par espèces et des codons par acides aminés [17]. On trouvera la fonction associée (witwit) une référence utile avec [4], un exemple dans : http://pbil.univ-lyon1.fr/R/querep/qrd.pdf et un descriptif à : http://pbil.univ-lyon1.fr/R/thematique/them6.pdf 5 5.1 Approches élémentaires des cubes de données Analyses triadiques partielles La plus simple des méthodes multi-tableaux pour les cubes est appelée à tort analyse triadique dans [20] et à raison analyse triadique partielle dans [14] ou Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 17/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel pré-STATIS (ou STATIS sur les X) dans [16] ou PCA-SUP (PCA of a derived two-way supermatrix) dans [12] et envisagée à l’origine dans [21]. L’objectif est de définir la structure commune à K tableaux ayant les mêmes lignes et les mêmes colonnes. La fonction utile est pta. data(meaudret) summary(meaudret$plan) dat sta autumn:5 S1:4 spring:5 S2:4 summer:5 S3:4 winter:5 S4:4 S5:4 A 4 2 3 A site E E H P E P A 5 1 E A E E A A 8.6 8.4 E 3 site 4 H P H A P E H A H A H A E E A 5 E 1 2 3 A site E 4 5 E P E H A 2 3 4 5 1 12 A site 10 5 P E 2 H A P H P A P H E A 3 4 5 2 P H P A H P E A 3 4 5 1 H P 4 5 6 E 4 H P P A E 2 3 site A 3 4 5 E H H P H E P A 1 H P E A P H 4 5 A 1 P E H H P 2 A E 0 4 2 2 1 H A E A H E P H A E 5 10 6 6 Nitr 8 E A E H P A 3 12 8 A 4 E P H 1 site A E H E A P E P H A Phos 280 P H P E A P H E P 1 4 H P Oxyd E H 2 H A P E 2 H E A 20 E A Bdo5 30 2 A 10 360 Cond 320 H P Ammo H H A A 0 pH P P 7.8 H A 400 1 H A P 7.6 H A 100 H P H H P P A E 8.2 H 8 P 8.0 500 H 400 E 6 P P Flow 10 Temp P E 5 P E 300 E E 200 15 On a mesuré 9 variables, respectivement 1- Température (°C), 2- Débit (l/s), 3pH, 4- Conductivité (µΩ/cm), 5- Oxygène (% de saturation), 6- DBO5 (mg/l oxygène), 7- Ammoniaque (mg/l), 8- Nitrates (mg/l) et 9- Orthophosphates (mg/l) dans 5 stations d’un réseau hydrographique à 4 saisons (printemps, été, automne, hiver). Les 5 stations sont placées d’amont en aval. P 2 3 par(mfrow = c(3, 3)) par(mar = c(2.1, 4.1, 1.1, 1.1)) site <- as.numeric(meaudret$plan$sta) date <- meaudret$plan$dat levels(date) <- c("A", "P", "E", "H") for (var in 1:9) { z <- meaudret$mil[, var] plot(site, z, type = "n", ylab = names(meaudret$mil)[var]) for (sai in 1:4) { w <- levels(date)[sai] points(meaudret$mil[date == w, var], pch = w, type = "b", col = palette()[sai], lwd = 2) } } Les données contiennent une structure temporelle et une structure spatiale. En normalisant les données par date, on impose un point de vue. Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 18/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel E H A P 3 2.0 site E H H 4 5 2 3 4 5 1.0 pH −1.0 −2.0 2 3 2.0 4 site A H E P P A 5 3 site H E A H P 2 3 4 5 A P site H E H E P P P A E H 1 Phos A E P A H 2 3 4 P A E H E H P A E 1 4 2 P A E A E P 5 P E A E P H P H P H 1.0 E H P A A E A −0.5 P A H E H 1 H E 0.0 Nitr H P A −1.0 0.0 −1.0 P E H 1 A P A P E H H E 5 H 1 E A A P site 1.0 2 P A A P 4 P Oxyd A P H E 1 0.0 2.0 P 3 E −1.0 E Bdo5 0.5 A 2 H E A E H 1.0 H E 1.0 −1.5 A H 1 A E H A E 0.0 site 5 −1.0 P A H 4 E H P A H 1.5 3 H A H P E A P H E P E A P 0.5 2 E P −1.5 1 A E P 0.0 1.0 A −2.0 E P −0.5 Cond E 0.0 E P A E H Ammo P H Flow P A P H A −1.0 H E 0.0 H 1.5 −2.0 −1.0 Temp H P E A A −2.0 1.0 pca0 <- withinpca(meaudret$mil, meaudret$plan$dat, scal = "partial", scann = F) par(mfrow = c(3, 3)) par(mar = c(2.1, 4.1, 1.1, 1.1)) for (var in 1:9) { z <- pca0$tab[, var] plot(site, z, type = "n", ylab = names(pca0$tab)[var]) for (sai in 1:4) { w <- levels(date)[sai] points(pca0$tab[date == w, var], pch = w, type = "b", col = palette()[sai], lwd = 2) } } 5 H A P H A A E H P E 1 2 3 4 5 Chaque date donne un tableau d’ACP normée. Nous avons donc 4 ACP à interpréter. La fonction sepan est la plus simple et l’une des plus utiles qui s’applique à un K-tableaux. kta0 <- ktab.within(pca0) plot(sepan(kta0)) 1 2 3 4 5 6 summer 0 0 1 2 3 4 5 6 spring 1 1 0 2 3 4 5 6 winter 0 2 3 4 5 6 autumn On reconnaı̂t les 4 graphes de valeurs propres. Les K-tableaux ont des méthodes qui comportent des fonctions kplot : Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 19/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel kplot(sepan(kta0)) d = 0.5 d = 0.5 su_1 sp_1 Cond su_2 Oxyd sp_3 pH pH sp_2 sp_4 Oxyd Ammo Bdo5 Bdo5 Ammo su_5 su_3 sp_5 Nitr Phos Cond su_4 Phos Flow Temp Eigenvalues FlowNitr Temp Eigenvalues spring summer d = 0.5 d = 0.5 Temp au_1 Bdo5 Ammo au_2 Oxyd Cond pH au_5 Phos au_3 au_4 Oxyd Cond Bdo5 Ammo Phos wi_1 wi_2 wi_3 wi_4 wi_5 Temp Nitr pH Eigenvalues Eigenvalues Flow Nitr autumn Flow winter Le seul intérêt est de souligner l’absence de cohésion. On sait qu’un axe est lui-même ou son opposé avec exactement la même signification, comme à pile ou face. On a 4 analyses qui ont bien des points communs. L’analyse triadique partielle fait le bilan de ses points communs. Il s’agit d’abord de typologie moyenne ou compromis. Deux tableaux sont directement comparables, puisqu’ils portent sur les mêmes individus (stations) et les mêmes variables (descripteurs). Mais attention : pta0 <- pta(kta0) Observer le message d’erreur Error in pta(kta0) : non equal col.names among array. En effet : row.names(kta0) [1] "Temp" "Flow" "pH" "Cond" "Bdo5" "Oxyd" "Ammo" "Nitr" "Phos" col.names(kta0) [1] "sp_1" "sp_2" "sp_3" "sp_4" "sp_5" "su_1" "su_2" "su_3" "su_4" "su_5" "au_1" [12] "au_2" "au_3" "au_4" "au_5" "wi_1" "wi_2" "wi_3" "wi_4" "wi_5" tab.names(kta0) [1] "spring" "summer" "autumn" "winter" Les tableaux ont les mêmes lignes, mais pas les mêmes noms de colonnes. La fonction vérifie ce point. col.names(kta0) <- rep(paste("sta", 1:5, sep = ""), 4) pta0 <- pta(kta0, scan = F) Notons n le nombre de lignes et p le nombre de colonnes de chacune des analyses séparées, Dn et Dp les normes associées. On peut calculer un produit scalaire entre tableaux : Covv(Xk , Xj ) = T race XTk Dn Xj Dp = T race XTj Dn Xk Dp D’où le coefficient de corrélation entre deux tableaux : RV (Xk , Xj ) = p Covv(Xk , Xj ) p V av(Xk ) V av(Xj ) Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 20/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel pta0$RV spring summer autumn winter spring 1.0000000 0.6934558 0.7886185 0.2834592 summer 0.6934558 1.0000000 0.7671756 0.5340456 autumn 0.7886185 0.7671756 1.0000000 0.4794976 winter 0.2834592 0.5340456 0.4794976 1.0000000 Les RV sont élevés, mais la structure du tableau 4 est manifestement la plus éloignée du groupe des 3 autres. La matrice des RV est diagonalisée. On obtient une image euclidienne des tableaux pour ce produit scalaire. pta0$RV.eig [1] 2.8121449 0.7541476 0.2536781 0.1800294 s.corcircle(pta0$RV.coo) winter summer autumn spring Dans le cas présent, ce produit scalaire est simplement, entre les tableaux j et k, la somme des corrélations des couples de variables identiques : Xp Covv(Xk , Xj ) = T race XTk Dn Xj Dp = corr Xik , Xij i=1 Le coefficient RV est donc simplement la moyenne des corrélations des couples de variables identiques : Pp V av(Xk ) = Covv(Xk , Xk ) = T race XTk Dn Xk Dp = i=1 corr Xik , Xik = p ⇓ Pp corr (Xi ,Xi ) Covv(Xk ,Xk ) √ RV (Xk , Xk ) = √ = i=1 p k k V av(Xk ) V av(Xk ) Le coefficient RV est la corrélation entre tableaux comme moyenne des corrélations entre variables (pour les couples de variables identiques). Ce coefficient pourrait être négatif, ce qui indiquerait un lien nul voire inversé entre deux tableaux et l’analyse devrait alors s’en tenir là. La diagonalisation a pour fonction d’attribuer à chaque tableau un poids : pta0$tabw [1] 0.5066788 0.5403976 0.5509640 0.3842991 Le poids attribué au tableau 4 est moindre que celui des trois autres. Vérifier que la somme des carrés de ces poids est égale à 1. Dans la même logique que les coefficients des variables (loadings) donnant les composantes principales d’une ACP normée (combinaisons linéaires de variances maximales). La combinaison des tableaux utilisant ces poids est un nouveau tableau de synthèse combinant les tableaux initiaux à proportion de leurs apports à la description de la structure commune dite compromis. Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 21/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel On considère le tableau : XK Y= αk Xk k=1 On peut adjoindre à ce tableau les pondérations lignes et colonnes communes à chaque terme du K-tableaux et calculer l’inertie du triplet obtenu : P P K K T T race YT Dn YDp = T race j=1 αj Xj Dp k=1 αk Xk Dn PK PK = j=1 k=1 αj αk T race XTk Dn Xj Dp = aT Rv a Il s’en suit que les poids retenus maximisent, sous la contrainte ”somme des carrés de ces poids égale à 1” l’inertie du tableau combiné. Ce nouveau tableau, dont le contenu importe peu (ce sont des combinaisons des valeurs des tableaux initiaux avec des coefficients tous positifs), a pour fonction de définir des axes et des composantes, donc des vecteurs de Rn et de Rp , qui expriment la structure compromis. Le programme est donc consacré essentiellement à une recherche d’un compromis inter-tableaux et à l’étude de la structure de ce compromis. Le tableau compromis (tab) et les deux pondérations (cw et lw) ont été conservés et les objets pta sont de la classe dudi. Vérifier l’existence de ces objets dans pta0. Ce tableau compromis peut faire l’objet de toutes les manipulations possibles sur une analyse ordinaire, comme une analyse d’inertie : inertia.dudi(pta0, row = T)$row.rel Axis1 Axis2 con.tra Temp 115 -8494 581 Flow -256 -9514 1397 pH -8779 -957 640 Cond 9662 -80 1172 Bdo5 9827 -152 1342 Oxyd 9703 -1 1399 Ammo 9846 -138 1300 Nitr -2845 -6295 1165 Phos 7686 -2178 1004 On a gardé deux axes et les cosinus carrés (au sens du même produit scalaire) entre chacun des tableaux et le compromis réduit à nf composantes est : pta0$cos2 1 2 3 4 0.8496725 0.9062170 0.9239364 0.6444484 On obtient des coordonnées pour les lignes et les colonnes et les scores normés associés dans les composantes li et co, l1 et c1. Outre le calcul d’un tableau combinant tous les tableaux de départ et son analyse, on a la configuration très particulière (figure 3). L’ensemble de ces projections est directement accessible dans le kplot de cette analyse : kplot(pta0, clab = 1.5, csub = 3) On observera que les colonnes sont traitées comme des variables et les lignes comme des individus alors que l’origine du K-tableaux donnait une disposition inverse. La transposition pure et simple de chaque tableau, qui ne change strictement rien sur le fond, rétablit la situation naturelle et on préfèrera la figure plus lisible donnée par : Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 22/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel Figure 3 – En gris le tableau compromis dont l’analyse permet la projection en individus supplémentaires de toutes les lignes et la projection en variables supplémentaires de toutes les colonnes. On peut même projeter sur un plan des axes principaux du compromis les axes principaux de chaque tableau et sur le plan des composantes principales du compromis les composantes principales de chacun des tableaux. kplot(pta(t(kta0), scan = F), clab = 1.5, csub = 3) Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 23/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel d = 0.5 d=2 2 2 4 3 Cond.1 Oxyd.1 Ammo.1 Bdo5.1 Phos.1 sta1.1 1 sta2.1 4 pH.1 Nitr.1 sta3.1 sta4.1 sta5.1 spring Temp.1 Flow.1 spring x13 sta2.2 4 sta1.2 1 d = 0.5 Oxyd.2 Bdo5.2 Ammo.2 Cond.2 Phos.2 sta3.2 sta4.2sta5.2 summer summer x1 3 Nitr.2 Temp.2 Flow.2 sta2.3 4 autumn sta5.3 sta3.3 sta4.3 x1 1 summer d = 0.5 2 x1 3 pH.3 1 Temp.3 Nitr.3 Flow.3 autumn 3 4 summer Bdo5.3 Ammo.3 Oxyd.3 Cond.3 Phos.3 sta1.3 1 spring 2 pH.2 d=2 2 1 spring d=2 2 3 4 autumn autumn d = 0.5 d=2 2 2 3 Temp.4 x1 1 sta1.4 sta5.4 sta2.4 sta3.4 sta4.4 4 winter winter x1 3 Oxyd.4 Cond.4 Bdo5.4 Ammo.4 Phos.4 pH.4 Nitr.4 Flow.4 winter 1 4 winter On voit ainsi K analyses simultanées exprimées dans le même cadre géométrique. L’analyse triadique partielle est donc très simple dans ses fondements comme dans son usage. Ici l’essentiel tient dans la permanence de deux axes établissant une boucle (station 1 non perturbée, pollution dans la station 2, restauration progressive sur 3-4-5 liée à l’augmentation du débit), l’affaiblissement de cette structure en hiver et une restauration plus rapide au printemps. Interpréter cette analyse sur la faune (Trichoptères) : pca1 <- dudi.pca(meaudret$fau, scal = F, scan = F) wit1 <- within(pca1, meaudret$plan$dat, scan = F) kta1 <- ktab.within(wit1) col.names(kta1) <- rep(paste("sta", 1:5, sep = ""), 4) kta1 <- t(kta1) kplot(pta(kta1, scan = F), clab = 1.5, csub = 3) Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 24/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel d=5 sta4.1 sta1.1 sta2.1 sta3.1 1 4 spring 2 spring spring d=2 2 2 Hla.2Bpu.2 Eda.2 sta1.2 1 summer 3x1 Par.2 Rhi.2 Hab.2 Brh.2 Cen.2 Bsp.2 Bni.2 Cae.2 Ecd.2 Eig.2 sta2.2 sta3.2 sta4.2 sta5.2 4 3 spring d=5 x1 3 1 4 Eig.1 Ecd.1 sta5.1 3 d=2 Bni.1 Brh.1 Hla.1 Rhi.1 Eda.1 Par.1 Bpu.1 Cen.1 Bsp.1 Hab.1 Cae.1 2 summer 4 summer d=5 1 summer d=2 2 2 sta1.3 x1 sta2.3 4 Bni.3 Cae.3 Hab.3 sta3.3 sta4.3 1 3 sta5.3 autumn Cen.3Bpu.3 Hla.3 Eda.3 Par.3 Rhi.3 x1 4 autumn autumn d=5 autumn d=2 2 2 x1 4 sta1.4 sta3.4 sta2.4 sta4.4 3 1 sta5.4 1 3 Eig.3 Bsp.3 Brh.3 Ecd.3 Bpu.4 Eda.4 Hla.4 Rhi.4 Cen.4 Par.4 Hab.4 Bsp.4 Brh.4 Eig.4 Cae.4 Bni.4 x1 4 3 1 Ecd.4 winter winter winter winter L’ACP 3-modes fait partie des méthodes qui étendent les propriétés de reconstitution de données. On sait approximer un tableau par : xij = ai bj + rij On peut donc chercher des modèles des cubes de données dont le plus simple est : xijk = ai bj ck + rijk Une bibliographie considérable est associée à cette problématique [13] [6] [10]. Le site de référence de la Three-Mode Company est consacré à ce domaine : http://three-mode.leidenuniv.nl/index.html 5.2 L’AFC de Foucart La version analyse des correspondances dite ”AFC de Foucart” [7] [8] [9] n’a pas un support aussi canonique (du fait de la non permanence des pondérations) mais conserve cette facilité d’interprétation pour un objectif cependant relativement complexe. Le jeu de données utilisées est proposé par J. Blondel et Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 25/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel H. Farré [2]. Il illustre un des problèmes fondamentaux de l’écologie factorielle. En confrontant un cortège faunistique à un paramètre de structure de l’habitat, on définit la notion de profil écologique ou de niche écologique. Quand on recommence la même opération à une autre date ou dans une autre région, la relation binaire faune-milieu devient une relation ternaire faune-milieu-région. Les données sont dans bf88 : data(bf88) names(bf88) [1] "S1" "S2" "S3" "S4" "S5" "S6" Elles forment une liste de 6 data frames de dimensions 79×4. Il s’agit de mesurer la variabilité du cortège avifaunistique entre 4 régions (Pologne, Bourgogne, Provence et Corse), le long du gradient de fermeture de la végétation vu par six strates d’échantillonnage (1- végétation buissonnante basse (hauteur < 1 m) à 6- forêts de plus de 20 m de hauteur). La relation entre cortège faunistique et architecture de la végétation définit dans chaque région une structure de tableau donc une analyse. Cette analyse est une analyse des correspondances, sans contestation (typologie d’espèces par leur courbe de réponse inter-strates, typologie de strates par leur profil spécifique). Dans une région, le tableau est de type espèces-strates. Il y a quatre tableaux de ce type, donc une structure moyenne et des divergences régionales autour de cette structure. La relation entre cortège faunistique et zones biogéographiques définit pour chaque strate de végétation une structure de tableau donc une analyse. Cette analyse est une analyse des correspondances (typologie d’espèces par leur distribution géographique, typologie de régions par leur contenu spécifique). Dans une strate, le tableau est de type espèces-régions. Il y a six tableaux de ce type, donc une structure moyenne et des divergences, fonction de la végétation, autour de cette structure. L’abondance d’une espèce dans chaque région et chaque strate définit un modèle de répartition, demandant l’analyse d’un tableau homogène par une analyse simplement centrée. Il y a 79 tableaux de ce type. Que signifierait la notion de modèle moyen ? Le plus simple est de se référer à l’espèce sans signification écologique, uniformément présente dans chaque strate et chaque région. On peut penser à une typologie de modèles (courbes de réponse bivariées). Ces indications sont incitatives à une réflexion préliminaire dans l’étude des cubes de données. Il convient, en effet, de garder son calme, tant un cube de données peut supporter potentiellement d’approches statistiques. Comme nous allons le voir, l’intention peut conduire à des résultats radicalement différents, sans que la validité des opérations soit mise en cause. La première chose à faire est de distinguer ce qui relève de l’observation de ce qui relève de l’organisation de l’information. Ici, nous avons deux effets fixes, à savoir la végétation et la région. On aurait pu étudier un autre facteur écologique, par exemple l’altitude, et un autre corpus biogéographique, par exemple plusieurs massifs montagneux. Deux des arêtes du cube de données sont l’expression de l’intention de l’observation. La troisième, au contraire n’est pas maı̂trisée. C’est la liste des espèces observables ou observées. Son contenu est fourni par les écosystèmes étudiés. Lorsque les trois marges sont des effets fixes, par exemple mesure d’un paramètre dans 4 types de végétation, dans 3 classes d’altitude et dans 5 régions, les données forment un cube vrai. On peut désirer modéliser la variable x en Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 26/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel fonction des 3 facteurs contrôlés, voire étudier les interactions ternaires : c’est le domaine des analyses à trois modes et plus citées au paragraphe précédent. Lorsque deux marges sont des effets fixes, il y a deux grands types d’objectifs. Le premier est celui des variables explicatives : construire un modèle de l’effet strate-régions pour chacune des espèces (effet simple A ou B, effet additif A+B, effet partiel A sachant B ou B sachant A, ...). Le second est celui de la comparaison de structures, c’est-à-dire de l’effet d’un facteur sur la structure engendré par l’autre. On trouve des éléments pour cette stratégie dans la fiche sur l’ordination indirecte. T. Foucart part de la constatation qu’on peut aussi bien concevoir une table de contingence comme un tableau d’ACP particulière que comme une matrice de covariance particulière. Mais dans un cas comme dans l’autre, la question des pondérations interdit de généraliser STATIS (aussi bien sur les tableaux que sur les opérateurs). Il propose une opération qui n’a pas l’esthétique mathématique de STATIS mais qui est efficace. Il note : Dans cet article, nous avons proposé des définitions de tendance et de structure susceptibles d’être utilisées dans l’étude des suites de tableaux de probabilités indexées par le temps. Si la technique simple d’analyse des évolutions des tendances repose effectivement sur la définition que nous en avons donnée, il n’en est malheureusement pas de même en ce qui concerne les techniques d’étude des évolutions de la structure : nous ne sommes pas partis des équivalences entre structures pour mettre au point les méthodes qui ont été décrites. Si ce manque de cohérence nuit à la qualité de notre exposé, il ne diminue en rien l’intérêt de ces équivalences et l’efficacité de ces méthodes. La difficulté vient de la présentation classique de STATIS : interstructure, compromis, intrastructure. En termes d’un seul tableau, tout se passe comme si on disait matrice de corrélation, moyenne, variance. L’interstructure définit une typologie de structure, le compromis définit une structure moyenne et l’intrastructure représente la variabilité autour de la moyenne (centrage). C’est comme si on voulait définir l’analyse en composantes principales avant la moyenne. Nous avons souligné que STATIS définit essentiellement la moyenne, et ce, de façon élaborée. En effet, on calcule généralement une moyenne en définissant au préalable les poids utilisés. Dans STATIS on définit une moyenne en calculant les poids pour que cette moyenne soit la meilleur possible. Cela conduit à éliminer le rôle des points douteux. Par exemple, la moyenne à pondération uniforme des 5 valeurs ci-dessous vaut 3, mais si on considère que la cinquième valeur est bizarre, on dit que cette moyenne vaut 1.5. On fait évidemment cette opération, dans STATIS, sur les structures et non sur les valeurs. On fait effectivement cette opération sur des valeurs en ACP Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 27/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel non centrée. Foucart propose simplement de faire le compromis en prenant une moyenne uniformément pondérée des tableaux. Soient K tableaux d’AFC. Le tableau Xk a, comme les autres, I lignes et J colonnes. Son terme général est xkij et la somme de toutes les valeurs est xk.. . Le tableau de fréquences associé est # " xkij Pk = xk.. La moyenne est : 1 XK Pk k=1 K On fait l’analyse des correspondances de mathbf P , structure compromis utilisant une pondération uniforme et l’intrastructure consiste à projeter en individus supplémentaires les lignes et les colonnes des K tableaux de départ. Les pondérations de l’AFC du compromis servent de référence générale. Si on n’a aucune raison de pondérer inégalement les tableaux, cette analyse ne pose aucun problème de signification pour l’utilisateur. P= fou1 <- foucart(bf88, scan = F, nf = 3) Les sorties de cette fonctions sont de même logique que celles de pta. kplot(fou1, clab.r = 1.5, clab.c = 2.5) d = 0.5 d = 0.5 TUPH.1 PRMO.1 PHCO.1 SYCO.1 PAMO.1 SYBO.1 LONA.1 PYPR.1 AECA.1 ANTR.1 PHTR.1 PACA.1 TUPH.2 PRMO.2 COCR.2 PHCO.2 PAMO.2 LONA.2 PYPR.2 PHTR.2 STTU.2 PAPA.2 LUME.2 SYAT.2 SYBO.2 AECA.2 PACA.2 SYCO.2 GAGL.2 ERRU.2 CACN.2 Bur.1 Bur.2 SYAT.1 CACN.1 LACO.1 TRTR.1 SATO.1 LUME.1 Pro.1 EMHO.1 ANCA.1 SYCN.1 LAEX.1 OEHI.1 ERRU.1 MUAL.1 TUVI.1 COCR.1 DRMA.1 COOE.1 PHBO.1 SYHO.1 PHPH.1 CEBR.1 SARU.1 SECA.1 SYCA.1 COPA.1 STVU.1 PACR.1 STTU.1 CLGL.1 CEFA.1 LOFL.1 PIME.1 PIMA.1 REIG.1 HIPO.1 PAPA.1 PHSI.1 PICA.1 SIEU.1 PAAT.1 PIMI.1 HIIC.1 PIVI.1 GAGL.1 OROR.1 TUME.1 ALRU.1 PAMA.1 SYUN.1 CACR.1 LUAR.1 COCO.1 COCN.1 EMCR.1 FRCO.1 CUCA.1 SYME.1 CACH.1 MUST.1 SYSA.1 ALAR.1 LASE.1 MICA.1 SECI.1 EMCT.1 ALRU.2 EMHO.2 ANCA.2 LAEX.2 OEHI.2 LUAR.2 Pro.2 TUME.2 SYUN.2 PAMA.2 TRTR.2 SYCA.2 MUAL.2 TUVI.2 OROR.2 DRMA.2 COOE.2 PHBO.2 SYHO.2 MOAL.2 CACH.2 PHPH.2 CEBR.2 SYCN.2 SARU.2 SECA.2 COPA.2 STVU.2 PACR.2 ALAR.2 CLGL.2 CEFA.2 LASE.2 LOFL.2 MICA.2 PIME.2 PIMA.2 REIG.2 HIPO.2 PHSI.2 PICA.2 SIEU.2 PAAT.2 PIMI.2 HIIC.2 PIVI.2 SATO.2 COCO.2 FRCO.2 SYME.2 COCN.2 EMCR.2 CUCA.2 CACR.2 MUST.2 SYSA.2 SECI.2 Cor.2 Cor.1 EMCT.2 MOAL.1 Pol.2 LACO.2 LULU.2 ANTR.2 LULU.1 Pol.1 S1 S2 d = 0.5 d = 0.5 PYPR.3 PIMA.3 PAPA.3 PRMO.3 SYCO.3 PAMO.3 LONA.3 PACA.3 TUVI.4 CEBR.4 PHTR.4 COPA.4 STVU.4 PIME.4 PAPA.4 PICA.4 SIEU.4 AECA.3 Bur.3 PIMA.4 ERRU.3 GAGL.3 LUME.3 PHCO.3 TRTR.3 SYAT.3 LAEX.3 CACN.3 CLGL.3 ALRU.3 SYME.3 PAMA.3 EMHO.3 DRMA.3 PHPH.3 MUAL.3 ALAR.3 PIME.3 TUVI.3 PAAT.3 PIMI.3 PIVI.3 COCO.3 COOE.3 PHBO.3 SYHO.3 MOAL.3 CEBR.3 ANCA.3 SYCN.3 MUST.3 STVU.3 PACR.3 CEFA.3 SATO.3 LASE.3 HIPO.3 OEHI.3 PICA.3 SIEU.3 SYCA.3 TUPH.3 FRCO.3 TUME.3 SYBO.3 PHTR.3 CACR.3 SYUN.3 LUAR.3 COCN.3 EMCR.3 CUCA.3 SARU.3 SECA.3 SYSA.3 MICA.3 REIG.3 SECI.3 STTU.3 STTU.4 PACA.4 LUME.4 SYHO.4 PHBO.4 PAMA.4 GAGL.4 SYCA.4 TUME.4 TUPH.4 TRTR.4EMHO.4 MUAL.4 LUAR.4 PRMO.4 COCO.4 DRMA.4 COOE.4 SYCO.4 PAMO.4 MOAL.4 CACN.4 PHPH.4 ANCA.4 SYCN.4 SARU.4 LONA.4 PYPR.4 SECA.4 MUST.4 SYSA.4 PACR.4 ALAR.4 CLGL.4 CEFA.4 SATO.4 LASE.4 LAEX.4 LOFL.4 MICA.4 HIPO.4 OEHI.4 PIMI.4 PIVI.4 AECA.4 SYME.4 ALRU.4 CUCA.4 PHCO.4 ERRU.4 COCN.4 EMCR.4 CACH.4 SYUN.4 LACO.4 REIG.4 SECI.4 PAAT.4 SYAT.4 FRCO.4 COCR.4 Pro.3 Cor.3 Pro.4 Bur.4 Cor.4 Pol.3 Pol.4 CACR.4 PHSI.4 LULU.4 OROR.4 SYBO.4 ANTR.4 EMCT.4 HIIC.4 LACO.3 COCR.3 COPA.3 CACH.3 EMCT.3 ANTR.3 LULU.3 OROR.3 LOFL.3 PHSI.3 HIIC.3 S3 S4 d = 0.5 d = 0.5 PHPH.5 TUVI.5 CEBR.5 PHTR.6 PAMO.6 CACH.6 PHPH.6 PAPA.5 TUVI.6 PAPA.6 CEBR.6 PIVI.6 PIME.6 LUME.6 PHBO.6 PACR.6 GAGL.6 PHSI.6 TRTR.6 SIEU.6 AECA.6 PACA.6 PYPR.6 ALRU.6 LUAR.6 ALAR.6 LAEX.6 PIMI.6 PRMO.6 COCO.6 EMHO.6 COCN.6 EMCR.6 SYCO.6 SYHO.6 SYME.6 MOAL.6 CACR.6 CACN.6 SYUN.6 ANCA.6 SYCN.6 SARU.6 LONA.6 SECA.6 SYCA.6 LACO.6 SYSA.6 CLGL.6 SATO.6 LASE.6 MICA.6 HIPO.6 OEHI.6 HIIC.6 TUPH.6 PAMA.6 CUCA.6 TUME.6 PHCO.6 FRCO.6 PIMA.6 ERRU.6 COOE.6 PICA.6 SYAT.6 REIG.6 STVU.6 PAAT.6 SECI.6 MUST.6 COCR.6 CEFA.6COPA.6 OROR.6 DRMA.6 MUAL.6 ANTR.6 LULU.6 SYBO.6 EMCT.6 STTU.6 LOFL.6 AECA.5 TRTR.5 LUME.5 ALRU.5 PIVI.5 PHBO.5 SYHO.5 CACN.5 SYUN.5 HIPO.5 GAGL.5 SYCA.5 PICA.5 SYME.5 DRMA.5 PHTR.5 PYPR.5 LUAR.5 ALAR.5 LAEX.5 PRMO.5 COCO.5 EMHO.5 COOE.5 SYCO.5 PAMO.5 MOAL.5 SYBO.5 ANCA.5 SYCN.5 SARU.5 LONA.5 SECA.5 LACO.5 SYSA.5 PACR.5 CLGL.5 SATO.5 LASE.5 MICA.5 OEHI.5 PIME.5 PACA.5 SIEU.5 CUCA.5 PAMA.5 TUME.5 ERRU.5 SYAT.5 FRCO.5 PHCO.5 PIMI.5 COPA.5 REIG.5 TUPH.5 PAAT.5 COCN.5 EMCR.5 CACH.5 CACR.5 SECI.5 STTU.5 PIMA.5 COCR.5 STVU.5 PHSI.5 OROR.5 CEFA.5 MUAL.5 ANTR.5 LULU.5 EMCT.5 MUST.5 LOFL.5 HIIC.5 Pro.5 Bur.5 Cor.5 Pro.6Bur.6 Cor.6 Pol.6 Pol.5 S5 S6 On remarquera qu’il faut conserver les 3 axes disponibles pour décrire la structure des tableaux à 4 colonnes. L’essentiel est dans : s.label(fou1$Tco) polygon(fou1$Tco[fou1$TC[, 1] polygon(fou1$Tco[fou1$TC[, 1] polygon(fou1$Tco[fou1$TC[, 1] polygon(fou1$Tco[fou1$TC[, 1] polygon(fou1$Tco[fou1$TC[, 1] polygon(fou1$Tco[fou1$TC[, 1] s.label(fou1$Tco, add.p = T) == == == == == == 1, 2, 3, 4, 5, 6, 1:2], 1:2], 1:2], 1:2], 1:2], 1:2], col col col col col col = = = = = = grey(0.9)) grey(0.8)) grey(0.7)) grey(0.6)) grey(0.5)) grey(0.4)) Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 28/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel d = 0.5 Bur.1 Bur.2 Bur.3 Pro.1 Pro.3 Pro.2 Pro.4 Pro.5 Pro.6 Cor.2 Cor.3 Bur.5 Bur.4 Bur.6 Cor.4 Cor.5 Cor.6 Cor.1 Pol.6 Pol.5 Pol.4 Pol.3 Pol.2 Pol.1 Il y a deux niveaux (1-3, 4-6, comme dans tous les exemples articulant ouverture de la végétation et avifaune) et la variabilité inter-régionale est forte et constante dans le second, faible et constante dans le premier. Il y a convergence des avifaunes des milieux forestiers. Quand les tableaux sont appariés par une seule dimension, lignes ou colonnes, la situation est moins favorable. Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 29/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel Références [1] J.P. Benzécri. Analyse de l’inertie intra-classe par l’analyse d’un tableau de correspondances. Les Cahiers de l’Analyse des données, 8 :351–358, 1983. [2] J. Blondel and H. Farré. The convergent trajectories of bird communities along ecological successions in european forests. Œcologia (Berlin), 75 :83– 93, 1988. [3] J.M. Bouroche. Analyse des données ternaires : la double analyse en composantes principales. PhD thesis, 1975. [4] M. Bécue, J. Pagès, and C.-E. Pardo. Contingency table with a double partition on rows and colums. visualization and comparison of the partial and global structures. In J. Janssen and P. Lenca, editors, Applied stochastic models and data analysis, pages 355–364. ENST Bretagne, Brest, 2005. [5] P. Cazes, D. Chessel, and S. Dolédec. L’analyse des correspondances internes d’un tableau partitionné : son usage en hydrobiologie. Revue de Statistique Appliquée, 36 :39–54, 1988. [6] R. Coppi and S. Eds. Bolasco. Multiway Data Analysis. Elsevier Science Publishers B.V., North-Holland, 1989. [7] T. Foucart. Sur les suites de tableaux de contingence indexés par le temps. Statistique et Analyse des données, 2 :67–84, 1978. [8] T. Foucart. Une nouvelle approche de la méthode statis. Revue de Statistique Appliquée, 31 :61–75, 1983. [9] T. Foucart. Analyse factorielle de tableaux multiples. Masson, Paris, 1984. [10] A. Franc. Etude algébrique des multitableaux : apports de l’algèbre tensorielle. PhD thesis, 1992. [11] L.E. Friday. The diversity of macro invertebrate and macrophyte communities in ponds. Freshwater Biology, 18 :87–104, 1987. [12] H.A.L. Kiers. Hierarchical relations among three-way methods. Psychometrika, 56 :449–470, 1991. [13] P.M. Kroonenberg. Three-mode principal component analysis. Press, Leiden, 1983. DSWO [14] P.M. Kroonenberg. The analysis of multiple tables in factorial ecology. iii three-mode principal component analysis :”analyse triadique complète”. Acta Œcologica, Œcologia Generalis, 10 :245–256, 1989. [15] Ch. Lavit. Analyse conjointe de tableaux quantitatifs. Masson, Paris, 1988. [16] B. Leibovici. Facteurs à mesures répétées et analyses factorielles : application à un suivi épidémiologique. PhD thesis, 1993. [17] J.R. Lobry and D. Chessel. Internal correpondence analysis of codon and amino acid usage in thermophilic bacteria. Journal of Applied Genetics, 44 :235–261, 2003. Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 30/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf A.B. Dufour & D. Chessel [18] B. Statzner, K. Hoppenhaus, M.-F. Arens, and Ph. Richoux. Reproductive traits, habitat use and templet theory : a synthesis of world-wide data on aquatic insects. Freshwater Biology, 38 :109–135, 1997. [19] M.D. Swaine and P. Greig-Smith. An application of principal components analysis to vegetation changes in permanent plot. Journal of Ecology, 68 :33–41, 1980. [20] J. Thioulouse and D. Chessel. Les analyses multi-tableaux en écologie factorielle. i de la typologie d’état à la typologie de fonctionnement par l’analyse triadique. Acta Œcologica, Œcologia Generalis, 8 :463–480, 1987. [21] L.R. Tucker. Some mathemetical notes on three-mode factor analysis. Psychometrika, 31 :279–311, 1966. [22] J. Verneaux. Cours d’eau de franche-comté (massif du jura). recherches écologiques sur le réseau hydrographique du doubs. essai de biotypologie. Thèse d’état, besançon, 1973. Logiciel R version 2.12.0 (2010-10-15) – SweaveInput – Page 31/31 – Compilé le 2010-12-08 Maintenance : S. Penel, URL : http://pbil.univ-lyon1.fr/R/pdf/SweaveInput.pdf