AFC
Yanice
20 novembre 2016
Contents
Intro - questions AFC 2
I. Visualisation des données 2
II. Construction du Tableau de contingence 3
II.1. Tableau de contingence (effectifs observées) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
II.2. Tableau des fréquences relatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
II. Test du chi2 de contingence 4
II.1. Principe du test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
[Link] de contingence théorique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
II.3. Expression de l’inertie du nuage des individus . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
III. Représentations graphique de la table de contingence (effectifs observés) 6
IV.1. Score à priori (colonnes=cheveux) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
V. Score optimum 10
V.1. AFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Sortie AFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
VI. Représentations graphiques 12
V.2. Représentation simultannée des lignes et colonnes . . . . . . . . . . . . . . . . . . . . . . . . . 13
VII. Aides à l’interprétation : [Link] (pondérations non uniformes) 14
VII.1. Décomposition de l’inertie totale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
VII.2. Contribution absolue des lignes (colonnes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
VII.3. Contribution relative des lignes (resp. colonnes) . . . . . . . . . . . . . . . . . . . . . . . . . 15
Annexes : Profil lignes et profils colonnes : [Link] 16
Différences AFC ACP 17
1
Intro - questions AFC
• Disntace utilisé en AFC : CHi2
• Son apport ? Tableau de contingence + échantillon représentatif (ce qu’on observe peut etre
appliquée a la population contrairement a en ACP).
-** Poids profil ligne et colonnes : fréquences d’apparition des modalités dans la population**; Cela signifie
que les moyennes sont des moyennes pondérées et pareil pour les variances.
• Centre de gravité des profils lignes = Quel est le profil ligne moyen? : fréquence des modalités données
en colonné f.j
• Déterminer l’intertie puis multiplier par le nombre dindividus puis afc
• Quel ajustement lorsque les modalités ont les memes valeurs ou les memes distances ? On les regroupe,
ca ne change rien
• Que faire en plus du Chi2 pour manipuler les données ? S’assurer que le jeu de donné représente bien
la représentation.
• Que faire si tte les valeurs propres sont égales à l’unité ? On a au moins une dichotomie en quelque
part. On sait quel modalité lignes associer à quelle modalité colonne.
• Les valeurs propres proches de 1 traduisent une forte liaison entre les lignes et les colonnes.
• Warning dns le test de chi2 : il ya de modalités dont les effectifs sont inférieurs à 5 (Trop, on ne peut
pas interpréter)
• Lorsque les variables présentent de nombreuses modalités, il est difficile d’extraire une info pertinente
si on se contente d’observer le tableau de données. La technique de l’AFC est là pour pallier cette
déficience.
# Analyse Factorielle des Correspondances (AFC)
Considérons deux variables quaitatives V et W qui ont respectivement n et p modalités mesurées pour N
individus. L’AFC consiste à s’intéresser à l’existence de relations entre les modalités des deux variables.
L’AFC permet de définir pour une table de contingence un score sur les colonnes tel que les scores moyens des
lignes(obtenus en utilisant les fréquences des tableaux) soient les plus séparés possibles, au sens de la variance
de ses scores moyens. Et inversement (on peut partir des colonnes plutot que des fréquences des lignes).
On va travailler sur la table de contingence. Analyser score à priori et score optimal. on va chercher une
combianaison linéaire des modalités de la variable cheveux qui sépare le plus possible en moyenne de la
couleure des yeux. score ou les coeff des combi linéaire de la couleur des yeux séparent le plus possible de la
couleur des cheveux. Combi linéaire de modéalité pour optimiser la postion de la couleur des yeux.
objet=
I. Visualisation des données
par(mfrow=c(1,2))
barplot(summary(objet[,1]),main="Fréquence absolue colonne1",col="green",horiz=TRUE, las=1)
barplot(summary(objet[,1])/length(objet[,1]),horiz=TRUE,las=1,main="fréquence relatives",col="lightblu
2
Fréquence absolue colonne1 fréquence relatives
Roux Roux
Noir Noir
Marron Marron
Blond Blond
0 50 150 250 0.0 0.1 0.2 0.3 0.4
II. Construction du Tableau de contingence
II.1. Tableau de contingence (effectifs observées)
Tableau croisant les modalités des 2 variables. Il contient les effectifs obtenu pour chaque couple de modalité.
C’est un tableau croisé qui ventile la populaion entre les modalités des 2 variables qualitatives.
#Renvoie une table
(tc=table(yeux,cheveux))
## cheveux
## yeux Blond Marron Noir Roux
## Bleu 94 84 20 17
## Marron 7 119 68 26
## Noisette 10 54 15 14
## Vert 16 29 5 14
#Manipulation pour avoir un [Link]
(dftc=[Link](unclass(tc)))
## Blond Marron Noir Roux
## Bleu 94 84 20 17
## Marron 7 119 68 26
3
## Noisette 10 54 15 14
## Vert 16 29 5 14
Théoriquement :
• nij : effectif pour le couple de modalité (i,j)
• ni. : somme sur les colonnes
• n.j somme des effectifs des lignes
Tout inidividu présente 1 unique modalité de chaque varible. Aucune modalité non nulle, sinon supprimé.
#Nombre total d'individu
n=sum(tc)
#Nombre de modalité pour la variable 1 (en ligne)
I=nrow(tc)
#Nombre de modalité pour la variable 2 (en colonne)
J=ncol(tc)
II.2. Tableau des fréquences relatives
freqR=tc/n
II. Test du chi2 de contingence
II.1. Principe du test
L’objectif est de déterminer si il existe un lien ou non entre les 2 variables.
H0 : Indépendance entre les variables A et B contre H1 : Présence d’un lien entre les deux variables.
• Table de contingence théorique (contenant les effectif théoriques sous H0) :
La fréquence théorique est définie par :
ni. nj.
P (A = ibigcapB = j) = P (A = i) × (B = j) = ×
n n
L’effectif théorique est donc
ni.n.j
ET = n × P (A = ibigcapB = j) =
n
• On compare les valeurs de la table de contingence théorique avec la table de contingence observée (tc
ici).
P P (EO−ET )2 P P (F O−F T )2
Chi2 = ET =n× FT avec E=n*F
V coefficient de cramer suit une Chi2(I-1,J-1) degrés de liberté.
4
testchi2=[Link](tc)
testchi2
##
## Pearson's Chi-squared test
##
## data: tc
## X-squared = 138.29, df = 9, p-value < 2.2e-16
#ou [Link](v1,v2)
#statistique de test
chi2=[Link](testchi2$statistic)
cramer=sqrt(chi2/(n*min(I-1,J-1)))
Il faudrait comparé la valeur téhorique du chi2(I-1,J-1) avec la valeur trouvé par le test et si la valeur trouvé
par le test Chi2 dépasse la valeur théorique, on rejette l’hypothèse d’indépendance.
Interprétation :
Chi2=0 ==> indépendance entre deux variables.
Chi2 petit ==> EO presques identiques à ET. Les variables sont peut liées entre elles. Chi2 grand ==> EO
diff de ET. LEs deux variables sont liées entre elles.
p − valeur < α on rejette H0: Il existe un lien entre les 2 variables qualitatives.
[Link] de contingence théorique
ni.n.j
n
# Table de contingence théorique
testchi2$expected
## cheveux
## yeux Blond Marron Noir Roux
## Bleu 46.12331 103.86824 39.22297 25.785473
## Marron 47.19595 106.28378 40.13514 26.385135
## Noisette 19.95101 44.92905 16.96622 11.153716
## Vert 13.72973 30.91892 11.67568 7.675676
#Retrouver la table de contingence théorique
outer([Link](tc,1),[Link](tc,2))/sum(tc)
## cheveux
## yeux Blond Marron Noir Roux
## Bleu 46.12331 103.86824 39.22297 25.785473
## Marron 47.19595 106.28378 40.13514 26.385135
## Noisette 19.95101 44.92905 16.96622 11.153716
## Vert 13.72973 30.91892 11.67568 7.675676
5
#outer : multiplication de 2 tables
#[Link] : ni. et nj.
II.3. Expression de l’inertie du nuage des individus
Inertie du nuage des individus par rapport au centre de gravité.
Chi2(I − 1, J − 1)
Ig =
N
III. Représentations graphique de la table de contingence (effectifs
observés)
balloonplot
library(gplots)
## Warning: package 'gplots' was built under R version 3.3.2
##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
balloonplot(tc)#si ce n'est pas sous le format table ([Link](tc))
6
Balloon Plot for x by y.
Area is proportional to Freq.
yeux Bleu Marron Noisette Vert
cheveux
Blond 94 7 10 16 127
Marron 84 119 54 29 286
Noir 20 68 15 5 108
Roux 17 26 14 14 71
215 220 93 64 592
La surface des symboles est proportionnelle aux effectifs.
La surface grise représente les effectifs par variables.
[Link]
library(ade4)
[Link](tc,[Link] = rownames(tc),[Link]=colnames(tc))
7
Vert
Noisette
Marron
Bleu
Blond
Marron
Noir
Roux
Principe : utiliser de symboles dont la surface est proportionnelle aux effectifs.
mosaicplot
Issu du test du chi2 de contingence. Permet de visualiser les écarts par rapport à l’hypothèse d’indépendance.
(résidus) Permet de mettre en évidence les liens les eccarts les plus importants.
mosaicplot(tc,shade=TRUE)
8
tc
Bleu Marron Noisette Vert
<−4−4:−2−2:0 0:2 2:4 >4
Blond
cheveux
Marron
Standardized
Residuals:
Roux Noir
yeux
• Se base sur EO−ET
√
ET
qui sont les résidus standardisés. H0 : Il n’ya pas de liens entre les deux variables.
Elles sont indépendants.
• Mosaic coloré : eccart entre observée et théorique important == chi 2 augmente et plus chi2 grand
plus j’ai une relation entre mes deux variables.
• Bleu : Plus d’individus observé qu’attendu sous l’hypothèse d’absence de liens entre variables.(Excédent).
Surreprésentativité des effectifs observés par rapport aux théoriques.
• Rouge : Moins d’individus qu’attendu sous l’hypothèse d’absence de liens entre les variables.(Déficit).
Sous représentativité des effectifs observés par rapport aux théoriques.
• Table tte blanche: peu de chance que les variables soient liées.
• Bien quand on a de petit jeux de donnés
• La surface d’un élément est proportionnelle aux effectifs contenus dans la table de contingence.
• Lorsque les variables présentent de nombreuses modalités, il est difficile d’extraire une info pertinente
si on se contente d’observer le tableau de données. La technique de l’AFC est là pour pallier cette
déficience. #IV. Scoring
On veut essayer de trouver des similitudes entre lignes, colonnes, lignes et colonnes. Il faut donc transformer
l’info qualitative contenue dans les données originales en une info quantitative, via la construction d’un score
numérique.
9
IV.1. Score à priori (colonnes=cheveux)
On effectue un score a priori, si on semble connaitre bien nos données et voir qu’il ya clairement deux types
de données opposé, ex: cheveux foncés et cheveux clairs. Sinon, on va au score optimum.
#Affectation d'un score a priori sur les colonnes
scoreApriori=c(1,-1,-1,1)
names(scoreApriori)=colnames(cheveux)
Score moyen pour les lignes
freqObservee=apply(dftc,1, function(x) x/sum(x));freqObservee
## Bleu Marron Noisette Vert
## Blond 0.43720930 0.03181818 0.1075269 0.250000
## Marron 0.39069767 0.54090909 0.5806452 0.453125
## Noir 0.09302326 0.30909091 0.1612903 0.078125
## Roux 0.07906977 0.11818182 0.1505376 0.218750
scoreMoyenLigne=apply(t(freqObservee),1,function(x) sum(x*scoreApriori))
scoreMoyenLigne
## Bleu Marron Noisette Vert
## 0.03255814 -0.70000000 -0.48387097 -0.06250000
Interprétation
-1 : cheveux foncés 1 : Cheveux clairs Donc MArron ayant un score à -0.70, les cheveux foncés dominent dans
la population des gens ayant les yeux Marrons.
V. Score optimum
V.1. AFC
nij
• Fréquences conjointes : pij = n
ni. n.j
• Fréquences marginales : pi. = n et p.j = n
• P : tableau des pij et Po=P-pi.*p.j le tableau centré
• DI et DJ les matrices diagonales des fréquences marginales
library(ade4)
afc=[Link](dftc,scannf=FALSE,nf=ncol(dftc)-1)
On a min(modalité-1, variable-1)=3 qui est le nombre de valeurs propres total de l’axe et le rang de la matrice
analysée.
Le probleme de l’ACP des profils lignes et colonnes sont duaux.
λ1 <= 1
Choix des axes
La valeur propre associée à un axe mesure la significativité de la dépendance des profils projettés sur cet axe.
10
Sortie AFC
#tableau annalysé par l'AFC :(O-T)/T
afc$tab
#Retrouve avec les calculs : (O-T)/T
(dtfc-reschi$expected)/reschi$expected
#Poids des colonnes et des lignes de la table observée
#= Fréquences marginales de la table de contingence observée
afc$cw
apply(dftc,2,function(x) sum(x)/n)
afc$lw
apply(dftc,1,function(x) sum(x)/n)
#Variance
afc$eig
#Poids qui maximisent la variance
afc$co #Score des cheveux pou var=1 ; score moyen des colonnes
#(c'est pr ca qu'on multiplie par racien de lambda ?? car on veut
#le résultat pour variance =1)
#Matrice diagonalisé (voir td mon prof)
matZ=[Link](afc$tab)
DI=diag(afc$lw)
DrJ=diag(sqrt(afc$cw))
matH=DrJ%*%t(matZ)%*%DI%*%matZ%*%DrJ
#Rang de la matrice diagonalisé
afc$rank
min(I-1,J-1)
#VAleur propre et vecteurs propres de la diagonalisation
afc$eig
#retrouver avec :
reseigen=eigen(matH);reseigen$value
#Coordonnées des lignes (nouvelles)
#centrée, de variance lambda et de covariances nulles
afc$li#pour retrouver la démo voir TD prof
matZ %*% DrJ %*% reseigen$vectors[, 1:afc$rank]
#Centrée démos : moyenne pondérés par le poid des lignes
round(sum(afc$li$Axis1*afc$lw),2);round(sum(afc$li$Axis1*afc$lw),2)
#Variance lambda
sum(afc$li$Axis1*afc$li$Axis1*afc$lw); afc$eig[1]
#covariance nulle Axis1 et Axis2
#Coordonnées des colonnes(nouvelles)
#Centrées, de variance lambda et de covariance nulles
afc$co
11
#centrés
round(sum(afc$co$Comp1*afc$cw),2)
#Liens Chi2 et Inertie totale : It=Chi2/n
testchi2$statistic/n
sum(afc$eig)
li : Nouveaux individus centré (pondérés), de variance λ et de covariances nulles.
VI. Représentations graphiques
Lorseque je veux représenter qu’un seul axe, j’utilise la fonction score. score de mon analyse représente le 1er
axe qui est l’axe qui a la plus grande inertie. score(ac,xax=1)
par(mfrow=c(1,1))
score(afc)
Rows Bleu
Vert
Noisette
Marron
Blond
Roux
Marron
Noir
d = 0.5 Columns
Elle contient linfo contenue sur les lignes(en haut) et les colonnes (en bas) . En horitzontal le premier facteur
de lanalyse; le trait plus foncé représente le 0. Chaque point est la position de la modalité sur l’axe 1. C’est
comme si je projette chaque point sur l’axe 1 et jaurai sa position, on les a séparé pour pouvoir interprété,
en réalité il se trouve tous sur le même axe. La lisibilité sur un trait n’est pas top, on sépare les lignes des
colonnes. le lignes en verticales sont la pour faciliter la lecture( méridiennes). si plusieurs points appartiennent
aux meme méridiens=> valriables liées entre elles. roux et marron sont lié a noisette. blond est le plus loin
donc qui se distingue le plus = on lui affecte le plus fréquemment les yeux bleu.
12
Pas de plan quand on a qu’un seul axe. . .
summary(afc)
## Class: coa dudi
## Call: [Link](df = dftc, scannf = FALSE, nf = ncol(dftc) - 1)
##
## Total inertia: 0.2336
##
## Eigenvalues:
## Ax1 Ax2 Ax3
## 0.208773 0.022227 0.002598
##
## Projected inertia (%):
## Ax1 Ax2 Ax3
## 89.373 9.515 1.112
##
## Cumulative projected inertia (%):
## Ax1 Ax1:2 Ax1:3
## 89.37 98.89 100.00
J’ai 89% de l’inertie totale contenue sur l’axe1 donc de linfo totale, laxe2 est quasi négligeable. J’ai quand
meme de l’info mais très faible, je vais la regrder mais il ne faut pas que je lui en donne trop d’importance.
On est dans la population ecossaise des années 70 :)
V.2. Représentation simultannée des lignes et colonnes
scatter(afc)
13
Eigenvalues d = 0.2
Vert
Roux
Noisette
Marron
Marron Bleu Blond
Noir
Représentation simultannées des lignes et colonnes. Couleurs des cheveux est liés aux yeux. . . La taille :
faciliter la lecture pas plus de poids. MArron apparait deux fois pour deux choses différente. verticale : Roux
ressort un peu avec une tendance pour les yeux vert.
VII. Aides à l’interprétation : [Link] (pondérations non uni-
formes)
Importantes dans les analyses à pondérations non uniformes (AFC par ex). Les statistiques d’inerteis se
trouvent dans [Link]. Pour les Analyses à pondération uniforme, les résultats sont redondants avec les
cartes factorielles.
INERTIA = [Link](afc,[Link]=TRUE,[Link]=TRUE)
VII.1. Décomposition de l’inertie totale
Inertie totale
r
X
IT = λk
i=1
r : rang de la matrice diagonalisé.
14
IT=sum(afc$eig)
Inertie relative du vecteur principal de rang k
λk
IT
#Inertie relative : contribution des axes à l'inertie totale.
IR=afc$eig/IT
IR_pourcentage=IR*100
Sortie [Link]$TOT
INERTIA$TOT
#VAleurs propres de 1 a r
INERTIA$TOT$inertia
#Valeurs propres cumulés
INERTIA$TOT$cum
#Inertie relative cumulé du nuage sur les différentes dimensions
INERTIA$TOT$ratio
cumsum(IR_pourcentage)/100 #Pareil
VII.2. Contribution absolue des lignes (colonnes)
Contributions des individus à l’inertie de chaque axe.
#Méthode 1: avec [Link]
INERTIA$[Link]#multiplié par 1000 pour faciliter la lecture
## Axis1 Axis2 Axis3
## Bleu 5213 1124 31
## Marron 4312 1304 668
## Noisette 340 1980 6109
## Vert 135 5591 3192
#Méthode 2 : avec [Link]
afc$li[,1]*afc$li[,1]*afc$lw/afc$eig[1]
## Bleu Marron Noisette Vert
## 0.52128445 0.43115744 0.03400961 0.01354851
VII.3. Contribution relative des lignes (resp. colonnes)
CE sont des carrés de cosinus.
15
#Contribution relatives
#M2thode 1
INERTIA$[Link]
## Axis1 Axis2 Axis3 [Link]
## Bleu 9775 -224 -1 4766
## Marron -9670 -311 19 3985
## Noisette -5424 3363 -1213 560
## Vert 1759 7726 516 689
#Méthode 2 : pour la 3eme ligne :
(afc$li[3, ] * afc$li[3, ])/(sum(afc$tab[3, ] * afc$tab[3, ] * afc$cw))
## Axis1 Axis2 Axis3
## Noisette 0.5424487 0.3362865 0.1212648
• Indique si les individus sont bien représentés. Si ils sont >5000, ils sont bien représentés, donc on peut
le commenter. Le signe smoisn indique si il est a gauche ou a droite de l’origine (axe).
• Les résultats sont multipliés par 1000
• LA derniere colonen contient la contribution a la trace ( voir page 14 td5 prof)
#Contrivution relative cumulées
INERTIA$[Link]
## Axis1 Axis2 Axis3 remain
## Bleu 9775 9999 10000 0
## Marron 9670 9981 10000 0
## Noisette 5424 8787 10000 0
## Vert 1759 9484 10000 0
Ce dernier tableau contient pour chaque ligne la somme des contributions relatives. (voir td prof)
Annexes : Profil lignes et profils colonnes : [Link]
CE sont les fréquences conditionnelles associées aux profils lignes et colonnes profile ligne :
nij
fj|i =
ni.
ProfLignes=[Link](tc,1)
ProfColonnes=[Link](tc,2)
#On vérifie égalment que la somme vaut 1
colSums(ProfColonnes)
## Blond Marron Noir Roux
## 1 1 1 1
Profil ligne : En sachant la ligne tu trouves la colonne
16
Différences AFC ACP
Pour une AFC, l’analyse des profils lignes centrés est équivalente à l’analyse des profils lignes **non centrées*
si dans cette première nous retirons l’axe factoriel donné par le centre de gravité des lignes.
l’analyse des profils lignes centrés en retirant l’axe factoriel donné par le centre de gravité des lignes est
équivalente à l’analyse des profils lignes **non centrées* contrairement à l’ACP.
17