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