Professional Documents
Culture Documents
Buts :
- dtermination des lments structurant les donnes (axes de projection)
- rduire les dimensions de lespace de reprsentation des donnes
(slection des p premiers axes)
2 mthodes :
AFC : Analyse factorielle des correspondances simples pour un ensemble homogne
de valeurs assimilable un tableau de contingence entre 2 variables.
AFCM : Analyse factorielle des correspondances multiples pour un tableau de
modalits de q (q>2) variables qualitatives ou un ensemble non homogne de donnes.
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Une variable qualitative est une variable pour laquelle la valeur observe sur chaque individu
reprsente une qualit (ou tat) nomm modalit (ou catgorie) et non une quantit.
Nominale quand ses modalits sont des lments sans relation hirarchique.
Exemples :
la variable Sexe avec les modalits Masculin, Fminin
la variable Couleur avec les modalits jaune, vert, rouge, bleu
Dans R :
Une variable qualitative est reprsente par un objet de classe "factor" sex <- as.factor(c("M","F"))
Les modalits correspondants aux "levels" str(sex)
Factor w/ 2 levels "F","M": 2 1
Utiliser la fonction ou le paramtre "ordered" pour crer une variable ordinale
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Lpreuve :
200 juges
5 vins : "Cru_Bourgeois","Grand_Cru_classe","Vin_de_table","Bordeaux_d_origine","Vin_de_marque"
4 qualificatifs : "excellent","good","mediocre","boring"
1 0 1 0 0 0 0 0 0 1
2 0 0 1 0 0 0 0 0 1
3 0 0 0 0 1 1 0 0 0
4 1 0 0 0 0 1 0 0 0
5 0 0 0 1 0 1 0 0 0
996 0 1 0 0 0 0 0 1 0
997 0 0 1 0 0 0 0 1 0
998 0 0 0 0 1 1 0 0 0
999 1 0 0 0 0 0 0 0 1
1000 0 0 0 1 0 1 0 0 0
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
i1 n n n
i1 j1 i1 j2 i1 .
Variable I
i2 n n n
i2 j1 i2 j2 i2 .
# Les donnes
data(bordeaux)
bordeaux
excellent good mediocre boring mediocre
Vin_de_marque
Cru_Bourgeois 45 126 24 5
Grand_Cru_class 87 93 19 1 Bordeaux_d_origine Axe 1
Vin_de_table 0 0 52 148
Bordeaux_d_origine 36 68 74 22
Vin_de_marque 0 30 111 59 good
Cru_Bourgeois
Point ligne
# Le traitement Grand_Cru_class
excellent
boring
Vin_de_table
afc <-dudi.coa(bordeaux, scannf=FALSE)
Donnes (data.frame)
Point colonne
Fonction ade4 de classe dudi
Donnes Donnes
"brutes" "brutes"
AFC ACP
Tableau des
frquences
mtrique du 2
matrice matrice
var/covar var/covar
Diagonalisation Diagonalisation
profils
coordonnes coordonnes
factorielles factorielles
Donnes
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1) "brutes"
Tableau des
frquences
Analyse Factorielle des Correspondances mtrique du 2
vecteurs valeurs
propres propres
1 - tableau des frquences profils
frquence marginale pour un i : fi. = ni. / nIJ f.j 0,168 0,317 0,280 0,235 1
frquence marginale pour un j : f.j= n.j / nIJ
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Donnes
"brutes"
Diagonalisation
coordonnes
factorielles
# tableaux des donnes avec i et i # tableaux des donnes avec i" (regroupement de i et i)
t2 <- rbind(bordeaux[1,]*10, bordeaux) t1 <- rbind( t2[1,] + t2[2,], t2[3:6,])
i i
> t2 > t1
i excellent good mediocre boring i excellent good mediocre boring
i, i' + i''
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
profili(t2)
excellent good mediocre boring rowSums(p.i) i
Cru_Bourgeois 0.225 0.630 0.120 0.025 1
Cru_Bourgeois1 0.225 0.630 0.120 0.025 1
Grand_Cru_class 0.435 0.465 0.095 0.005 1
Vin_de_table 0.000 0.000 0.260 0.740 1 i
Bordeaux_d_origine 0.180 0.340 0.370 0.110 1
Vin_de_marque 0.000 0.150 0.555 0.295 1
profili(t1)
Cru_Bourgeois
excellent
0.225
good mediocre boring rowSums(p.i)
0.630 0.120 0.025 1
i
Grand_Cru_class 0.435 0.465 0.095 0.005 1
Vin_de_table 0.000 0.000 0.260 0.740 1
Bordeaux_d_origine 0.180 0.340 0.370 0.110 1
Vin_de_marque 0.000 0.150 0.555 0.295 1
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
boring
par(mfrow=c(2,2)) Vin_de_table
plot.new()
scatter (dudi.pca (bordeaux, scannf=F))
scatter (dudi.pca (t2, scannf=F)) Grand_Cru_class
excellent
i
scatter( dudi.pca (t1, scannf=F)) Cru_Bourgeois
par(mfrow=c(1,1))
good
Bordeaux_d_origine
Axis1 Axis2
Cru_Bourgeois -3.731748 -0.085358
Cru_Bourgeois1 0.847585 0.934466 mediocre
Grand_Cru_class 0.772267 1.052014 d=1 d=1
i
Cru_Bourgeois1
Vin_de_marque 0.510082 -0.383682
Bordeaux_d_origine Bordeaux_d_origine
excellent
dudi.pca (t1,scannf=F)$li Cru_Bourgeois
good
excellent
good Vin_de_marque
Axis1 Axis2 mediocre
Vin_de_marque Cru_Bourgeois
mediocre
Cru_Bourgeois -3.369709 -0.156047
Grand_Cru_class 0.848453 1.240747 i
Vin_de_table 1.175680 -1.725019 i
Bordeaux_d_origine 0.696214 0.719769 Vin_de_table Vin_de_table
jJ
ou D2(i , i) = (xij xij)2 | jJ
excellent good
Exemple : Cru_Bourgeois 0.225 0.630
Soit le plan form par les variables excellent et good Grand_Cru_class 0.435 0.465
i
et les 5 points i de coordonnes f j
Vin_de_table 0.000 0.000
Bordeaux_d_origine 0.180 0.340
plot (range(profil.i[,1])+ c(-.1,.1), range(profil.i[,2]), type="n",xlab=colnames(profil.i)[1],ylab=colnames(profil.i)[2]) Vin_de_marque 0.000 0.150
text (profil.i[,1:2], labels = rownames(profil.i))
0.6
x <- profil.i[2:3,1] # abscisses des 2 vins
0.5
y <- profil.i[2:3,2] # ordonnes des 2 vins Grand_Cru_class
points (x,y,col=2, pch=19, cex=2)
lines (x, y, col=2)
0.4
segments (x[1], 0, x[2], 0, lty=2)
segments (x[1], y[1], x[1], y[2], lty=2) Bordeaux_d_origine
good
0.3
d2 <- (x[1] - x[2])^2 + (y[1] - y[2])^2
0.2
D <- sqrt(d2) Vin_de_marque
0.1
0.0 Vin_de_table
La fonction dist() permet de calculer cette distance :
-0.1 0.0 0.1 0.2 0.3 0.4 0.5
dist (profil.i[2:3,1:2]) excellent
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Cette distance est appele distance du Khi 2 entre lois conditionnelles de centre fJ
ou distance distributionnelle entre i et i
Tableau des
frquences
Analyse Factorielle des Correspondances mtrique du 2
matrice
vecteurs valeurs
propres propres
profils
Recherche des composantes principales du nuage de points ayant pour coordonnes : f ij / f.j
Terme gnral de la matrice Y servant au calcul de la matrice var-covar T (T = Y Y) :
Calcul 1 yij = (fij - fi.* f.j) / (fi.* f.j)
frquence thorique
2
k
Oi Ei 2
frquence observe i 1 Ei
nIJ * yij2
nIJ * trace de T
= 2 de nij (n-1)(p-1) ddl
Calcul 2 : simplification possible de yij = fij / (fi.* f.j) ici 1re valeur propre 0 = 1 (premier vecteur propre v0 = (f.1, f.2,..)
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1) Donnes
"brutes"
Tableau des
Analyse Factorielle des Correspondances frquences
mtrique du 2
Diagonalisation
vecteurs valeurs
propres propres
Calcul des projections (coordonnes) des points (lignes & colonnes) profils
Fi = j=1, p (f ij /f.j) * vj
factorielles
Plus le poids du point i (fi.) est faible plus il est loign de lorigine
Axis1 Axis2
Coordonnes des points i Cru_Bourgeois -0.7134347 -0.06256333
Grand_Cru_class -0.8461787 -0.26380501
afc$li Vin_de_table 1.1821197 -0.41671099
Bordeaux_d_origine -0.1713729 0.25423507
Vin_de_marque 0.5488665 0.48884427
De mme, les coordonnes des points j sur les axes factoriels : Gj = i=1,n (f ji /f.i) * ui
A partir des facteurs F1, F2, F3...(respectivement G1, G2, G3...) dont les valeurs propres (variances)
sont respectivement 1, 2, 3...., il est possible de reconstituer le tableau initial suivant la formule :
nij = (ni.* n.j) / nIJ (1 +1 F1 (i)*G1 (j) + 2 F2 (i)*G2(j) + ...)
se dcompose en :
nij = (ni. * n.j)) / nIJ correspond lhypothse dindpendance des variables (cf. test du Khi2).
(se vrifie si toutes les lignes ont le mme profil).
et
1 F1 (i)*G1 (j) + 2 F2 (i)*G2(j) + ... reprsente donc lcart du rapport cette indpendance.
# identique :
afc <- dudi.coa (bordeaux, scannf = FALSE, nf = 3) Histogramme des
valeurs propres
Nombre daxes factoriels slectionns
names (afc)
[1] "tab" "cw" "lw" "eig" "rank" "nf" "c1" "l1" "co" "li" "call" "N"
http://pbil.univ-lyon1.fr/R/cours/stage3.pdf
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Plus concrtement
> afc
Duality diagramm
class: coa dudi
$call: dudi.coa(df = bordeaux) rappel des paramtres dappel de la fonction
A
2 me contribution : corrlation entre axes et points (cosinus carrs)
dite relative (note aussi COR) car contribution relative de l'axe l'inertie totale du point
exprime ici en pour 10 000 O
pour mettre en vidence les axes importants pour le point Projection plus ou moins
dformante selon langle
des points / axe
Vin_de_table
boring Cru_Bourgeois -0.713 1724 -8379 0.063 71 64
excellent Grand_Cru_classe -0.846 2425 -8516 0.264 1264 828
Grand_Cru_classe Vin_de_table 1.182 4732 8891 0.417 3153 1105
0.2
Cru_Bourgeois
excellent -0.867 2136 -8083 0.298 1354 955
0.0
good
good -0.672 2426 -9127 0.004 1 0
mediocre 0.356 599 3443 -0.483 5932 -6355
boring 1.103 4838 9044 0.357 2713 946
-0.2
Bordeaux_d_origine Principe
Ne prendre en compte que les points dont la
contribution > contribution moyenne
-0.4
mediocre
Vin_de_marque contribution abs. moy = 10000 * 1 / nb points
soit pour l'axe 1 :
- pour les vins : 10000 / 5 = 2000
I <- cbind(round(afc$li[,1:2],3),contri$row.abs[,1:2],contri$row.rel[,1:2])[,c(1,3,5,2,4,6)]
names(I) <- c("F1","F1-abs","F1-rel","F2","F2-abs","F2-rel")
cI <- rep(1,nrow(I))
cI[which.max(I[,2]*sign(I[,1]))]=5 -1.0 -0.5 0.0 0.5 1.0
- pour les qualificatifs : 10000 / 4 = 2500
cI[which.max(I[,5]*sign(I[,4]))]=3
cI[which.min(I[,2]*sign(I[,1]))]=4
cI[which.min(I[,5]*sign(I[,4]))]=2
J <- cbind(round(afc$co[,1:2],3),contri$col.abs[,1:2],contri$col.rel[,1:2])[,c(1,3,5,2,4,6)]
names(J) <- c("F1","F1-abs","F1-rel","F2","F2-abs","F2-rel")
cJ <- rep(1,nrow(J))
cJ[which.max(J[,2]*sign(J[,1]))]=5 axe 1 (80.7 %)
contribution rel. moy = 10000 * 1 / nb de valeurs propres (axes)
cJ[which.max(J[,5]*sign(J[,4]))]=3
cJ[which.min(J[,2]*sign(J[,1]))]=4
cJ[which.min(J[,5]*sign(J[,4]))]=2
contri$TOT <- cbind(contri$TOT,round(contri$TOT[,1]/sum(contri$TOT[,1])*100,1))
names(contri$TOT)[4] <- "i%"
mediocre
Vin_de_marque
Bordeaux_d_origine mediocre
Vin_de_marque
par (mfrow= c(2,2)) good
Cru_Bourgeois
boring
Vin_de_table
good
rand_Cru_class Cru_Bourgeois
excellent
Utilisation : boring
Vin_de_table
Bordeaux_d_origine
Cru_Bourgeois
scatter (afc, met=3) # graphe 4 Grand_Cru_class
excellent
boring
nd_Cru_class
Vin_de_marque Vin_de_marque
mediocre
Bordeaux_d_origine Bordeaux_d_origine
good
Cru_Bourgeois Cru_Bourgeois
rand_Cru_class Grand_Cru_class
excellent
boring
Vin_de_table Vin_de_table
Bordeaux
Fonction : s.label (dfxy, xax = 1, yax = 2, label = row.names(dfxy), clabel = 1, pch = 20,
cpoint = if (clabel == 0) 1 else 0, , add.plot = FALSE)
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
1.5
Vin_de_marque
mediocre
1.0
Bordeaux_d_origine
fonction plot ()
0.5
Axe 2
0.0
good
-0.5
text (afc$l1[,1:2], labels=rownames(afc$l1), col=2)
rand_Cru_class
excellent
-1.0
text (afc$c1[,1:2], labels=rownames(afc$c1), col=3)
boring
Vin_de_table
AFC bordeaux
excellent
1.5
Grand_Cru_class
1.0
plot (c(afc$l1[,1],afc$c1[,1]),c(afc$l1[,3],afc$c1[,3]),type="n",
0.5
asp=1,main= "AFC bordeaux", xlab="Axe 1", ylab="Axe 3")
mediocre
Bordeaux_d_origine
Vin_de_marque
text (afc$l1[,c(1,3)], labels=rownames(afc$l1), col=2)
Axe 3
0.0
Vin_de_table
text (afc$c1[,c(1,3)], labels=rownames(afc$c1), col=3)
boring
-0.5
abline (v=0, h=0)
lines ( afc$c1[,c(1,3)], lty=2)
-1.0
good
-1.5
Cru_Bourgeois
-1 0 1 2
Aussi : points () Axe 1
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
score(afc) Bordeaux_d_origine
afc$c1 CS1
excellent -1.1276880 boring
good -0.8747596
mediocre 0.4626773
mediocre
boring 1.4348968
good
excellent
d = 0.5 Columns
library (ade4)
data (santacatalina)
0.6
coa$eig
0.5
[1] 0.6045948913 0.3440317070 0.1627327315 0.1300140906 0.0894258099
0.0342412610 0.0157494017 0.0081980480 0.0008699014
0.4
barplot (coa$eig, names.arg= 1: coa$rank, main= "Eboulement des valeurs propres") coude
0.3
Mthode du coude : saut dans l'boulement des valeurs propres
Retenir les valeurs propres > moyenne les valeurs propres
0.2
coude
mean (coa$eig) # 0.1544286
0.1
utilis dans l'AFCM
0.0
Contributions
1 2 3 4 5 6 7 8 9
Pinus.chihuahuana
Arbutus.arizonaca
v5
v4
v6 Quecus.hypoleucoides
Quercus.arizonaca v5
v6 v4
Pinus.chihuahuana
v7 Arbutus.arizonaca
Arctostaphylos.pringlei v3
Quecus.hypoleucoides v7 v3
v8v9
Garrya.wrightii Pinus.ponderosa Quercus.arizonaca v8v9
Pinus.cembroides v2 rctostaphylos.pringlei v2
Garrya.wrightii Pinus.ponderosav10
nus.cembroides
v10
Quercus.emoryi
rcus.emoryi
Quercus.rugosa
Quercus.rugosa Pseudostuga.menziesii
v1
Pseudostuga.menziesii
v1 1 2
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
v1
v2
v3
v4
v5
v6
v7
v9
v8
v10
d=1 Columns
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
par(mfrow=c(1,2))
table.value (santacatalina, grid=TRUE) # 1 Tableau des donnes
table.value (santacatalina[order(coa$li[,1]), order(coa$co[,1])], grid=TRUE) # 2
par(mfrow=c(1,1)) Tri suivant F1 Tri suivant F1
Tableau "diagonalis"
v10
v10
1 2
v1
v2
v3
v4
v5
v6
v7
v8
v9
v8
v9
v7
v6
v5
v4
v3
v2
v1
Pinus.ponderosa Quercus.emoryi
Quecus.hypoleucoides Pinus.cembroides
Pinus.cembroides Garrya.wrightii
Arctostaphylos.pringlei Arctostaphylos.pringlei
Quercus.arizonaca Quercus.arizonaca
Quercus.rugosa Pinus.chihuahuana
Garrya.wrightii Quecus.hypoleucoides
Pseudostuga.menziesii Arbutus.arizonaca
Quercus.emoryi Quercus.rugosa
Pinus.chihuahuana Pinus.ponderosa
Arbutus.arizonaca Pseudostuga.menziesii
0.04
library (ade4)
OM
BD
OM OM
library (MASS) OF FL
OF
OF
OF OF
OM OF
data (crabs) OM OM OM OFOF OF
OF OF OF OF OF
OM OM OMOM OF OF
OF OF OF
gr <- as.factor (paste(crabs[,1], crabs[,2], sep=""))
OM OM OM OF
0.02
OM OM OF OF OF OF
OF OF OF
OM OF OF
OM OM OF
OFOF OF OF
OM OM OM OF
OF
OM OM OM OF
OM OM OM OM OM OF
OMOM OM OM OFOF
OM OM OF OF OF
OM OM OM OF OF
OM OMOM OF OF OF
OM
OMOM
OM
OM
OM
OF OF RW
0.00
OM
Axis2
OM
BM BF BF
BF
CL BF
BF BF
-0.02
BM BM BF
BFBF
BM BM BMBF BF
BM BF
BF BF BF BF
BMBM BM BMBM BM BFBFBF BF
BM BM
BM
BM
BM BM
BM BM CW BM
BM
BF BF
BF
BF
BMBM BMBM
BM BM
BM BM BM BM BF BF
BM BM
BM
BM BM BF BF BF
BM BM
BM BM
BM BM
-0.04
BM
BM
BM
liminer des lignes (ou colonnes) qui par leur forte contribution sur un axe
masquent plus ou moins les correspondances entre les autres lments de
lanalyse (tirement excessif des axes)
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
colonnes supplmentaires
FL RW CL CW BD
points moyens BF
BM
13.3
14.8
12.1
11.7
28.1
32.0
32.6
36.8
11.8
13.3 lignes
Espce*Sexe OF 17.6 14.8 34.6 39.0 15.6 supplmentaires
OM 16.6 12.3 33.7 37.2 15.3
0.04
mgr <- aggregate(crabs[,4:8], by=list(gr),mean)
rownames(mgr)<- mgr[,1]
BD
Fonction suprow ()
FL
0.02
# lignes supplmentaires OM
smgr <- suprow (afcrab, mgr[,-1])
RW
names(casup)
[1] "tabsup" "lisup"
0.00
Axis2
# coordonnes des points supplmentaires CL
smgr$lisup
Axis1 Axis2 BF
-0.02
BF 0.03121187 -0.01649751
CW
BM -0.01838406 -0.02680493
OF 0.01958921 0.02134331 BM
OM -0.02991233 0.01679338
-0.04
0.5
Fonction supcol ()
# calcul des coordonnes des points
# colonnes supplmentaires
csup <- supcol (afcrab, vdis) sex.F
BD
0.0
FL
Axis2
RW
names(csup)
CL
CW
-0.5
Axis1 Axis2 colnames de co
sp.B 0.2997822 -0.9723478
sp.O -0.1045915 0.8863265
sex.F 0.8904758 0.1020459
sex.M -0.6952851 -0.1880672
sp.B
-1.0
Elments supplmentaires
Remarque sur l'utilisation de variables binaires disjonctives
supplmentaires dans une AFC simple (5/5)
head (csup$tabsup) head (sweep(crabs[,4:8], 2, colSums(crabs[,4:8]), "/"))
sp.B sp.O sex.F sex.M FL RW CL CW BD
fonction : supcol.coa () 1 0.01 0 0 0.01 1 0.002598986 0.002629823 0.002507359 0.002608851 0.002494565
2 0.01 0 0 0.01 2 0.002823590 0.003022334 0.002818832 0.002856005 0.002637112
3 0.01 0 0 0.01 3 0.002951935 0.003061585 0.002958995 0.003075698 0.002744022
OMBD OM
OF
OF
OF OF
FL OF
Placer ces modalits aux barycentres des points lignes OM OM OF
OM OM OFOF OF OF
OM OM OMOM OF OF OF
OF
OF OF OF
OF
par projection des scores des points lignes et coordonnes des colonnes OMOF
OM OM OF OF
OF
1
OM OM OM OF OF OF
OFOF OFOF
OM OF
supplmentaires OM
OM OM
OM OM
OM
sp.O OF
OF OF
OF
OF
OF
OM
OM OM OF
OM OM OM OF
OMOM OM OFOF
OM OM OM OF OF OF
0
Axis2
OM
-1
BMBM BM BM BM BM BF BFBFBF
BM BM BM BM CW BF BF
BM BM BM BM BF BF
BM
BM BM BMBM BM
BM
AFCM
Pour lanalyse dun tableau dont les q variables (q>2) sont exprimes en modalits
Sous R : data.frame de facteurs
data.frame': 38 obs. of 8 variables:
[1] 38 8 8 variables
9
dim(acm$co) deniv.3
5
[1] 24 3 24 modalits 1 cloiso.1 14
scatter.dudi (acm)
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
2 2
1 1
3
1 2
2
domain inexp 1
1 2
3 3
3 3
2 2
domain boise hetra
1 1
cloiso favor 2
2
3 3
2
2 2
1 3 1 3 1
1 1 3
deniv hetra
favor inexp
3 3
2 2
1 1
3
3
altit boise 1 2
2 1
d=1 d=1
hetra.2
1.5
Reprsentations graphiques 9
1.0
inexp.3 21
20
deniv.3
Axis2
cloiso.1
1 14 cloiso.2
0.5
altit.2
15
boise.2
29
favor.3 7
25 8
23
13 2
0.0
6 inexp.2 26 22
38
16
19
favor.1
-0.5
altit.3 cloiso.3
28 33
31
17 32
34 24
18 37
domain.3 30 35
s.chull
inexp.3 2
(acm$li, fac=ur[,v], op=1, clabel=0, col=1:3, add.plot=TRUE) deniv.3
cloiso.1
cloiso
variable affiche
altit.2
boise.2
favor.3
inexp.2
hetra
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
0.4
0.3
barplot (acm$eig, names.arg= 1:acm$rank, xlab="Axes",
ylab="Inertie", main= "Eboulement des valeurs propres")
Inertie
0.2
ineracm$TOT [c(1:4, 13:16),]
0.1
inertia cum ratio
1 0.428309854 0.4283099 0.2141549
2 0.278278207 0.7065881 0.3532940
0.0
3 0.250110212 0.9566983 0.4783491 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Axes
4 0.188768008 1.1454663 0.5727331
. . . L'inertie totale ne dpend que
13 0.028391037 1.9500283 0.9750141 du nombre de variables et
14 0.026236575 1.9762649 0.9881324 de modalits.
15 0.016874373 1.9931392 0.9965696
16 0.006860761 2.0000000 1.0000000
L'inertie moyenne ne dpend
que du nombre de
Somme des valeurs propres
variables.
= (nombre de modalits - nombre de variables) / nombre de variables
(nrow (acm$co) - ncol (ur)) / ncol(ur)
[1] 2 Eviter :
des nombres de modalits trs dissemblables
Valeurs propres moyenne = 1/ nombre de variables des modalits faiblement reprsentes (<5%)
1/ncol(ur) # mean (ineracm$TOT [,1])
[1] 0.125 Remde :
Tenter des regroupements
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Conclusions :
LAFC du tableau de Burt est quivalente lAFCM des variables qualitatives :
Les valeurs propres de lAFCM sont gales la racine carre des valeurs propres trouves par lAFC du tableau
de Burt ;
La reprsentation des variables est la mme ( un facteur multiplicatif prs) ;
La reprsentation des individus de lAFC est la mme en les mettant en individus supplmentaires.
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Soit V lensemble des variables quantitatives. Chaque variable v est transforme en n variables
qualitatives par dcoupage en n classes et chacune tant repre par le numro de la classe.
Deux stratgies :
1. avoir globalement le mme nombre de classes par variable
2. dfinir plutt des classes deffectifs gaux des classes damplitude gale.
Deux fonctions :
1. cut () pour dcouper une variable continue en classes
2. recode() pour regrouper des classes [librairie car]
Remarque : si variable avec NA, crer une classe NA regroupant les donnes manquantes
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
20
Exemple
15
x <- rnorm(100,5)
Frequency
range(x) # 2.689071 6.973328
10
r <- hist (x)
r$breaks # 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0
5
r$counts # 1 5 13 16 20 19 17 4 5
$equidist # TRUE
0
3 4 5 6 7
Fonction quantile ()
quantile (x, probs = seq (0, 1, 1 / n), na.rm = FALSE) # donne par dfaut les quartiles
n tant le nombre souhait de classes # par dfaut n = 4
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
names(Cars93); ?(Cars93)
car <- Cars93 [,c(5,13,17,19,24,18,3,9,10)]
dim (car)
[1] 93 9
summary(car)
Price Horsepower Fuel.tank.capacity Length Luggage.room
Min. : 7.40 Min. : 55.0 Min. : 9.20 Min. :141.0 Min. : 6.00
1st Qu.:12.20 1st Qu.:103.0 1st Qu.:14.50 1st Qu.:174.0 1st Qu.:12.00
Median :17.70 Median :140.0 Median :16.40 Median :183.0 Median :14.00
Mean :19.51 Mean :143.8 Mean :16.66 Mean :183.2 Mean :13.89
3rd Qu.:23.30 3rd Qu.:170.0 3rd Qu.:18.80 3rd Qu.:192.0 3rd Qu.:15.00
Max. :61.90 Max. :300.0 Max. :27.00 Max. :219.0 Max. :22.00
NA's :11.00
Passengers Type AirBags DriveTrain
Min. :2.000 Compact:16 Driver & Passenger:16 4WD :10
1st Qu.:4.000 Large :11 Driver only :43 Front:67
Median :5.000 Midsize:22 None :34 Rear :16
Mean :5.086 Small :21
3rd Qu.:6.000 Sporty :14
Max. :8.000 Van : 9
5 quantitatives
1 discrte
3 qualitatives
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
5 10 15 20
25
Frequency
Frequency
Frequency
20
15
0 5 10
0 5
0
10 20 30 40 50 60 50 100 150 200 250 300 10 15 20 25
L coffr pers
40
20
30
20
Frequency
Frequency
Frequency
20
5 10
5 10
10
0
0
140 160 180 200 220 10 15 20 2 3 4 5 6 7 8
par (mfrow=c(3,3))
for (i in 1:6) hist (car[,i], main = colnames(car)[i], xlab="", col=i)
par (mfrow=c(1,1))
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
Fonction as.factor ()
# pers (Passengers)
is.vector (car[,6])
[1] TRUE
summary (car[,6])
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.000 4.000 5.000 5.086 6.000 8.000
summary (car[,6])
2 4 5 6 7 8
2 23 41 18 8 1
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
library (car)
table (car[,6])
2-4 5 6 7-8 nouvelles valeurs
25 41 18 9
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
summary(car)
ty
pers.7.8
pe.Van
barplot (ctrs$TOT[,1])
tank..18.1.22.6.
0.5
tank..22.6.27. Rbag.None
0.4
L..172.188.
PU..100.150.
0.3
PU..150.200.
L..188.203. ty pe.Sporty L..141.157.
Rbag.Driv er.only pers.2.4 cof f r.1
PU..200.300.
trac.Front ty pe.Small
0.2
pers.5 L..157.172.
PU..55.100.
tank..9.18.13.6.
cof f r.3
ty pe.Compact
ty pe.Midsize
trac.Rear
cof f r.4
tank..13.6.18.1.
0.1
Rbag.Driv er...Passenger
0.0
cof f r.6
pers.6
L..203.219.
ty pe.Large
car93
3
Introduction de la variable Prix coffr.0
en variable illustrative
2
# Transformation de la variable Prix
csup <- acm.disjonctif (car[1])
Axe 2 (13.7%)
# Introduction dans lanalyse
1
carmsup <- supcol (carm, csup)
prix.3
Comp1 Comp2
prix.1 0.32748085 -0.05184403
carmsup$cosup prix.2 0.00445254 -0.01211915
prix.3 -0.14824019 0.14308666
0
prix.4 -0.18369320 -0.07912348 prix.2
coffr.1
prix.1
coffr.3
prix.4
coffr.4
Remarque :
Dans ce cas, supcol utilise supcol.default() faisant intervenir coffr.6
carm$l1 et carm$lw (ici constant) et non supcol.coa().
-1
Pour avoir des coordonnes identiques lAFC simple du
tableau disjonctif, il convient de pondrer ces valeurs par -1 0 1 2
le poids de ces points. Axe 1 (17%)
x <- paste("(",round(100*carm$eig[1:2]/sum(carm$eig),1),"%)",sep="")
(coosup <- carmsup$cosup / colMeans(csup) ) plot (c(carm$li[,1],carm$co[,1]), c(carm$li[,2],carm$co[,2]), type="n", asp=1,
main="car93", xlab=paste("Axe 1",x[1]), ylab=paste("Axe 2",x[2]))
Comp1 Comp2 abline (v=0, h=0)
prix.1 1.26898830 -0.20089561 points (carm$li[,1:2], pch=19, cex=.5, col=3) # Vhicules
prix.2 0.01800375 -0.04900353 s.label (coosup[,1:2], clab=.8, add.plot = TRUE ) # Prix
prix.3 -0.59940600 0.57856782 sel <- grep ("cof", rownames(carm$co), fixed=TRUE) # Choix colonne
prix.4 -0.74275945 -0.31993409 text (carm$co[sel,1:2], labels=rownames(carm$co)[sel], cex=.8, col=2)
MNHN Ecole doctorale - Module Analyse des donnes sous R (niveau 1)
3
2
Autres reprsentations d'une variable
qualitative sur une carte factorielle
RS2
1
opar <- par()
par (mfrow = c(2, 2), mgp = c(1.5, .6, 0), mar = c(3, 2.5, 1, 1)) prix.3
plot.new()
plot (carm$l1[,1:2], type="n")
0
prix.2
prix.1
abline (v=0, h=0) prix.4
points (carm$l1[,1:2], pch=19, cex=.6, col=as.numeric(car[,1])) # scores
text (coosup[,1:2], labels=rownames(coosup), col=1: nrow(coosup), font=2) # coordonnes
-1
s.class (carm$l1[,1:2], fac=car[,1], col=1:4, label=names(csup))
s.chull (carm$l1[,1:2], fac=car[,1], col=1:4, optchull=1, cpoint=1, label=names(csup), clabel=1) -2 -1 0 1 2
RS1
par(opar)
d=1 d=1
prix.2 prix.2
prix.1 prix.1
prix.4 prix.4