Re: Rotation procustéenne - statitiques d'appariemen

From: Olivier Beauchard (olivier.beauchard@laposte.net)
Date: Mon Jun 06 2005 - 12:21:20 MEST

  • Next message: GPL SOFTWARE COMPANY: "x----SPAM----x WORK ONLINE AND EARN $$"

    Bonjour,

    Je reviens sur le problème d’interprétation des statistiques d’appariement. En tant que simple utilisateur, je reste sur un concept de base pour appréhender la force d’appariement entre deux structures (variables, tableaux, opérateur) :

    structure commune + structure résiduelle = 1,

    ce qui me semble équivalent en co-inertie classique avec

    Rv² + structure résiduelle =1.

    (structure commune représentée généralement par le carré du cosinus de l'angle fait par les 2 vecteur-tableau)

    (la variance totale des deux nuages n’est pas prise en compte dans l’analyse de co-inertie puisque que celle-ci ne résume que la part commune ; cependant, le fait de considérer le Rv comme équivalent de r m’amène à écrire cela)

    Mon problème avec l’analyse procustéenne de co-inertie, c’est d’entrevoir des équivalents.

    > data(doubs)
    > pca1=dudi.pca(doubs$mil)
    > pca2=dudi.pca(doubs$poi,scale=F)
    > pro=procuste(pca1$tab,pca2$tab,nf=11)

    D’après l’article (1), j’interprète la structure résiduelle comme :

    > 2*(1-sum(pro$d))
    [1] 0.6876

    (à noter que la statistique de test est 1-sum(pro$d)^2 et que « procuste.randtest » teste sum$prod, mais ça ne doit pas changer grand chose...)

    Pour comprendre, j’ai voulu retrouver la même valeur "manuellement". Dans (2), on lit "Procrustes analysis is a procedure that minimizes the sum of squared differences between two or more configurations":

    > diff=(pro$scor1-pro$scor2)^2
    > sum(apply(diff,1,sum))
    [1] 0.630511

    (notez que j’ai bien gardé les 11 axes pour avoir une quantité exhaustive)

    En co-inertie classique, les coordonnées (coi$mX et coi$mY) sont centrées et réduites pour interpréter simultanément les deux jeux de lignes (coi$lX et coi$lY). J’ose faire le calcul précédent avec l’analyse procustéenne dans la mesure où le centrage-réduction des coordonnées n’est pas nécessaire, et dans (1), on lit "...representation of the concordance between the two datasets in PCIA is better than the representation used in classical CIA, because the two systems of sites are in the same hyperspace and no rescaling is needed.". Intuitivement, je ne vois pas pourquoi cette résiduelle ne se retrouverai pas dans l’analyse.

    Je voudrai savoir quelle valeur utiliser pour dire que mon tableau Y conserve tant en % de la structure de référence de mon tableau X.

    Merci de m'éclairer.

    Olivier beauchard

    (1)Dray S., Chessel D. & Thioulouse J.. 2003. Procustean co-inertia analysis for the linking of multivariate datasets. Ecoscience, 10: 110-119.

    (2)Peres-Neto P.R. & Jackson D.A.. 2001. How well do multivariate data sets match? The advantages of a Procrustean superimposition approach over the Mantel test. Oecologia, 129: 169-178.

    > Bonjour,
    >
    > tout d'abord, une précision, le terme de "variabilité expliquée" me
    > parait abusif car la co-inertie et procuste sont des méthodes ne
    > comportant pas d'étape visant à expliquer un tableau par l'autre.
    >
    > Je reprends l'exemple du doubs.
    > Tout d'abord, on voit que les valeurs propres de la coinertie sont
    > (presque) les valeurs singulieres de procuste:
    >
    > > cor(pro$d^2,coi$eig)
    > [1] 1
    >
    > le 'presque' vient du rescaling global (scale=T) de procuste et d'un
    > facteur n^2.
    >
    >
    >
    >
    > Olivier Beauchard wrote:
    >
    > >Bonjour,
    > >
    > >Je prend un exemple classique pour introduire ma question sur les statistiques d´appariement en co-inertie.
    > >
    > >
    > >
    > >>data(doubs)
    > >>pca1 = dudi.pca(doubs$mil)
    > >>pca2 = dudi.pca(doubs$poi,scale=F)
    > >>coi = coinertia(pca1,pca2)
    > >>coi
    > >>
    > >>
    > >...
    > >$RV (RV coeff) : 0.4505569
    > >donc variabilité expliquée de l´un par l´autre et réciproquement = 0.4505569²
    > >
    > >Suivant l´analyse procustéenne de co-inertie :
    > >
    > >
    > >>pro = procuste(pca1$tab,pca2$tab,scale=TRUE)
    > >>sum(pro$d)
    > >>
    > >>
    > >[1] 0.6562
    > >donc variabilité expliquée (?) de l´un par l´autre et réciproquement = 0.6562²
    > >(dans (1) on lit m² = 0.67 soit 1-sum(pro$d)^2 = 0.5694016 (fig. 2a-c); avec s.arrow(pro$load1), la variable dur <=> Har ne pointe pas au même endroit (fig. 2b); me suis-je trompé? Ai-je fait la même analyse?)
    > >
    > >
    > Je retrouve le même graphique en refaisant la manip décrite ici.
    > Pour le m^2, la formule donné dans (1) est 2*(1-sum(pro$d)). On le
    > recalcule:
    >
    > > 2*(1-sum(pro$d))
    > [1] 0.6876
    >
    > Oula, c'est pas le même dans l'article. On se calme, et on reprend le
    > papier. Dans la présentation du jeu de données, il est indiqué qu'il y a
    > 29 sites. Piège !! Le doubs d'ade4 a 30 sites, en fait j'avais supprimé
    > le site 8 qui n'a aucune espèces de poissons.
    >
    > On refait l'analyse:
    >
    > > doubs2$poi=doubs$poi[-8,]
    > > doubs2$mil=doubs$mil[-8,]
    > > pca22 = dudi.pca(doubs2$poi,scale=F)
    > Select the number of axes: 2
    > > pca12 = dudi.pca(doubs2$mil)
    > Select the number of axes: 2
    > > pro2 = procuste(pca12$tab,pca22$tab,scale=F)
    > > 2*(1-sum(pro2$d))
    > [1] -1039.197
    > > pro2 = procuste(pca12$tab,pca22$tab,scale=T)
    > > 2*(1-sum(pro2$d))
    > [1] 0.6732973
    >
    > ouf, ça colle.
    >
    > >L´association entre les deux tableaux, si on suppose que ces deux statistiques jouent le même rôle, est plus forte suivant la statistique procustéenne. Le Rv est-il détrôné par une statistique qui donne des valeurs « attractives » car plus fortes?
    > >
    > >
    > >
    > Si vous voulez des statistiques "fortes", je propose Sforte=10000000000*RV.
    > Les deux statistiques mesurent à peu près la même chose, l'une est basée
    > sur des sommes de carrés, l'autre la somme au carré (protest). On les
    > teste par permutation, ça sort une p-value. Le fait qu'une soit plus
    > forte que l'autre n'a aucun intérêt.
    > Le seul interet par rapport a PROTEST, c'est que l'on calcule une trace
    > pour la coinertie (RV) au lieu de faire une svd pour PROTEST. Mais vu
    > les ordinateurs d'aujourd'hui, ca change pas grand chose.
    >
    >
    > >J´ai voulu comprendre la différence entre les deux, si différence il y a.
    > >
    > >
    > >
    > >>x = as.matrix(pca1$tab)
    > >>y = as.matrix(pca2$tab)
    > >>x = x/(sum(diag(t(x)%*%x))^0.5)
    > >>y = y/(sum(diag(t(y)%*%y))^0.5)
    > >>
    > >>
    > >
    > >L´analyse procustéenne de co-inertie fait
    > >
    > >
    > >>svd = svd (t(y) %*% x)
    > >>yr = y %*% svd$u %*% t(svd$v)
    > >>
    > >>
    > >
    > >
    > >
    > >>coirot = coinertia(pca1,dudi.pca(yr,scale=F))
    > >>
    > >>
    > >
    > >On lit
    > >
    > >
    > >>coirot
    > >>
    > >>
    > >...
    > >$RV (RV coeff) : 0.4518429
    > >
    > >A 10-2 près, c´est le même Rv, il est donc unique pour ce couple de tableaux, rotation ou non (la rotation n´entraîne pas de déformation et la force des relations entre variables n´est pas modifiée, RRt = I si je comprend bien).
    > >
    > >
    > La co-inertie recherche des combinaisons linéaires maximisant le carré
    > de la covariance. la rotation consiste à calculer des combinaisons
    > linéaires.
    > Donc pas de surprise, ça donne la même chose.
    >
    > >En lisant plus attentivement (1), on apprend que l´analyse procustéenne de co-inertie est exactement l´analyse de co-inertie de x et yr appariés (dim(x) = dim(yr)), ce dernier pourvu d´une rotation. J´ai refait le programme et j´obtenu les mêmes jeux de coordonnées. Le lien entre tableaux dans cette analyse est :
    > >
    > >
    > >
    > >>covv = sum(diag(t(x)%*%yr))
    > >>vavx = sum(diag(t(x)%*%x))
    > >>vavy = sum(diag(t(yr)%*%yr))
    > >>rv = covv/(vavx^0.5*vavy^0.5)
    > >>rv
    > >>
    > >>
    > >[1] 0.675773
    > >
    > >comparé à
    > >
    > >
    > >
    > >>sum(pro$d)
    > >>
    > >>
    > >[1] 0.6562
    > >
    > >C´est ça à 2 % près. Je me demande si je n´ai pas fait une erreur...
    > >
    > >
    >
    >
    > Ok, sauf que le RV calculé, est un RV entre tableaux et non entre
    > opérateurs. J'avais déjà soulevé la question sur adelist (RV or not RV).
    > La définition que vous donnez du RV n'est pas la définition
    > classique.... c'est plutôt celle de Procuste.
    > C'est exactement ce que raconte l'article quand on parle des statistques
    > RV, coinertie et procuste.
    > En gros les deux approches sont (presques) équivalentes, mais pas
    > exactement.
    >
    > Cordialement.
    >
    >
    >
    >
    >
    >
    >

    Accédez au courrier électronique de La Poste : www.laposte.net ;
    3615 LAPOSTENET (0,34€/mn) ; tél : 08 92 68 13 50 (0,34€/mn)



    This archive was generated by hypermail 2b30 : Mon Jun 06 2005 - 12:24:01 MEST