Re: ACM sous R

From: Daniel Chessel (chessel@biomserv.univ-lyon1.fr)
Date: Wed Mar 24 2004 - 10:33:45 MET


At 12:46 23/03/2004 +0000, Raphaelle Pin wrote:
>Bonjour,
>Je souhaiterais savoir comment on peut projeter des variables supplémentaires après avoir fait une ACM, sous R.
>J'ai bien trouvé la fonction supcol, mais il semble que ça ne marche que pour les données quantitatives, donc des AFC ou des ACP.
>Si quelqu'un peut m'aider...
>Merci d'avance,
>Raphaelle Pin

Projeter une variable supplémentaire en ACM est un terme impropre car on ne projette pas de variables dans une ACM. On peut projeter au mieux des modalités. Mais l'acm en tant qu'analyse d'inertie n'a pas de bonnes propriétés et il vaut mieux utiliser le point de vue du scoring.

Si l'acm s'appelle w, dans w$l1 on a en colonnes des scores des individus centrés, de variance unité, de covariances nulles qui séparent les modalités des variables de la manière la plus efficace (maximise la moyenne des rapports de corrélation du score par rapport aux variables).

Pour une variable qui n'a pas pris part à l'analyse, on peut retrouver toutes les caractéristiques que l'analyse attribue à une variable active. Il suffit de suivre le raisonnement suivant.
data(ours)
w=dudi.acm(ours)
Select the number of axes: 3

ce qui caractérise une variable dans l'analyse est le pourcentage de variance qu'elle explique pour chaque score :
w$cr
          RS1 RS2 RS3
altit 0.2951 0.2366 0.143236
...
depart 0.4726 0.5956 0.545724

On va faire comme si la variable depart était supplémentaire
z = ours$depart
summary(lm(w$l1[,1]~-1+z))

On retrouve ce nombre ici :
Multiple R-Squared: 0.473

Les coordonnées des modalité dans l'analyse sont dans w$co
w$co
depart.AHP 0.34888 1.35457 0.33871
depart.AM 0.60978 0.93623 0.55700
depart.D -0.27665 0.34436 -1.85138
depart.HP 0.98193 -0.05378 0.11853
depart.HS -0.70612 -1.05861 0.25981
depart.I -0.93049 -0.53975 0.51275
depart.S -0.45411 -0.69659 0.11202

dans le modèle
Coefficients:
     Estimate Std. Error t value Pr(>|t|)
zAHP 0.349 0.360 0.97 0.3394
zAM 0.610 0.402 1.52 0.1395
zD -0.277 0.360 -0.77 0.4475
zHP 0.982 0.284 3.45 0.0016
zHS -0.706 0.402 -1.76 0.0889
zI -0.930 0.360 -2.59 0.0146
zS -0.454 0.304 -1.49 0.1452

ou encore directement :
tapply(w$l1[,1],z,mean)
    AHP AM D HP HS I S
 0.3489 0.6098 -0.2767 0.9819 -0.7061 -0.9305 -0.4541

Donc pour une variable supplémentaire toute l'information est dans les moyennes des scores (w$l1) par classes de la variable supplémentaire. Pour voir une variable active dans le plan de l'ACM
s.class(w$l1,ours$depart)
Pour voir une variable supplémentaire :
s.class(w$l1,z)

C'est évidemment le même graphique.
EN BREF, pour dépouiller une ACM ne retenir qu'une chose
score des individus -> moyenne par classe d'une variable
DONC :
lm (score~variable)
tapply(score,variable, mean)

graphique : 1 score et une variable
plot(score~variable)
plot(w$l1[,1]~z)
graphique : 2 scores et une variable
s.classe(scores,variable)
s.classe(w$l1,z)
graphique : 1 scores et plusieurs variable
sco.boxplot(score,variables)
sco.boxplot(w$l1[,1],ours)
graphique : 2 scores et plusieurs variables
voir doc de s.class

Daniel Chessel - chessel@biomserv.univ-lyon1.fr



This archive was generated by hypermail 2b30 : Tue Sep 07 2004 - 13:30:56 MEST