Re: ACP

From: Daniel Chessel (chessel@biomserv.univ-lyon1.fr)
Date: Mon Aug 28 2006 - 12:39:43 MEST

  • Next message: Catharine Gomez: "x----SPAM----x Re: RXuufe"

    Il serait plus logique de faire un data sur un tableau disponibles pour
    tous.
     
    data(irishdata)
    x <- irishdata$tab
    names(x)
     [1] "T0.10" "T10.50" "Tup50" "cow" "other"
    "pig"
     [7] "sheep" "town.pop" "car" "radio" "sales"
    "single.man"
    # Je fais une acp sur les 4 premières variables de mon tableau
    res.acp<-dudi.pca(x[,1:4],scannf=F)
    # Je mets les 8 dernières variables du tableau en supplémentaires
    var_suppl <- supcol(res.acp, x[,5:12])
    # Je projette sur le cercle de corréletion les 4 premières variables et
    les 8 variables supplémentaires
    s.corcircle(res.acp$co)
    s.corcircle(var_suppl$co,add.plot=TRUE)

    ça ne marche pas. Pourquoi?
    Les fonctions supcol sont :
     apropos("supcol")
    [1] "supcol" "supcol.coa" "supcol.default"

    Il n'y a pas de fonction supcol.pca et on utilise donc supcol.default.
    La doc dit
    Details:

         If 'supcol.default' is used, the column vectors of 'Xsup' are
         projected without prior modification onto the principal components
         of dudi with the scalar product associated to the row weightings
         of dudi.

    Si on veut projeter les variables normalisées, on doit faire
    var_suppl <- supcol(res.acp, scalewt(x[,5:12]))
    s.corcircle(res.acp$co)
    s.corcircle(var_suppl$co,add.plot=TRUE)

    et tout va très bien.

    Pour ne pas perdre une occasion, noter que les coordonnées des variables
    supplémentaires, telles que vous les souhaitez, sont simplement les
    corrélations avec les coordonnées :

     var_suppl$co
                    Comp1 Comp2
    other -0.1721901 -0.16268360
    pig -0.1480840 -0.39824305
    sheep 0.2729282 0.08456384
    town.pop -0.4157963 -0.55505741
    car -0.8051419 -0.32295870
    radio -0.4594302 -0.33596899
    sales -0.5457501 -0.33111521
    single.man 0.3890983 0.55040681
     cor(x[,5:12],res.acp$li)

                    Axis1 Axis2
    other -0.1721901 -0.16268360
    pig -0.1480840 -0.39824305
    sheep 0.2729282 0.08456384
    town.pop -0.4157963 -0.55505741
    car -0.8051419 -0.32295870
    radio -0.4594302 -0.33596899
    sales -0.5457501 -0.33111521
    single.man 0.3890983 0.55040681

    Donc c'est bien clair
    D. Chessel

    blanck a écrit :
    > Bonjour,
    >
    > J'utilise Ade4 sous R, et souhaite réaliser une ACP en projetant
    > certaines variables en supplémentaires sur le cercle de corrélation.
    > Je voudrais ainsi que ces variables supplémentaires ne participent pas
    > à la définition des axes mais que leur projection permette d'apprécier
    > leur corrélations avec les axes. J'ai utilisé pour cela la fonction
    > supcol dans le package ade4 en écrivant le script suivant:
    >
    > data(fishtraits)
    > # Je fais une acp sur les 4 premières variables de mon tableau
    > res.acp<-dudi.pca(fishtraits[,1:4])
    > # Je mets les 3 dernières variables du tableau en supplémentaires
    > var_suppl <- supcol(res.acp, fishtraits[,5:7])
    > # Je projette sur le cercle de corréletion les 4 premières variables
    > et les 3 variables supplémentaires
    > s.corcircle(res.acp$co)
    > s.corcircle(var_suppl$co,add.plot=TRUE)
    >
    > Seulement, il se trouve que les variables projetées en supplémentaires
    > se retrouvent toutes au centre du cercle de corrélation, la
    > corrélation entre ces variables et les axes étant très faible. Ces
    > variables sont pourtant corrélées avec les 4 autres, et il n'y a pas
    > de raisons qu'elles soient projetées d'une telle manière. J'aimerai
    > savoir d'où peut venir le problème. Est-je utilisé la bonne fonction ?
    >
    > Merci par avance pour vos conseils et suggestions
    > Aurélie Blanck
    >
    >



    This archive was generated by hypermail 2b30 : Mon Aug 28 2006 - 12:41:42 MEST