analyse factorielle des correspondances sous...

63
MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1) Analyse Factorielle des Correspondances sous R AFC simple Introduction 2 Variables qualitatives 3 Tableau de contingence 6 Premier traitement 8 Caractéristiques de l'AFC 9 Les tableaux de données intermédiaires 11 Principe de l’équivalence distributionnelle 13 Métrique du Khi 2 17 Principe barycentrique 20 Analyse des résultats et calcul des contributions 22 Analyses des graphiques 28 Exemple 2 : tableau de dénombrements 32 Exemple 3 : tableau de mesures 37 Eléments supplémentaires 38 AFC multiple (AFCM) Principe 43 Exemple 1 : data (ours) 44 AFC du tableau de Burt 49 Tableau à variables qualitatives et quantitatives Découpage des variables quantitatives : cut () 50 AFCM exemple 2 : data (Cars93) 53 Recodage des variables : recode () 57 Cas des données manquantes 59 Analyse des résultats 61 Variables illustratives 62 25/02/2013

Upload: doanngoc

Post on 12-Sep-2018

230 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondancessous R

AFC simpleIntroduction 2Variables qualitatives 3Tableau de contingence 6Premier traitement 8Caractéristiques de l'AFC 9Les tableaux de données intermédiaires 11Principe de l’équivalence distributionnelle 13Métrique du Khi 2 17Principe barycentrique 20Analyse des résultats et calcul des contributions 22Analyses des graphiques 28Exemple 2 : tableau de dénombrements 32Exemple 3 : tableau de mesures 37Eléments supplémentaires 38

AFC multiple (AFCM)Principe 43Exemple 1 : data (ours) 44AFC du tableau de Burt 49

Tableau à variables qualitatives et quantitativesDécoupage des variables quantitatives : cut () 50AFCM exemple 2 : data (Cars93) 53Recodage des variables : recode () 57Cas des données manquantes 59Analyse des résultats 61Variables illustratives 62

25/02/2013

Page 2: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Buts : - détermination des éléments structurant les données (axes de projection)- réduire les dimensions de l’espace de représentation des données

(sélection des p premiers axes)

Sur quels types de données ?

- tableaux de contingence- tableaux de variables continues (valeurs 0)- tableaux logiques (présence-absence)- autres …

2 méthodes :

AFC : Analyse factorielle des correspondances simples pour un ensemble homogènede valeurs assimilable à un tableau de contingence entre 2 variables.

AFCM : Analyse factorielle des correspondances multiples pour un tableau de modalités de q (q>2) variables qualitatives ou un ensemble non homogène de données.

Introduction aux Analyses des Correspondances(AFC, AFCM)

Page 3: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Une variable qualitative est une variable pour laquelle la valeur observée sur chaque individu représente une qualité (ou état) nommé modalité (ou catégorie) et non une quantité.

Analyse Factorielle des Correspondances

Rappel sur les variables qualitatives

Une variable qualitative est :

Nominale quand ses modalités sont des éléments sans relation hiérarchique.Exemples : la variable Sexe avec les modalités Masculin, Féminin la variable Couleur avec les modalités jaune, vert, rouge, bleu

Ordinale quand ses modalités admettent une relation d'ordre.Exemples : Niveau de scolarité : primaire, secondaire, universitaire Appréciation : jamais, rarement, fréquemment, toujours

Dans R :Une variable qualitative est représentée par un objet de classe "factor"Les modalités correspondants aux "levels"

Utiliser la fonction ou le paramètre "ordered" pour créer une variable ordinale

sex <- as.factor(c("M","F"))str(sex)Factor w/ 2 levels "F","M": 2 1

Page 4: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

juge vin qual1 Cru_Bourgeois mediocre1 Grand_Cru_classe mediocre1 Vin_de_table boring1 Bordeaux_d_origine boring1 Vin_de_marque boring2 Cru_Bourgeois good2 Grand_Cru_classe good2 Vin_de_table boring2 Bordeaux_d_origine mediocre

...200 Cru_Bourgeois good200 Grand_Cru_classe good200 Vin_de_table boring200 Bordeaux_d_origine mediocre200 Vin_de_marque boring

Analyse Factorielle des Correspondances

Les données : 1 - Les variables qualitatives

Soit 2 variables qualitatives

L’épreuve : 200 juges 5 vins : "Cru_Bourgeois","Grand_Cru_classe","Vin_de_table","Bordeaux_d_origine","Vin_de_marque" 4 qualificatifs : "excellent","good","mediocre","boring"

test <- read.table (file.choose(), header = TRUE) Choisir le fichier testBordeaux.txt

Variable vin : variable nominale à 5 modalitésVariable qual : variable ordinale à 4 modalités

dim (test)[1] 1000 3

Tableau des modalités

Page 5: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

juge vin qual1 Cru_Bourgeois mediocre1 Grand_Cru_classe mediocre1 Vin_de_table boring1 Bordeaux_d_origine boring1 Vin_de_marque boring

...200 Cru_Bourgeois good200 Grand_Cru_classe good200 Vin_de_table boring200 Bordeaux_d_origine mediocre200 Vin_de_marque boring

Analyse Factorielle des Correspondances

Données qualitatives : codage binaire disjonctif

library (ade4)bd <- acm.disjonctif (test[,2:3])bd [c(1:5,996:1000),]

Tableau des modalités

0001010001000

100000001999

000110000998

010000100997

010000010996

0001010005

0001000014

0001100003

1000001002

1000000101

qual.mediocre

qual.good

qual.excellent

qual.boring

vin.Vin_de_table

vin.Vin_de_marque

vin.Grand_Cru_classe

vin.Cru_Bourgeois

vin.Bordeaux_d_origine

Tableau binaire disjonctif

dim (test)[1] 1000 3

dim (bd)[1] 1000 9

Principe : une variable à p modalités est éclatée en p variables binairesLa valeur 1 pour nouvelle variable vn indique l’appartenance de la valeur prise par la variable d’origine v à la classe n correspondante. Dans le tableau disjonctif, chaque individu estcaractérisé par une suite de 0 ou de 1. Les valeurs marginales des lignes seront toutesidentiques et égales au nombre de variables initiales (sauf si données manquantes).

Page 6: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Un tableau de contingence regroupe le nombre de co-occurrences entre les modalités de deux variables qualitatives.

n i1 j1n i1 j2

n i1 .

n i2 j1n i2 j2

n i2 .

n . j1n . j2

n I J

Sommes des i lignes=

Effectifs marginaux des lignes

Sommes des j colonnes=

Effectifs marginaux des colonnesEffectif

total

Variable I

Variable J

j1 j2

i1

i2

Analyse Factorielle des Correspondances

Rappel sur le tableau de contingence

I et J : deux variables qualitatives

j1, j2 : modalités de la variable J

i1, i2 : modalités de la variable I

n : effectif

Page 7: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

excellent good mediocre boringCru_Bourgeois 45 126 24 5Grand_Cru_classe 87 93 19 1Vin_de_table 0 0 52 148Bordeaux_d_origine 36 68 74 22Vin_de_marque 0 30 111 59

Analyse Factorielle des Correspondances

Les données : 2 - Le tableau de contingence

table (test$vin, test$qual)

La fonction table() calcule le tableau de contingence entre les 2 variables (facteurs)

library(ade4)data(bordeaux)bordeaux

Pour l'utilisation du tableau de contingence issud'un objet de classe table :as.data.frame.matrix (table (test$vin, test$qual))

test[,2] <- factor(test[,2],levels=c("Cru_Bourgeois","Grand_Cru_classe","Vin_de_table","Bordeaux_d_origine","Vin_de_marque" ))test[,3] <- factor(test[,3],levels=c("excellent","good","mediocre","boring"))

bd <- as.matrix(bd)t (bd[, 1:5]) %*% bd[, 6:9]

qual.excellent qual.good qual.mediocre qual.boringvin.Cru_Bourgeois 45 126 24 5vin.Grand_Cru_classe 87 93 19 1vin.Vin_de_table 0 0 52 148vin.Bordeaux_d_origine 36 68 74 22vin.Vin_de_marque 0 30 111 59

Si les variables sont sous forme d'un tableau binaire disjonctif :le produit matriciel (T'*T) tableau de contingence

transforme en classe "matrix" puis en data frame

Page 8: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

d = 0.5

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

excellent

good

mediocre

boring

Analyse Factorielle des CorrespondancesAvec la librairie ade4Exemple 1 : la méthode

library(ade4)# Les données

data(bordeaux)bordeaux

excellent good mediocre boringCru_Bourgeois 45 126 24 5Grand_Cru_classé 87 93 19 1Vin_de_table 0 0 52 148Bordeaux_d_origine 36 68 74 22Vin_de_marque 0 30 111 59

# Le traitementafc <-dudi.coa(bordeaux, scannf=FALSE)

# Coordonnées factorielles des points lignesafc$li# Coordonnées factorielles des points colonnesafc$co

Axe 1

Axe 2

Point colonne

Point ligne

Eboulement desvaleurs propres

Fonction ade4 de classe dudi

Données (data.frame)

# Affichage du plan factoriel 1 * 2scatter(afc)

Page 9: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

Les caractéristiques de l'AFC

- tableau à n lignes et p colonnes de valeurs positives ou nulles

- mesure de l’intensité de la relation (correspondance) entre deux ensembles,l’un en lignes, l’autre en colonnes

- utilise une distance euclidienne spécifique : la distance du Khi2 sur les profils

(distance pondérée par les effectifs des lignes et des colonnes)

- fait jouer un rôle symétrique aux lignes et aux colonnes

- repose sur 2 principes :• l’équivalence distributionnelle• le principe barycentrique

Page 10: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

La démarche comparée à l'ACP

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique

profils

coordonnéesfactorielles

Données"brutes"

matricevar/covar

valeurspropres

vecteurspropres

coordonnéesfactorielles

AFC ACP

Diagonalisation

Page 11: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

fréquence marginale pour un i : fi. = ni. / nIJ

fréquence marginale pour un j : f.j= n.j / nIJ

excellent good mediocre boring n i .Cru_Bourgeois 45 126 24 5 200Grand_Cru_classé 87 93 19 1 200Vin_de_table 0 0 52 148 200Bordeaux_d_origine 36 68 74 22 200Vin_de_marque 0 30 111 59 200

n . j 168 317 280 235 1000

A partir du tableau des données = tableau des effectifs

Calcul du tableau des fréquences

fi1j1 fi1j2 f i 1 .

fi2j1 fi2j2 f i 2 .

f . j 1 f . j 2 1

excellent good mediocre boring f i .Cru_Bourgeois 0,045 0,126 0,024 0,005 0,2Grand_Cru_classé 0,087 0,093 0,019 0,001 0,2Vin_de_table 0,000 0,000 0,052 0,148 0,2Bordeaux_d_origine 0,036 0,068 0,074 0,022 0,2Vin_de_marque 0,000 0,030 0,111 0,059 0,2

f . j 0,168 0,317 0,280 0,235 1

bordeaux / sum(bordeaux)

fij = nij / nIJ

ni1j1 ni1j2 n i1 .

ni2j1 ni2j2 n i2 .

n. j 1 n. j 2 n I J

bordeauxn.j <- colSums(bordeaux)ni. <- rowSums(bordeaux)nIJ <- sum(bordeaux)

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique

profils

coordonnéesfactorielles

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique 2du métrique

profils

coordonnéesfactorielles

Analyse Factorielle des CorrespondancesCalcul des tableaux intermédiaires (1/2)

1 - tableau des fréquences

Page 12: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

f i1j1 f i1

j2

f i2j1 f i2

j2

1 1

excellent good mediocre boringCru_Bourgeois 0,225 0,630 0,120 0,025 1Grand_Cru_classé 0,435 0,465 0,095 0,005 1Vin_de_table 0,000 0,000 0,260 0,740 1Bordeaux_d_origine 0,180 0,340 0,370 0,110 1Vin_de_marque 0,000 0,150 0,555 0,295 1

fiJ = { fij ; jJ} avec fij = fij / fi. et fi. 0

soit fi

j = nij / ni. et ni. 0

ou tableaux des fréquences conditionnelles

• des colonnes = profils des jfjI = { fji ; iI} avec fj

i = fij / f.j et f.j 0

soit fji = nij / n.j et n.j 0

df <- bordeaux / sum(bordeaux)row.w <- rowSums( df) profil.i <- df/row.wcbind(profil.i,rowSums( profil.i))

f i1

j1f i1

j21

f i2

j1f i2

j21

df <- bordeaux / sum(bordeaux)col.w <- colSums(df)profil.j <- t(t(df)/col.w)rbind(profil.j,colSums( profil.j))

• des lignes = profils des i

Cru_Bourgeois 0,268 0,398 0,086 0,021Grand_Cru_classé 0,518 0,293 0,068 0,004Vin_de_table 0,000 0,000 0,186 0,630Bordeaux_d_origine 0,095 0,215 0,264 0,094Vin_de_marque 0,000 0,095 0,396 0,251

1 1 1 1

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique

profils

coordonnéesfactorielles

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique 2du métrique

profils

coordonnéesfactorielles

Analyse Factorielle des CorrespondancesCalcul des tableaux intermédiaires (1/2)

2 - tableaux des profils

Page 13: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

Principe de l’équivalence distributionnelle (1/3)

Le principe : si deux points i et i’ ont le même profil (confondus) et si on les regroupe un seul point i’’ dont les ni’’j = nij + ni’j, les distances entre les points i sont inchangées .

Il en est de même des points j dans l’espace des n individus.

# tableaux des données avec i et i’ # tableaux des données avec i" (regroupement de i et i’)

t2 <- rbind(bordeaux[1,]*10, bordeaux) t1 <- rbind( t2[1,] + t2[2,], t2[3:6,])

> t2excellent good mediocre boring

Cru_Bourgeois 450 1260 240 50Cru_Bourgeois1 45 126 24 5Grand_Cru_classé 87 93 19 1Vin_de_table 0 0 52 148Bordeaux_d_origine 36 68 74 22Vin_de_marque 0 30 111 59

i

i’ > t1excellent good mediocre boring

Cru_Bourgeois 495 1386 264 55Grand_Cru_classé 87 93 19 1Vin_de_table 0 0 52 148Bordeaux_d_origine 36 68 74 22Vin_de_marque 0 30 111 59

i’’

i’’i’

Les conditions du principe

i, i' i''+

Page 14: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Vérification que les points lignes i, i’, i’’ ont le même profil

# Ecriture d’une fonction pour le calcul des profils lignes

profili(bordeaux)excellent good mediocre boring rowSums(p.i)

Cru_Bourgeois 0.225 0.630 0.120 0.025 1Grand_Cru_classé 0.435 0.465 0.095 0.005 1Vin_de_table 0.000 0.000 0.260 0.740 1Bordeaux_d_origine 0.180 0.340 0.370 0.110 1Vin_de_marque 0.000 0.150 0.555 0.295 1

profili(t2)excellent good mediocre boring rowSums(p.i)

Cru_Bourgeois 0.225 0.630 0.120 0.025 1Cru_Bourgeois1 0.225 0.630 0.120 0.025 1Grand_Cru_classé 0.435 0.465 0.095 0.005 1Vin_de_table 0.000 0.000 0.260 0.740 1Bordeaux_d_origine 0.180 0.340 0.370 0.110 1Vin_de_marque 0.000 0.150 0.555 0.295 1

profili(t1)excellent good mediocre boring rowSums(p.i)

Cru_Bourgeois 0.225 0.630 0.120 0.025 1Grand_Cru_classé 0.435 0.465 0.095 0.005 1Vin_de_table 0.000 0.000 0.260 0.740 1Bordeaux_d_origine 0.180 0.340 0.370 0.110 1Vin_de_marque 0.000 0.150 0.555 0.295 1

profili <- function(df) {

p.i <- df / rowSums( df)

cbind(p.i, rowSums(p.i)) }

i

i’

i’’

i

Analyse Factorielle des Correspondances

Principe de l’équivalence distributionnelle (2/3)

Page 15: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Vérification graphique du principe

d = 1

excellentgood

mediocreboring

Cru_BourgeoisCru_Bourgeois1

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origineVin_de_marque

Rows

Columns

d = 1

excellentgood

mediocreboring

Cru_BourgeoisGrand_Cru_classé

Vin_de_table

Bordeaux_d_origineVin_de_marque

Rows

Columns

i

i’

i’’

par(mfrow=c(2,1))score (dudi.coa (t2, scannf=F))score (dudi.coa (t1, scannf=F))par(mfrow=c(1,1))

dudi.coa (t2, scannf=F)$li

Axis1 Axis2Cru_Bourgeois -0.2926881 0.04688171Cru_Bourgeois1 -0.2926881 0.04688171Grand_Cru_classé -0.3991920 0.12413410Vin_de_table 2.2147901 0.49885003Bordeaux_d_origine 0.2853378 -0.44331555Vin_de_marque 1.1186333 -0.69536740

dudi.coa (t1, scannf=F)$li

Axis1 Axis2Cru_Bourgeois -0.2926881 -0.04688171Grand_Cru_classé -0.3991920 -0.12413410Vin_de_table 2.2147901 -0.49885003Bordeaux_d_origine 0.2853378 0.44331555Vin_de_marque 1.1186333 0.69536740

Analyse Factorielle des Correspondances

Principe de l’équivalence distributionnelle (3/3)

Page 16: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

d = 1

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

excellent

good

mediocre

boring

d = 1

Cru_Bourgeois

Cru_Bourgeois1 Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

excellent good

mediocre

boring

d = 1

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque excellent

good

mediocre

boring

Traitement de t1 et t2 avec l'ACP

i

i’’

par(mfrow=c(2,2))plot.new()scatter (dudi.pca (bordeaux, scannf=F))scatter (dudi.pca (t2, scannf=F))scatter( dudi.pca (t1, scannf=F))par(mfrow=c(1,1))

i

i’

bordeaux

t2 t1

dudi.pca (t2,scannf=F)$liAxis1 Axis2

Cru_Bourgeois -3.731748 -0.085358Cru_Bourgeois1 0.847585 0.934466Grand_Cru_classé 0.772267 1.052014Vin_de_table 1.010357 -1.980904Bordeaux_d_origine 0.591455 0.463464Vin_de_marque 0.510082 -0.383682

dudi.pca (t1,scannf=F)$liAxis1 Axis2

Cru_Bourgeois -3.369709 -0.156047Grand_Cru_classé 0.848453 1.240747Vin_de_table 1.175680 -1.725019Bordeaux_d_origine 0.696214 0.719769Vin_de_marque 0.649362 -0.079449

Analyse Factorielle des CorrespondancesComparaison avec l'ACP

Page 17: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

Métrique du Khi2 (1/2)

-0.1 0.0 0.1 0.2 0.3 0.4 0.5

0.0

0.1

0.2

0.3

0.4

0.5

0.6

excellent

good

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

Exemple :Soit le plan formé par les variables ‘excellent’ et ‘good’’et les 5 points i de coordonnées f ij

excellent goodCru_Bourgeois 0.225 0.630Grand_Cru_classé 0.435 0.465Vin_de_table 0.000 0.000Bordeaux_d_origine 0.180 0.340Vin_de_marque 0.000 0.150plot (range(profil.i[,1])+ c(-.1,.1), range(profil.i[,2]), type="n",xlab=colnames(profil.i)[1],ylab=colnames(profil.i)[2])

text (profil.i[,1:2], labels = rownames(profil.i))

Calcul de la distance entre Vin de table et Grand cru classé

x <- profil.i[2:3,1] # abscisses des 2 vinsy <- profil.i[2:3,2] # ordonnées des 2 vinspoints (x,y,col=2, pch=19, cex=2)lines (x, y, col=2)segments (x[1], 0, x[2], 0, lty=2)segments (x[1], y[1], x[1], y[2], lty=2)

d2 <- (x[1] - x[2])^2 + (y[1] - y[2])^2

D <- sqrt(d2)

La fonction dist() permet de calculer cette distance :dist (profil.i[2:3,1:2])

Jj

jiij xxiiD 2')',(Rappel sur la distance euclidienne :

ou D2(i , i’) = (xij – xi’j)2 | jJ

Page 18: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

Métrique du Khi2 (2/2)

Soit D la distance euclidienne entre i et i’ caractérisés par leurs profils f iJ et f i’J :

D2(i , i’) = j (f ij – f i’j)2 | jJ

Le principe est réalisé si j = 1/ f.j on a ainsi :

D2(i , i’) = (f ij – f i’j)2 / f.j | jJ

Cette distance est appelée distance du Khi 2 entre lois conditionnelles de centre fJou distance distributionnelle entre i et i’

On démontrerait de même que la distance euclidienne entre deux colonnes j et j’ ayant comme profils f jI et f j’I doit satisfaire à un i = 1 / fi.

(rappel f ij = fij / fi.)

Dans l’espace des p variables, les n points i ont pour coordonnées les f ij et comme masse fi.

Et la distance au centre du nuage : ρ2(i) = (f ij – f.j)2 / f.j | jJ

C'est le choix de la métrique du Khi2 qui permet le principe de l’équivalence distributionnelle

Page 19: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse du nuage I

Recherche des composantes principales du nuage de points ayant pour coordonnées : f ij / √f.j

Terme général 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)

nIJ * yij2

nIJ * trace de TComme pour l’ACP :

- diagonalisation de T - extraction des valeurs propres : variance de chacun des axes

vecteurs propres : permettent de calculer les équations des axes

Différences avec l ’ACP :

- yij symétrique en i et j rôle symétrique des lignes et des colonnes

- nombre de valeurs propres = minimum (n, p) – 1 minimum de (n-1, p-1) axesT admet au moins une valeur propre nulle (0)

Calcul 2 : simplification possible de yij = fij / (fi.* f.j) ici 1ère valeur propre 0 = 1 (premier vecteur propre v0 = (f½.1, f½.2,..)

Analyse Factorielle des Correspondances

La matrice des covariances

fréquence observée

fréquence théorique

k

i i

ii

EEO

1

22

= 2 de nij à (n-1)(p-1) ddl

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique

profils

coordonnéesfactorielles

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique 2du métrique

profils

coordonnéesfactorielles

Page 20: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

2 ème principe : Principe barycentrique (1/2)

Calcul des projections (coordonnées) des points (lignes & colonnes)sur les axes factoriels

avec f ij = fij / fi. (f iJ = profil de i) et vj= composante du ème vecteur propre

Coordonnées des points i

afc$li

Axis1 Axis2Cru_Bourgeois -0.7134347 -0.06256333

Grand_Cru_classé -0.8461787 -0.26380501

Vin_de_table 1.1821197 -0.41671099

Bordeaux_d_origine -0.1713729 0.25423507

Vin_de_marque 0.5488665 0.48884427

Le principe : tout point i se trouve au pseudo-barycentre des coordonnées des points jaffectés des masses qui sont les composantes du profil fij et inversement

Plus le poids du point i (fi.) est faible plus il est éloigné de l’origine

Rappel fij = fij / fi.

ou fij = nij / ni.

Formules de transition : passage de l’espace I à l’espace J et inversement

Fi = -1/2 j=1, p (f i

j) *Gj et Gj = -1/2 i=1, n (f j

i ) *Fi

De même, les coordonnées des points j sur les axes factoriels : Gj = i=1,n (f ji /√f.i) * ui

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique

profils

coordonnéesfactorielles

Données"brutes"

Tableau desfréquences

matricevar/covar

Diagonalisation

valeurspropres

vecteurspropres

2du métrique 2du métrique

profils

coordonnéesfactoriellesFi = j=1, p (fi

j /√f.j) * vj

Page 21: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

Principe barycentrique (2/2)

Reconstitution des données

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 décompose en :

nij = (ni. * n.j)) / nIJ correspond à l’hypothèse d’indépendance des variables (cf. test du Khi2).(se vérifie si toutes les lignes ont le même profil).

et

1 F1 (i)*G1 (j) + 2 F2 (i)*G2(j) + ... représente donc l’écart du rapport à cette indépendance.

Ainsi l’AFC revient à l’étude de l’écart à l’indépendance

Page 22: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Histogramme des valeurs propres

afc <- dudi.coa (bordeaux) # paramètre scannf = TRUE par défaut

Select the number of axes: 3

# identique à :afc <- dudi.coa (bordeaux, scannf = FALSE, nf = 3)

Analyse Factorielle des Correspondancesexemple 1 : l'analyse des résultats (1/5)

names (afc)[1] "tab" "cw" "lw" "eig" "rank" "nf" "c1" "l1" "co" "li" "call" "N"

Affiche

Nombre d’axes factoriels sélectionnés

afc$eig # valeurs propres ( variances)[1] 0.59060749 0.11015190 0.03108562

Page 23: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Un objet de la classe dudi est une liste qui comprend : le triplet (X, Q, D) sur lequel repose le schéma de dualitétab : un data frame avec n lignes et p colonnes (X) considéré comme p points de Rn (vecteurs colonnes) ou n points de Rp

(vecteurs lignes)cw : les poids des colonnes, vecteur à p composantes (Q), matrice diagonale de dimension p× p utilisée comme produit

scalaire dans Rp

lw : les poids des lignes, vecteurs à n composantes (D), matrice diagonale de dimension n× n utilisée comme produit scalaire dans Rn

puis les dérivés de la diagonalisation du schémaeig : les valeurs propres dans u vecteur d'au plus min (n,p) composantesnf : le nombre d'axes conservés (imposé ou introduit après jugement sur le graphe des valeurs propres)c1 : les axes principaux placés en colonnes dans un data frame avec p lignes et nf colonnes (CS veut dire Column Score,

appelés aussi loadings ou poids des variables)l1 : les composantes principales placées en colonnes dans un data frame avec n lignes et nf colonnes (RS veut Row Score,

appelé aussi coordonnée normalisée ou coordonnée de norme 1co : les coordonnées des colonnes placées dans un data frame avec p lignes et nf colonnes (chaque ligne de ce tableau

désigne une colonne du tableau de départ, chaque colonne est une composante principale, chaque valeur est une coordonnée de la projection de la colonne du tableau de départ sur une composante principale)

li : les coordonnées des lignes placées en colonnes dans un data frame avec n lignes et nf colonnes (chaque ligne de ce tableau désigne une ligne du tableau de départ, chaque colonne est un axe principal, chaque valeur est unecoordonnée de la projection de la ligne du tableau de départ sur un axe principal) appelées aussi scores de variance lambda, ou score normé à la valeur propre, ou coordonnée de variance lambda

http://pbil.univ-lyon1.fr/R/cours/stage3.pdf

La classe d'objets dudi de la librairie ade4

Page 24: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondancesexemple 1 : l'analyse des résultats (2/5)

> afc

Duality diagrammclass: coa dudi$call: dudi.coa(df = bordeaux) rappel des paramètres d’appel de la fonction

$nf: 3 axis-components saved au maximum valeur de $rank$rank: 3 minimum (n-1, p-1) soit minimum de (5-1, 4-1)eigen values: 0.5906 0.1102 0.03109 avec = 1 à minimum (n-1, p-1) vector length mode content

1 $cw 4 numeric column weights f.j , length = p2 $lw 5 numeric row weights fi. , length = n3 $eig 3 numeric eigen values avec = 1 à length, length = minimum (n-1, p-1)

data.frame nrow ncol content 1 $tab 5 4 modified array yij / (fi.* f.j) cf. calcul 1 de Y soit aussi fij / (fi.*f.j) – 1 2 $li 5 3 row coordinates coordonnées sur les axes ( = $l1 * √ )3 $l1 5 3 row normed scores composantes principales ( coordonnées normées à √ )4 $co 4 3 column coordinates coordonnées sur les axes ( = $c1 * √ )5 $c1 4 3 column normed scores composantes principales ( coordonnées normées à √ )

other elements: N somme de toutes les valeurs du tableau initial ( nIJ )

Plus concrètement

Page 25: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

1 ère contribution : contribution du point à l’inertie de l'axe

Mise en évidence des points (lignes et colonnes) importants pour l'axe

Analyse Factorielle des Correspondances

exemple 1 : l'analyse des résultats (3/5)

Informations sur le rôle des variables lignes et colonnes : les contributions

(contri <- inertia.dudi(afc, col=TRUE, row =TRUE) )

Analyse des valeurs propres (inertie)$TOT

inertia cum ratio

1 0.59060749 0.5906075 0.8070117 inertia : variance de l'axe2 0.11015190 0.7007594 0.9575243 cum : variance cumulée3 0.03108562 0.7318450 1.0000000 ratio : % de la variance cumulée par rapport à la variance totale

$row.absAxis1 Axis2 Axis3

Cru_Bourgeois 1724 71 6085Grand_Cru_classé 2425 1264 3549Vin_de_table 4732 3153 38Bordeaux_d_origine 99 1174 253Vin_de_marque 1020 4339 75

Contribution dite absolue (notée aussi CTR)exprimée ici en pour 10 000 de l'inertie de l'axe

Calcul des contributions : la fonction inertia.dudi()

Page 26: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

2 ème contribution : corrélation entre axes et points (cosinus carrés)dite relative (notée aussi COR) car contribution relative de l'axe à l'inertie totale du pointexprimée ici en pour 10 000

mesure la qualité de la représentation du point sur un axepour mettre en évidence les axes importants pour le point

$row.rel Axis1 Axis2 Axis3 con.tra

Cru_Bourgeois -8379 -64 -1557 1660Grand_Cru_classé -8516 -828 656 2298Vin_de_table 8891 -1105 -4 4295Bordeaux_d_origine -2999 6599 402 268Vin_de_marque 5564 4414 21 1480

$row.cumAxis1 Axis2 Axis3 remain

Cru_Bourgeois 8379 8443 10000 0Grand_Cru_classé 8516 9344 10000 0Vin_de_table 8891 9996 10000 0Bordeaux_d_origine 2999 9598 10000 0Vin_de_marque 5564 9979 10000 0

cos2 β * 10 000 signé (signe de Fi)

Inertie totale du point / inertie totaleexprimée en pour 10 000

Qualité de la représentation dans le repèredes axes demandés (nf)= (cos2 β1 + cos2 β2 +...+ cos2 βnf ) * 10000

Analyse Factorielle des Correspondances

exemple 1 : l'analyse des résultats (4/5)

représentation non exprimée par les nf axes= somme des cos2 β pour les axes nf+1 à afc$rank= 10000 - (cos2 β1 + cos2 β2 +...+ cos2 βnf ) * 10000

β

O

A

FAcos β = OFA / OA

Projection plus ou moins déformante selon l’angle des points / axe

Page 27: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances

exemple 1 : l'analyse des résultats (5/5)

Utilisation des contributions pour l'interprétation des cartes factorielles

-1.0 -0.5 0.0 0.5 1.0

-0.4

-0.2

0.0

0.2

0.4

AFC bordeaux

axe 1 (80.7 %)

axe

2 (1

5.1

%) Cru_Bourgeois

Grand_Cru_classe

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

excellent

good

mediocre

boringF1 abs rel F2 abs rel

Cru_Bourgeois -0.713 1724 -8379 0.063 71 64Grand_Cru_classe -0.846 2425 -8516 0.264 1264 828Vin_de_table 1.182 4732 8891 0.417 3153 1105Bordeaux_d_origine -0.171 99 -2999 -0.254 1174 -6599Vin_de_marque 0.549 1020 5564 -0.489 4339 -4414

excellent -0.867 2136 -8083 0.298 1354 955good -0.672 2426 -9127 0.004 1 0mediocre 0.356 599 3443 -0.483 5932 -6355boring 1.103 4838 9044 0.357 2713 946

Axe 1 Axe 2

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]))]=5cI[which.max(I[,5]*sign(I[,4]))]=3cI[which.min(I[,2]*sign(I[,1]))]=4cI[which.min(I[,5]*sign(I[,4]))]=2J <- 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]))]=5cJ[which.max(J[,5]*sign(J[,4]))]=3cJ[which.min(J[,2]*sign(J[,1]))]=4cJ[which.min(J[,5]*sign(J[,4]))]=2contri$TOT <- cbind(contri$TOT,round(contri$TOT[,1]/sum(contri$TOT[,1])*100,1))names(contri$TOT)[4] <- "i%"ax <- paste("axe 1 (",contri$TOT[1,4]," %)",sep="")ay <- paste("axe 2 (",contri$TOT[2,4]," %)",sep="")plot(range(afc$li[,1],afc$co[,1])+c(-.2,.2),range(afc$li[,2],afc$co[,2])+c(-.03,.0),type="n", main= "AFC bordeaux", xlab=ax, ylab=ay)text(afc$li[,1:2],labels=rownames(afc$li),col=cI,pos=1,offset = 0.2)text(afc$co[,1:2],labels=rownames(afc$co),col=cJ)abline(v=0,h=0)

PrincipeNe prendre en compte que les points dont la contribution > contribution moyenne

contribution abs. moy = 10000 * 1 / nb pointssoit pour l'axe 1 :

- pour les vins : 10000 / 5 = 2000 - pour les qualificatifs : 10000 / 4 = 2500

contribution rel. moy = 10000 * 1 / nb de valeurs propres (axes)soit pour l'axe 1 : 10000 / 3 = 3333

Page 28: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des CorrespondancesAnalyse graphique (1/4)

par (mfrow= c(2,2))

Utilisation : des coordonnées : li, coscatter (afc) # graphe 1

scatter (afc, xax=1, yax=3) # graphe 2

des scores pour les colonnes : li, c1scatter (afc, met=2) # graphe 3

Points lignes aux barycentres des points colonnes

des scores pour les lignes : l1, coscatter (afc, met=3) # graphe 4

Points colonnes aux barycentres des points lignes

par (mfrow= c(1,1))

Fonction : scatter (dfxy, xax=1, yax=2, xlim, ylim, met=1, grid=TRUE)

d = 0.5

Cru_Bourgeois

rand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

excellent

good

mediocre

boring

d = 0.5

Cru_Bourgeois

rand_Cru_classé

Vin_de_table Bordeaux_d_origine Vin_de_marque

excellent

good

mediocre boring

d = 0.5

excellent

good

mediocre

boring

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

d = 0.5

Cru_Bourgeois

nd_Cru_classé

Vin_de_tabl

Bordeaux_d_origine

Vin_de_marque

excellent

good

mediocre

boring

1 2

3 4

fonction ade4 : scatter ()

1 - Les cartes factorielles

Page 29: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

d = 0.5

Bordeaux

Cru_Bourgeois

rand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

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)

fonction ade4 : s.label ()

s.label (afc$li, sub = "Bordeaux")s.label (afc$co, clabel = 0 , pch = 20,

cpoint = 2, add.plot = TRUE)

d = 0.5

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

excellent

good

mediocre

boring

colnames (afc$co) <- colnames(afc$li)s.label (rbind(afc$li, afc$co), clabel = 0.8)

Analyse Factorielle des CorrespondancesAnalyse graphique (2/4)

Page 30: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

-1.0 -0.5 0.0 0.5 1.0 1.5

-1.0

-0.5

0.0

0.5

1.0

1.5

AFC bordeaux

Axe 1

Axe

2

Cru_Bourgeois

rand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

excellent

good

mediocre

boring

plot (c(afc$l1[,1],afc$c1[,1]), c(afc$l1[,2],afc$c1[,2]), type="n", asp=1, main= "AFC bordeaux", xlab="Axe 1", ylab="Axe 2")

text (afc$l1[,1:2], labels=rownames(afc$l1), col=2) text (afc$c1[,1:2], labels=rownames(afc$c1), col=3)

abline (v=0, h=0)lines (afc$c1[,1:2], lty=2)

plot (c(afc$l1[,1],afc$c1[,1]),c(afc$l1[,3],afc$c1[,3]),type="n", asp=1,main= "AFC bordeaux", xlab="Axe 1", ylab="Axe 3")

text (afc$l1[,c(1,3)], labels=rownames(afc$l1), col=2)text (afc$c1[,c(1,3)], labels=rownames(afc$c1), col=3)abline (v=0, h=0)lines ( afc$c1[,c(1,3)], lty=2)

-1 0 1 2

-1.5

-1.0

-0.5

0.0

0.5

1.0

1.5

AFC bordeaux

Axe 1

Axe

3

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origineVin_de_marque

excellent

good

mediocre

boring

fonction plot ()

Utilisation des scores $l1 et $c1

Analyse Factorielle des CorrespondancesAnalyse graphique (3/4)

Aussi : points ()

Page 31: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

score(afc)

afc$l1RS1

Cru_Bourgeois -0.9283350Grand_Cru_classé -1.1010641Vin_de_table 1.5381971Bordeaux_d_origine -0.2229937 Vin_de_marque 0.7141957

afc$c1 CS1 excellent -1.1276880good -0.8747596mediocre 0.4626773 boring 1.4348968

- +axe 1

d = 0.5

excellent

good

mediocre

boring

Cru_Bourgeois

Grand_Cru_classé

Vin_de_table

Bordeaux_d_origine

Vin_de_marque

Rows

Columns

-1,5 +1,5

row scores

Les 17 nij ≠0

fonction ade4 : score ()

2 - Représentation sur un axe

Analyse Factorielle des CorrespondancesAnalyse graphique (4/4)

Page 32: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondancesexemple 2 : analyse d'un tableau de dénombrements (1/5)

library (ade4)

data (santacatalina)

santacatalina # Densité à l’hectare de 11 sp d’arbres selon un gradient d’humidité du sol

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10

Pinus.ponderosa 36 646 472 212 48 4 4 0 0 0Quecus.hypoleucoides 4 450 670 820 1304 724 248 106 124 22 Pinus.cembroides 0 0 0 6 26 58 186 322 156 242Arctostaphylos.pringlei 0 0 0 12 42 268 108 308 438 68Quercus.arizonaca 0 94 18 36 218 186 74 226 50 38Quercus.rugosa 252 136 170 22 50 24 32 20 36 22Garrya.wrightii 0 0 0 8 28 0 26 232 18 20Pseudostuga.menziesii 88 156 28 0 0 0 0 0 0 0Quercus.emoryi 0 0 0 0 0 26 0 36 28 152Pinus.chihuahuana 0 2 2 6 84 86 0 0 0 0Arbutus.arizonaca 0 4 16 54 34 16 0 0 0 0

coa <- dudi.coa (santacatalina, scannf=FALSE)

Page 33: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondancesexemple 2 : analyse d'un tableau de dénombrements (2/5)

Nombre d'axes à retenir

Contributionsinercoa <- inertia.dudi (coa,row=TRUE, col=TRUE)

barplot (coa$eig, names.arg= 1: coa$rank, main= "Eboulement des valeurs propres")

1 2 3 4 5 6 7 8 9

Eboulement des valeurs propres

0.0

0.1

0.2

0.3

0.4

0.5

0.6

coude

coude

Méthode du coude : saut dans l'éboulement des valeurs propresRetenir les valeurs propres > moyenne les valeurs propres

mean (coa$eig) # 0.1544286utilisé dans l'AFCM

coa$eig[1] 0.6045948913 0.3440317070 0.1627327315 0.1300140906 0.0894258099

0.0342412610 0.0157494017 0.0081980480 0.0008699014

ax = 1 # choix de l'axewhich(inercoa$row.abs[,ax]> 10000/nrow(inercoa$col.abs)) # % inertie

Pinus.ponderosa Pinus.cembroides Arctostaphylos.pringleiwhich(abs(inercoa$row.rel[,ax])> 10000/coa$rank) # cos2

Pinus.ponderosa Quecus.hypoleucoides Pinus.cembroides Arctostaphylos.pringlei Quercus.arizonacaQuercus.rugosa Garrya.wrightii Pseudostuga.menziesii Quercus.emoryi Arbutus.arizonaca

which(inercoa$col.abs[,ax]> 10000/nrow(inercoa$col.abs)) # % inertiev2 v3 v8 v9 v10

which(abs(inercoa$col.rel[,ax])> 10000/coa$rank) # cos2v1 v2 v3 v4 v7 v8 v9 v10

Page 34: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

d = 0.5

Pinus.ponderosa

Quecus.hypoleucoides

nus.cembroides rctostaphylos.pringlei

Quercus.arizonaca

Quercus.rugosa

Garrya.wrightii

Pseudostuga.menziesii

rcus.emoryi

Pinus.chihuahuana Arbutus.arizonaca

d = 0.5

v1

v2

v3

v4 v5 v6

v7 v8 v9

v10

Analyse Factorielle des Correspondances (exemple 2) (3/5)

d = 0.5

Pinus.ponderosa

Quecus.hypoleucoides

Pinus.cembroides

Arctostaphylos.pringlei

Quercus.arizonaca

Quercus.rugosa

Garrya.wrightii

Pseudostuga.menziesii

Quercus.emoryi

Pinus.chihuahuana

Arbutus.arizonaca

v1

v2

v3

v4 v5

v6

v7

v8 v9

v10

scatter (coa)for (i in 1:9) arrows (coa$co[i,1],coa$co[i,2],

coa$co[i+1,1],coa$co[i+1,2], col=2, length=.1)

par(mfrow = c(1,2))s.label(coa$li, lab = rownames(coa$li)) #1s.label(coa$co, lab = rownames(coa$co)) #2

1 2

Page 35: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances (exemple 2) (4/5)

score (coa)

d = 1

v1v2

v3v4

v5v6

v7

v8v9

v10

Pinus.ponderosa

Quecus.hypoleucoides

Pinus.cembroides

Arctostaphylos.pringleiQuercus.arizonaca

Quercus.rugosa

Garrya.wrightii

Pseudostuga.menziesii

Quercus.emoryi

Pinus.chihuahuana

Arbutus.arizonaca

Rows

Columns

g <- t ( santacatalina[order (coa$li[,1]),] )# tri des espèces suivant F1 et transpositionpar (mfrow=c(3,4), mar=c(5,3,.5,1))palette (rainbow (ncol (g))) # choix des couleursfor (i in 1: ncol(g)) barplot (g[,i], xlab=colnames(g)[i], col=i)palette ("default")

Page 36: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances (exemple 2) (5/5)

Pinus.ponderosa

Quecus.hypoleucoides

Pinus.cembroides

Arctostaphylos.pringlei

Quercus.arizonaca

Quercus.rugosa

Garrya.wrightii

Pseudostuga.menziesii

Quercus.emoryi

Pinus.chihuahuana

Arbutus.arizonaca

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10

250 750 1250

Quercus.emoryi

Pinus.cembroides

Garrya.wrightii

Arctostaphylos.pringlei

Quercus.arizonaca

Pinus.chihuahuana

Quecus.hypoleucoides

Arbutus.arizonaca

Quercus.rugosa

Pinus.ponderosa

Pseudostuga.menziesii

v10

v8 v9 v7 v6 v5 v4 v3 v2 v1

250 750 1250

par(mfrow=c(1,2))table.value (santacatalina, grid=TRUE) # 1 Tableau des donnéestable.value (santacatalina[order(coa$li[,1]), order(coa$co[,1])], grid=TRUE) # 2par(mfrow=c(1,1))

1 2

Tableau "diagonalisé"

Tri suivant F1 Tri suivant F1

Page 37: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondancesexemple 3 : tableau de mesures (variables quantitatives)

names(afcrab$co) <- names(afcrab$li)plot (rbind(afcrab$li[,1:2], afcrab$co[,1:2]), type="n")abline (v=0, h=0)text (afcrab$co[,1:2], labels=rownames(afcrab$co), cex=1.2)text (afcrab$li[,1:2],cex=.6, labels=gr, col=as.numeric(gr))

library (ade4)library (MASS)data (crabs)gr <- as.factor (paste(crabs[,1], crabs[,2], sep=""))

-0.06 -0.04 -0.02 0.00 0.02 0.04 0.06 0.08

-0.0

4-0

.02

0.00

0.02

0.04

Axis1

Axi

s2

FL

RW

CL

CW

BD

BM

BM

BM

BM

BMBM BM

BM BM

BM

BM

BM

BM

BM

BM

BM

BMBM

BM

BM

BM

BMBM

BMBM

BM

BM

BM

BMBM

BM

BMBMBM

BM

BMBMBM

BM

BMBM

BM

BM

BM

BMBM

BM

BM

BM

BM

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BFBF

BF

BF

BFBF

BFBF

BF

BF

BF

BFBF

BFBF

BF

BFBF

BFBF

BFBF

BF

BF

BF

BFBFBF

OM

OM

OM

OM

OM

OM

OM

OM

OMOM

OM

OM

OMOMOM

OM

OM

OM

OMOM

OMOM

OMOM

OM

OMOM

OMOM

OM

OM

OM

OM

OMOM

OMOM

OM

OM

OMOM

OMOM

OMOM

OM

OM

OMOM

OM

OF

OF

OFOF

OFOF

OF

OF

OF

OF

OF

OF

OF

OF

OF

OFOF

OF

OFOF

OF

OF OFOF OF

OF

OFOF

OF

OF

OF

OF

OF

OFOF

OFOF

OF

OF

OF

OF

OF

OFOF

OF

OFOFOF

OF

OF

afcrab <- dudi.coa (crabs[, 4:8], scannf=FALSE)

Page 38: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des CorrespondancesEléments supplémentaires (1/5)

Eléments supplémentaires = illustratifs

Éléments qui peuvent être ajoutés aux données initiales sans intervenirdans le calcul des axes factoriels (leur contribution est nulle)

(rappel : Fi = -1/2 j=1,p (f ij) Gj )

Principales utilisations : ajouter de nouvelles lignes (ou colonnes) à l’analyse :

• introduire des variables pour aider à l ’interprétation des axes• traiter des données manquantes (individus et/ou variables)• permet de comparer des résultats d’origine différente

éliminer des lignes (ou colonnes) qui par leur forte contribution sur un axe « masquent » plus ou moins les correspondances entre les autres éléments de l’analyse (étirement excessif des axes)

Page 39: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des CorrespondancesEléments supplémentaires (2/5)

Exemple : ajout à crabs [,4:8] des points moyens des couples espèce-sexe en lignes supplémentaires des variables "sp" et "sex" en colonnes supplémentaires

mgr <- aggregate (crabs[,4:8], by=list(gr), mean)rownames(mgr)<- mgr[,1]mgr[,2:6]

tableau binaire disjonctif desfacteurs sp et sex

vdis <- acm.disjonctif (crabs[,1:2])

FL RW CL CW BD1 8.1 6.7 16.1 19.0 7.02 8.8 7.7 18.1 20.8 7.43 9.2 7.8 19.0 22.4 7.74 9.6 7.9 20.1 23.1 8.25 9.8 8.0 20.3 23.0 8.2. . .195 21.3 18.4 43.8 48.4 20.0196 21.4 18.0 41.2 46.2 18.7197 21.7 17.1 41.7 47.2 19.6198 21.9 17.2 42.6 47.4 19.5199 22.5 17.2 43.0 48.7 19.8200 23.1 20.2 46.2 52.5 21.1

crabs [,4:8] sp.B sp.O sex.F sex.M1 1 0 0 12 1 0 0 13 1 0 0 14 1 0 0 15 1 0 0 1. . .195 0 1 1 0196 0 1 1 0197 0 1 1 0198 0 1 1 0199 0 1 1 0200 0 1 1 0

FL RW CL CW BDBF 13.3 12.1 28.1 32.6 11.8BM 14.8 11.7 32.0 36.8 13.3OF 17.6 14.8 34.6 39.0 15.6OM 16.6 12.3 33.7 37.2 15.3

points moyensEspèce*Sexe

colonnes supplémentaires

lignessupplémentaires

Page 40: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

plot (rbind (afcrab$li[,1:2], afcrab$co[,1:2]), type="n")abline (v=0, h=0)text (afcrab$co[,1:2], labels=rownames(afcrab$co), cex=1)points (afcrab$li[,1:2], cex=.8, pch=20, col=as.numeric(gr))

# affichage des points supplémentairestext (smgr$lisup, cex=2, labels=mgr[,1], col=1:nrow(mgr))

Analyse Factorielle des CorrespondancesEléments supplémentaires : Points lignes (3/5)

Fonction suprow ()# calcul des coordonnées des points # lignes supplémentairessmgr <- suprow (afcrab, mgr[,-1])

names(casup)[1] "tabsup" "lisup"

# coordonnées des points supplémentairessmgr$lisup

Axis1 Axis2BF 0.03121187 -0.01649751BM -0.01838406 -0.02680493OF 0.01958921 0.02134331OM -0.02991233 0.01679338

# points moyens Espèce*Sexemgr <- aggregate(crabs[,4:8], by=list(gr),mean)rownames(mgr)<- mgr[,1]

-0.06 -0.04 -0.02 0.00 0.02 0.04 0.06 0.08

-0.0

4-0

.02

0.00

0.02

0.04

Axis1

Axi

s2

FL

RW

CL

CW

BD

BF

BM

OFOM

Page 41: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

plot (rbind (afcrab$li, afcrab$co, csup$cosup), type="n")abline (v=0, h=0)points (afcrab$li, cex=.5, pch=20, col=as.numeric(gr))text (afcrab$co, labels=rownames(afcrab$co), cex=.6)

# affichage des points supplémentairestext (csup$cosup, labels=rownames(csup$cosup))

Analyse Factorielle des CorrespondancesEléments supplémentaires : Points colonnes (4/5)

Fonction supcol ()# calcul des coordonnées des points # colonnes supplémentairescsup <- supcol (afcrab, vdis)

names(csup)[1] "tabsup" "cosup"

# coordonnées des points supplémentairescsup$cosup

Axis1 Axis2sp.B 0.2997822 -0.9723478sp.O -0.1045915 0.8863265sex.F 0.8904758 0.1020459sex.M -0.6952851 -0.1880672

# tableau binaire disjonctif des facteurs sp & sexvdis <- acm.disjonctif(crabs[,1:2])

colnames de co

rappel : Gj= -1/2 i=1,n (f ji) Fi

avec : -1/2 *Fi = RS ou Row Score (l1)

et f ji = tableau des profils des colonnes supplémentaires

-0.5 0.0 0.5

-1.0

-0.5

0.0

0.5

Axis1

Axi

s2

FLRWCLCW

BD

sp.B

sp.O

sex.F

sex.M

Page 42: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

head (sweep(crabs[,4:8], 2, colSums(crabs[,4:8]), "/"))FL RW CL CW BD

1 0.002598986 0.002629823 0.002507359 0.002608851 0.002494565

2 0.002823590 0.003022334 0.002818832 0.002856005 0.002637112

3 0.002951935 0.003061585 0.002958995 0.003075698 0.002744022

4 0.003080280 0.003100836 0.003130305 0.003171813 0.002922205

5 0.003144452 0.003140087 0.003161452 0.003158083 0.002922205

6 0.003465315 0.003532598 0.003581941 0.003638660 0.003492392

colSums (sweep(crabs[,4:8], 2, colSums(crabs[,4:8]), "/"))FL RW CL CW BD

1 1 1 1 1

head (csup$tabsup)sp.B sp.O sex.F sex.M

1 0.01 0 0 0.01

2 0.01 0 0 0.01

3 0.01 0 0 0.01

4 0.01 0 0 0.01

5 0.01 0 0 0.01

6 0.01 0 0 0.01

colSums (csup$tabsup)sp.B sp.O sex.F sex.M

1 1 1 1

Comparaison des profils colonnes

variable sp variable sex

names(afcrab$c1) <- names(afcrab$l1) <- names(afcrab$li)plot (rbind (afcrab$l1[,1:2], afcrab$c1[,1:2], csup$cosup[,1:2]), type="n")abline (v=0, h=0)text (afcrab$l1[,1:2], cex=.5, labels=gr, col=as.numeric(gr))text (afcrab$c1[,1:2], labels=rownames(afcrab$co), cex=.6)text (csup$cosup[,1:2], labels=rownames(csup$cosup), font=2, col=6)

-2 -1 0 1 2

-2-1

01

Axis1

Axi

s2

BM

BM

BM

BM

BMBM BM

BM BM

BM

BM

BM

BM

BM

BM

BM

BM

BM

BM

BM

BM

BMBM

BMBM

BM

BM

BM

BMBM

BM

BMBMBM

BM

BMBM

BM

BM

BMBM

BM

BM

BM

BMBM

BM

BM

BM

BM

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BF

BFBF

BF

BF

BFBF

BFBF

BF

BF

BF

BFBF

BFBF

BF

BFBF

BFBF

BFBF

BF

BF

BF

BFBFBF

OM

OM

OM

OM

OM

OM

OM

OM

OMOM

OM

OM

OMOMOM

OM

OM

OM

OM

OM

OMOM

OMOM

OM

OMOM

OMOM

OM

OM

OM

OM

OMOM

OMOM

OM

OM

OMOM

OMOM

OMOM

OM

OM

OMOM

OM

OF

OF

OFOF

OFOF

OF

OF

OF

OF

OF

OF

OF

OF

OF

OFOF

OF

OFOF

OF

OF OFOF OF

OF

OFOF

OF

OF

OF

OF

OF

OFOF

OFOF

OF

OF

OF

OF

OF

OFOF

OF

OFOFOF

OF

OF

FL

RW

CL

CW

BD

sp.B

sp.O

sex.Fsex.M

aggregate(afcrab$l1[,1:2],by=list(crabs[,1]),mean)Group.1 Axis1 Axis2

1 B 0.2997822 -0.97234782 O -0.1045915 0.8863265

aggregate(afcrab$l1[,1:2],by=list(crabs[,2]),mean)Group.1 Axis1 Axis2

1 F 0.8904758 0.10204592 M -0.6952851 -0.1880672

csup$cosupAxis1 Axis2

sp.B 0.2997822 -0.9723478

sp.O -0.1045915 0.8863265

sex.F 0.8904758 0.1020459

sex.M -0.6952851 -0.1880672

Placer ces modalités aux barycentres des points lignespar projection des scores des points lignes et coordonnées des colonnes supplémentaires

Vérification : calcul des scores moyens

Eléments supplémentairesRemarque sur l'utilisation de variables binaires disjonctivessupplémentaires dans une AFC simple (5/5)

fonction : supcol.coa ()

Page 43: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

data (ours)ur <- ours [, 1:8]

Analyse Factorielle des Correspondances MultiplesPrincipe

AFCMPour l’analyse d’un tableau dont les q variables (q>2) sont exprimées en modalités

Sous R : data.frame de facteurs

Exemple :data.frame': 38 obs. of 8 variables:$ altit : Factor w/ 3 levels "1","2","3": 2 1 3 3 3 3 2 1 2 2 ...$ deniv : Factor w/ 3 levels "1","2","3": 3 2 3 3 3 3 2 1 3 2 ...$ cloiso: Factor w/ 3 levels "1","2","3": 3 1 3 3 1 3 3 2 1 3 ...$ domain: Factor w/ 3 levels "1","2","3": 2 2 2 1 2 1 2 2 2 1 ...$ boise : Factor w/ 3 levels "1","2","3": 2 1 2 3 2 3 2 1 3 3 ...$ hetra : Factor w/ 3 levels "1","2","3": 3 1 2 3 3 3 1 1 2 3 ...$ favor : Factor w/ 3 levels "1","2","3": 3 2 3 3 2 3 2 3 3 2 ...$ inexp : Factor w/ 3 levels "1","2","3": 2 2 3 2 3 3 3 2 3 3 ...

Principe : faire une AFC simple du tableau binaire disjonctif

altit deniv cloiso domain boise hetra favor inexp1 2 3 3 2 2 3 3 22 1 2 1 2 1 1 2 23 3 3 3 2 2 2 3 34 3 3 3 1 3 3 3 25 3 3 1 2 2 3 2 36 3 3 3 1 3 3 3 3head (ur)

str (ur)

Numéro de la modalité"more than 70%"de la variable altit

Page 44: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances Multiples(exemple) (1/4)

dim(ur)[1] 38 8

acm <- dudi.acm (ur)Select the number of axes: 3

scatter.dudi (acm)

dim(acm$li)[1] 38 3dim(acm$co)[1] 24 3

rownames(acm$co)[1] "altit.1" "altit.2" "altit.3" "deniv.1"[5] "deniv.2" "deniv.3" "cloiso.1" "cloiso.2"[9] "cloiso.3" "domain.1" "domain.2" "domain.3"[13] "boise.1" "boise.2" "boise.3" "hetra.1"[17] "hetra.2" "hetra.3" "favor.1" "favor.2"[21] "favor.3" "inexp.1" "inexp.2" "inexp.3"

acm$eig[1][1] 0.4283099acm$rank[1] 16

d = 0.5

1

2

3

4

5

6

7

8

9

10 11 12

13

14

15

16

17

18

19

20 21

22

23

24

25

26

27

28

29

30

31 32 33

34 35

36

37

38

altit.1

altit.2

altit.3

deniv.1

deniv.2

deniv.3 cloiso.1

cloiso.2

cloiso.3

domain.1

domain.2

domain.3

boise.1

boise.2

boise.3 hetra.1

hetra.2

hetra.3

favor.1

favor.2

favor.3

inexp.1

inexp.2

inexp.3

Eigenvalues

inférieur à 23 attendu

8 variables

24 modalitésaprès la transformation binaire disjonctive des 8 variables

Page 45: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances Multiples(exemple) (2/4)

Interprétation des résultats en terme de variablesineracm <- inertia.dudi (acm, col=TRUE)

ax <- 1 # choix de l'axe 1cbind( CTRabsF1=ineracm$col.abs[, ax] )

CTRabsF1altit.1 836altit.2 2altit.3 583deniv.1 220deniv.2 28deniv.3 489cloiso.1 115cloiso.2 380cloiso.3 263domain.1 320domain.2 204domain.3 0boise.1 1006boise.2 25boise.3 1105hetra.1 896hetra.2 0hetra.3 1215favor.1 703favor.2 3favor.3 856inexp.1 334inexp.2 97inexp.3 319

modalités de la variable cloiso

i= which (ineracm$col.abs[, ax] > 10000/nrow(ineracm$col.abs))# sélection des valeurs > moyennesort (ineracm$col.abs[i, ax], dec=TRUE)

hetra.3 boise.3 boise.1 hetra.1 favor.3 altit.1 favor.1 altit.3 deniv.3 1215 1105 1006 896 856 836 703 583 489

Modalités contribuant le plus à l'axe 1

Contribution des variables à l'axe 1Group.1 x

1 altit 14212 boise 21363 cloiso 7584 deniv 7375 domain 5246 favor 15627 hetra 21118 inexp 750

gvar <- rep (colnames(ur), sapply(ur, nlevels))aggregate (ineracm$col.abs[, ax], by=list(factor(gvar)), FUN=sum)

Somme des contributions des modalités de chacune des variables

Utilisation des rapports de corrélationsCTR par variables ramenés entre 0 et 1acm$cr

RS1 RS2 RS3altit 0.4867906 0.1893131 0.3876253deniv 0.2528392 0.2325247 0.1260940cloiso 0.2598395 0.2724303 0.2356382domain 0.1796741 0.6002266 0.1483924boise 0.7317972 0.1429825 0.5564289hetra 0.7233694 0.4699515 0.1274654favor 0.5352790 0.0682467 0.1534055inexp 0.2568897 0.2505504 0.2658320

Page 46: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

altit

1

2

3

deniv

1 2

3

cloiso

1 2

3

domain

1

2

3

boise

1

2

3

hetra

1

2

3

favor

1 2

3

inexp

1 2

3

Analyse Factorielle des Correspondances Multiples(exemple) (3/4)

scatter (acm)boxplot.acm (acm, xax=1)

Représentations graphiques décrivant les variables

d = 1

altit

1

2

3

deniv

1

2

3

cloiso

1

2

3

domain

1

2

3

d = 1

boise

1

2

3

hetra

1

2

3

favor

1

2

3

inexp

1

2

3

Page 47: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

v = 6colnames (ur)[v] # "hetra"

names(acm$co) <- names(acm$li)plot (rbind(acm$li, acm$co)[,1:2], type="n", asp=1, main=colnames(ur)[v])abline (v=0, h=0)text (acm$co, labels=rownames(acm$co), cex=.8)text (acm$li, labels=rownames(acm$li), cex=.6, col=3)

s.chull (acm$li, fac=ur[,v], op=1, clabel=0, col=1:3, add.plot=TRUE)

Analyse Factorielle des Correspondances Multiples(exemple) (4/4)

d = 0.5

hetra

1

2

3

alt

altit.2

altit.3

deniv.1

deniv.2

deniv.3

cloiso.1cloiso

cloiso.3

domain.1

domain.2

bois

boise.2

boise.3hetra.1

hetra.3

favor.1

favor.2

favor.3

inexp.1

inexp.2

inexp.3

Représentations graphiquescaractérisant les points lignes (sites) par les modalités d'une variable initiale

s.class (acm$li, fac=ur[,v], clabel=1, col=1:3, sub=colnames(ur)[v])text (acm$co, labels=rownames(acm$co), cex=.8)

-1.0 -0.5 0.0 0.5 1.0

-0.5

0.0

0.5

1.0

1.5

hetra

Axis1

Axi

s2

altit.1

altit.2

altit.3

deniv.1

deniv.2

deniv.3

cloiso.1cloiso.2

cloiso.3domain.1

domain.2

domain.3

boise.1

boise.2

boise.3hetra.1

hetra.2

hetra.3

favor.1

favor.2

favor.3

inexp.1

inexp.2

inexp.3

1

2

3

4

5

6

7

8

9

10

1112

13

14

15

16

17

18

19

2021

22

23

24

25

26

27

28

29

30

31 3233

3435

36

37

38

variable affichée

choix de la variable

Page 48: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances Multiples

barplot (acm$eig, names.arg= 1:acm$rank, xlab="Axes", ylab="Inertie", main= "Eboulement des valeurs propres")

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Eboulement des valeurs propres

Axes

Iner

tie

0.0

0.1

0.2

0.3

0.4

inertia cum ratio1 0.428309854 0.4283099 0.21415492 0.278278207 0.7065881 0.35329403 0.250110212 0.9566983 0.47834914 0.188768008 1.1454663 0.5727331. . .13 0.028391037 1.9500283 0.975014114 0.026236575 1.9762649 0.988132415 0.016874373 1.9931392 0.996569616 0.006860761 2.0000000 1.0000000

Somme des valeurs propres= (nombre de modalités - nombre de variables) / nombre de variables

(nrow (acm$co) - ncol (ur)) / ncol(ur)[1] 2

ineracm$TOT [c(1:4, 13:16),]

Valeurs propres moyenne = 1/ nombre de variables 1/ncol(ur) # mean (ineracm$TOT [,1])[1] 0.125

Cas particulier de l'inertie dans l'AFCM

L'inertie totale ne dépend que du nombre de variables et de modalités.

L'inertie moyenne ne dépend que du nombre de variables.

Eviter :des nombres de modalités très dissemblables des modalités faiblement représentées (<5%)

Remède :Tenter des regroupements

Page 49: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Tableau de Burt = tableau de contingence multipleCalcul des tableaux de contingence entre les couples de variables qualitatives (facteurs)

urb <- acm.burt (ur, ur)

Analyse Factorielle des Correspondances MultiplesComparaison avec l'AFC du tableau de Burt

altit.1 altit.2 altit.3 deniv.1 deniv.2 deniv.3 cloiso.1 cloiso.2 cloiso.3altit.1 8 0 0 5 2 1 3 2 3altit.2 0 17 0 4 8 5 7 2 8altit.3 0 0 13 4 4 5 2 0 11deniv.1 5 4 4 13 0 0 6 1 6deniv.2 2 8 4 0 14 0 4 1 9deniv.3 1 5 5 0 0 11 2 2 7cloiso.1 3 7 2 6 4 2 12 0 0cloiso.2 2 2 0 1 1 2 0 4 0cloiso.3 3 8 11 6 9 7 0 0 22

dim(urb) # 24 24urb [1:9,1:9]

AFC simple du tableau de Burtacmb <- dudi.coa (urb, scannf=FALSE)

acmb$eig[1] # 0.1834493acm$eig[1]^2 # 0.1834493

Conclusions :L’AFC du tableau de Burt est équivalente à l’AFCM des variables qualitatives :– Les valeurs propres de l’AFCM sont égales à la racine carrée des valeurs propres trouvées par l’AFC du tableau

de Burt ;– La représentation des variables est la même (à un facteur multiplicatif près) ;– La représentation des individus de l’AFC est la même en les mettant en individus supplémentaires.

Page 50: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Principe : n’avoir qu’un tableau de variables qualitatives

Stratégie : découper en classes les variables quantitatives

Soit V l’ensemble des variables quantitatives. Chaque variable v est transformée en n variables qualitatives par découpage en n classes et chacune étant repérée par le numéro de la classe.

Deux choix à réaliser : 1. le nombre de classes 2. les bornes des classes

Deux stratégies : 1. avoir globalement le même nombre de classes par variable2. définir plutôt des classes d’effectifs égaux à des classes d’amplitude égale.

Deux fonctions : 1. cut () pour découper une variable continue en classes2. recode() pour regrouper des classes [librairie car]

Remarque : si variable avec NA, créer une classe NA regroupant les données manquantes

Traitement des tableaux ayant desvariables quantitatives et qualitatives (1/11)

Page 51: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Découpage en classes des variables quantitatives (continues) 1/2

fonction : cut ()

# Avec indication du nombre de classes : breaks = nombre de classesr1 <- cut (x, breaks = 4)table (r1)(2.68,3.76] (3.76,4.83] (4.83,5.9] (5.9,6.98]

8 36 43 13Paramètrelabels = NULL -> bornes (défaut)labels = FALSE -> n° des classes

x <- rnorm(100,5)range(x) # 2.689071 6.973328r <- hist (x)r$breaks # 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0r$counts # 1 5 13 16 20 19 17 4 5$equidist # TRUE

Exemple

( r1 <- cut (x, breaks = 4, labels = FALSE) )[1] 3 1 2 3 3 4 2 3 2 2 2 3 4 3 2 3 3 4 4 3 4 3 3 2 3 2 4 3 3 2 3 2 2 2 3 3 3 2 1 4 3 2 2 3 2 2 2 3 4 3 1 3

[53] 2 1 3 3 3 4 1 3 3 3 2 3 2 2 2 3 2 2 2 2 4 1 3 3 3 4 3 3 2 3 4 2 3 2 2 1 2 2 3 2 2 3 1 3 3 2 4 3

table (r1)1 2 3 4 8 36 43 13

Traitement des tableaux ayant desvariables quantitatives et qualitatives (2/11)

Histogram of x

x

Freq

uenc

y

3 4 5 6 7

05

1015

20

Page 52: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

# Avec des classes d’effectifs égaux : breaks = quantile ()

r3 <- cut (x, breaks = quantile(x), include.lowest = TRUE) table (r3)[2.69,4.13] (4.13,4.91] (4.91,5.51] (5.51,6.97]

25 25 25 25

summary(x)Min. 1st Qu. Median Mean 3rd Qu. Max. 2.689 4.134 4.911 4.895 5.513 6.973

# Avec indication des limites des classes : breaks = bornes

r2 <- cut (x, breaks = c(min(x), 4, mean(x), 6, max(x)), include.lowest = TRUE) table (r2)[2.69,4] (4,4.89] (4.89,6] (6,6.97]

19 28 44 9

Découpage en classes des variables quantitatives : cut () 2/2

Refaire avec include.lowest = FALSE

Fonction quantile ()quantile (x, probs = seq (0, 1, 1 / n), na.rm = FALSE) # donne par défaut les quartilesn étant le nombre souhaité de classes # par défaut n = 4

Traitement des tableaux ayant desvariables quantitatives et qualitatives (3/11)

Page 53: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données 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.00Passengers Type AirBags DriveTrain

Min. :2.000 Compact:16 Driver & Passenger:16 4WD :101st Qu.:4.000 Large :11 Driver only :43 Front:67Median :5.000 Midsize:22 None :34 Rear :16Mean :5.086 Small :213rd Qu.:6.000 Sporty :14Max. :8.000 Van : 9 5 quantitatives

1 discrète3 qualitatives

Traitement des tableaux ayant desvariables quantitatives et qualitatives (4/11)

Exemple : library (MASS)data (Cars93)

Page 54: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

# Changement d’identificateur des colonnesnames (car) <- c("prix","PU","tank","L","coffr","pers","type","Rbag","trac")

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))

# Histogrammes

Traitement des tableaux ayant desvariables quantitatives et qualitatives (5/11)

prixFr

eque

ncy

10 20 30 40 50 60

05

1020

30

PU

Freq

uenc

y

50 100 150 200 250 300

05

1525

tank

Freq

uenc

y

10 15 20 25

05

1015

20

L

Freq

uenc

y

140 160 180 200 220

05

1020

coffrFr

eque

ncy

10 15 20

05

1020

pers

Freq

uenc

y

2 3 4 5 6 7 8

010

2030

40

Page 55: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Découpage en classes des variables quantitatives (continues)

Recodage avec indication des limites des classes (br=bornes)# variable "PU" (Horsepower)x <- car$PUcar$PU <- as.factor ( cut (x, br = c(min(x),100,150,200,max(x)), inc = TRUE, lab = NULL))

Recodage avec indication du nombre de classes (br=nombre de classes)# variables : "tank" , "L" , "coffr" numv <- 3:5 # numéro des variables à recodercl <- c(4,5,6) # nombre de classes par variablefor ( i in 1:length(numv) ) {car[,numv[i]] <- as.factor (cut (car[,numv[i]], br = cl[i], inc = TRUE, lab = NULL)) }

Traitement des tableaux ayant desvariables quantitatives et qualitatives (6/11)

Recodage avec des classes d’effectifs égaux (br=quantile)x <- car$prix

# découpage en n classes équiprobablesn <- 4 # nombre de classes souhaité (ici n=4 soit effectif/classe de 25%)car[,1] <- as.factor (cut (x, br=quantile(x, probs=c(seq(0,1,1/n))), inc = TRUE, lab = FALSE))

Préparation des données

Fonction cut ()

Page 56: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Transformation des variables discrètes (quantitatives)

# 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

car[,6] <- as.factor (car[,6])

summary (car[,6])

2 4 5 6 7 8 2 23 41 18 8 1

Traitement des tableaux ayant desvariables quantitatives et qualitatives (7/11)

Fonction as.factor ()

Préparation des données

Page 57: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Recodage des variables 1/3

x <- car[,6] # variable "pers" table (x)2 4 5 6 7 8 2 23 41 18 8 1

library (car)

# regroupement des 2 premières et des 2 dernières classes

car[,6] <- recode (x,"c(2,4) = '2-4'; c(7,8) = '7-8' ")

table (car[,6])2-4 5 6 7-8 25 41 18 9

Fonction recode () dans library (car)

nouvelles valeurs

Traitement des tableaux ayant desvariables quantitatives et qualitatives (8/11)

Préparation des données

Page 58: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Recodage des variables 2/3

x <- car[,5] # variable "coffr" table (x)[5.98,8.66] (8.66,11.3] (11.3,14] (14,16.7] (16.7,19.3] (19.3,22]

3 14 35 16 10 4( n <- levels(x) )[1] "[5.98,8.66]" "(8.66,11.3]" "(11.3,14]" "(14,16.7]" "(16.7,19.3]" "(19.3,22]"

car[,5] <- recode (x,"c(n[1], n[2])=1 ; n[3]=3 ; n[4]=4 ; c(n[5], n[6])=6")

table (car[,5] )1 3 4 6 17 35 16 14

Autre syntaxe de recodage : y <- recode (car[,5], "1:4='A'; else ='B'")table(y)A B 68 25

sum(table(y))[1] 93sum(table(car[,5]))[1] 82

Pourquoi cette différence ?

Traitement des tableaux ayant desvariables quantitatives et qualitatives (9/11)

Préparation des données

Page 59: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Recodage des variables 3/3

cas des données manquantes

# utilisation de la fonction recode()car[,5] <- recode (car[,5], "NA = 0")table (car[,5]) 0 1 3 4 6 11 17 35 16 14

car[,5] # variable "coffr" [1] 1 4 4 6 3 4 6 6 4 6 4

[12] 3 4 3 4 <NA> <NA> 6 <NA> 4 4 6 [23] 1 3 4 <NA> 4 1 1 4 3 3 3 [34] 3 6 <NA> 6 6 1 1 1 3 4 1 [45] 3 1 4 4 4 1 6 6 4 3 4 [56] <NA> <NA> 3 4 1 4 1 4 3 4 <NA>[67] 4 4 4 <NA> 6 1 6 3 3 4 6 [78] 4 3 1 4 4 1 1 3 4 <NA> 1 [89] <NA> 4 4 4 4 Levels: 1 3 4 6

table (car[5])1 3 4 6

17 35 16 14

# recherche données manquanteswhich (is.na(car), arr.ind=TRUE)

row col16 16 517 17 519 19 526 26 536 36 556 56 557 57 566 66 570 70 587 87 589 89 5

Traitement des tableaux ayant desvariables quantitatives et qualitatives (10/11)

Préparation des données

Page 60: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Traitement des tableaux ayant desvariables quantitatives et qualitatives (11/11)

Résumé du tableau soumis à l’analyse

prix PU tank L coffr pers 1:24 [55,100] :22 [9.18,13.6]:20 [141,157]: 3 0:11 2-4:25 2:23 (100,150]:32 (13.6,18.1]:42 (157,172]:16 1:17 5 :41 3:23 (150,200]:28 (18.1,22.6]:28 (172,188]:38 3:35 6 :18 4:23 (200,300]:11 (22.6,27] : 3 (188,203]:29 4:16 7-8: 9

(203,219]: 7 6:14

type Rbag tracCompact:16 Driver & Passenger:16 4WD :10 Large :11 Driver only :43 Front:67 Midsize:22 None :34 Rear :16 Small :21 Sporty :14 Van : 9

summary(car)

Fin de la préparation des données

Page 61: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

carm <- dudi.acm(car[,-1],scannf=FALSE)

ctrs <- inertia.dudi (carm, r=F, c=T)

ctrs$TOT[1:5,]inertia cum ratio

1 0.5522426 0.5522426 0.16992082 0.4456002 0.9978428 0.30702853 0.3679968 1.3658395 0.42025834 0.2795575 1.6453970 0.50627605 0.2497128 1.8951098 0.5831107

s.label (carm$co[,1:2], clab = 0.6)

barplot (ctrs$TOT[,1])

Analyse Factorielle des Correspondances Multiples(exemple 2) (1/3)

AFCM sans la variable Prix

0.0

0.1

0.2

0.3

0.4

0.5

d = 1

PU..55.100.

PU..100.150. PU..150.200.

PU..200.300. tank..9.18.13.6.

tank..13.6.18.1.

tank..18.1.22.6.

tank..22.6.27.

L..141.157.

L..157.172.

L..172.188.

L..188.203.

L..203.219.

cof f r.0

cof f r.1

cof f r.3

cof f r.4

cof f r.6

pers.2.4

pers.5

pers.6

pers.7.8

ty pe.Compact

ty pe.Large

ty pe.Midsize

ty pe.Small

ty pe.Sporty

ty pe.Van

Rbag.Driv er...Passenger

Rbag.Driv er.only

Rbag.None

trac.4WD

trac.Front

trac.Rear

Elimination de Prix

Page 62: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

# Transformation de la variable Prixcsup <- acm.disjonctif (car[1])

# Introduction dans l’analysecarmsup <- supcol (carm, csup)

carmsup$cosup

Introduction de la variable Prixen variable illustrative

Analyse Factorielle des Correspondances Multiples(exemple 2) (2/3)

RemarqueRemarque :Dans ce cas, supcol utilise supcol.default() faisant intervenir

carm$l1 et carm$lw (ici constant) et non supcol.coa().Pour avoir des coordonnées identiques à l’AFC simple du

tableau disjonctif, il convient de pondérer ces valeurs par le poids de ces points.

Comp1 Comp2prix.1 0.32748085 -0.05184403prix.2 0.00445254 -0.01211915prix.3 -0.14824019 0.14308666prix.4 -0.18369320 -0.07912348

(coosup <- carmsup$cosup / colMeans(csup) )Comp1 Comp2

prix.1 1.26898830 -0.20089561

prix.2 0.01800375 -0.04900353

prix.3 -0.59940600 0.57856782

prix.4 -0.74275945 -0.31993409

x <- paste("(",round(100*carm$eig[1:2]/sum(carm$eig),1),"%)",sep="")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]))abline (v=0, h=0)points (carm$li[,1:2], pch=19, cex=.5, col=3) # Véhiculess.label (coosup[,1:2], clab=.8, add.plot = TRUE ) # Prixsel <- grep ("cof", rownames(carm$co), fixed=TRUE) # Choix colonnetext (carm$co[sel,1:2], labels=rownames(carm$co)[sel], cex=.8, col=2)

-1 0 1 2-1

01

23 car93

Axe 1 (17%)

Axe

2 (1

3.7%

)

prix.1

prix.2

prix.3

prix.4

coffr.0

coffr.1

coffr.3coffr.4

coffr.6

Page 63: Analyse Factorielle des Correspondances sous Redu.mnhn.fr/pluginfile.php/8213/mod_resource/content/0/ED_MNHN... · La démarche comparée à l'ACP Données "brutes" Tableau des fréquences

MNHN Ecole doctorale - Module Analyse des données sous R (niveau 1)

Analyse Factorielle des Correspondances Multiples(exemple 2) (3/3)

Autres représentations d'une variable qualitative sur une carte factorielle

Les points prix sont placés à la moyenne des scores des points lignes

qu'ils caractérisent

opar <- par()par (mfrow = c(2, 2), mgp = c(1.5, .6, 0), mar = c(3, 2.5, 1, 1))plot.new()

plot (carm$l1[,1:2], type="n") abline (v=0, h=0)points (carm$l1[,1:2], pch=19, cex=.6, col=as.numeric(car[,1])) # scorestext (coosup[,1:2], labels=rownames(coosup), col=1: nrow(coosup), font=2) # coordonnées

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)

par(opar)

-2 -1 0 1 2

-10

12

3

RS1

RS

2

prix.1prix.2

prix.3

prix.4

d = 1

prix.1 prix.2

prix.3

prix.4

d = 1

prix.1 prix.2

prix.3

prix.4