Analyse factorielles de correspondances binaires (AFC) avec R et FactoMineR sur les données brutes (effectifs) des élections présidentielles américaines en 2016 (nombre de voies) (Sources : https://en.wikipedia.org/wiki/2016_United_States_presidential_election#Results_by_state)

Pour aller plus loin :

Résumé des principales étapes du code R

1. Import des données

Avec mes fichiers exemples, préférez les paramètres nord-américains (“.” séparateur de décimales, “,” séparateur de miliers).

Salle C210, identifiant => “geographie2” !

### setwd("D:/Users/geographie2/vgodard/ADD/presidUSA16ation/R")
### respecter ce cheminement si "geographie2"
### getwd()

# Remove all objects
rm(list = ls() )

2. Lecture des données

presidUSA16 <- read.csv("presidUSA16.csv",
                      sep = ";",
                      dec =".",### Si param. régio. non US, remplacer le "." par une ","
                      stringsAsFactors = FALSE) # si stringsAsFactors = FALSE on perd les modalités si qualitative

head(presidUSA16)
##        STATE CLINTON   TRUMP JOHNSON  STEIN OTHERS MCMULLIN PRES_12
## 1    Alabama  729547 1318255   44467   9391  21712        0       R
## 2     Alaska  116454  163387   18725   5735  14307        0       R
## 3    Arizona 1161167 1252401  106327  34345  32968    17449       R
## 4   Arkansas  380494  684872   29949   9473  12712    13176       R
## 5 California 8753788 4483810  478500 278657 147244    39596       D
## 6   Colorado 1338870 1202484  144121  38437  27418    28917       D

3. Graphe, table de contingence et khi-deux

3.1 Graphe

Installer et exécuter préalablement la librairie “gplots”

### Avec la librairie gplots
## install.packages("gplots") ## si pas déjà installé !
 library("gplots")

Quand la table de contingence ne contient pas trop de variables ou d’individus, il est possible de représenter les relations entre eux. Ici, ce n’est pas le cas.

# 1. Convertion des données en table
#dt <- as.table(as.matrix(presidUSA16))

# 2. Graphe
#balloonplot(t(dt), main ="presidUSA16", xlab ="", ylab="",
#            label = FALSE, show.margins = FALSE)

3.2 Khi-deux

Pour une petite table de contingence, il est possible de tester la significativité du lien de dépendance à l’aide d’un test du khi-deux.

# Calcul de la statistique du Chi-square (Khi-deux)
chisq <- chisq.test(presidUSA16[,2:7])
chisq
## 
##  Pearson's Chi-squared test
## 
## data:  presidUSA16[, 2:7]
## X-squared = 17400472, df = 250, p-value < 2.2e-16
# Calcul de la valeur du Khi-deux
chisq$statistic
## X-squared 
##  17400472
# Calcul du degrés de liberté (Degree of freedom)
df <- (nrow(presidUSA16[, 2:7]) - 1) * (ncol(presidUSA16[, 2:7]) - 1)
df
## [1] 250
# Calcul de la P-value
pval <- pchisq(chisq$statistic, df = df, lower.tail = FALSE)
pval
## X-squared 
##         0
# ou
chisq$p.value
## [1] 0

Au risque 5% (communément admis), on rejette l’hypothèse nulle d’indépendance entre les lignes et les colonnes.

Sur les grosses tables, il est pratiquement toujours significatif (p-value < 0.05)

4. Module AFC

Installer et exécuter préalablement les librairies “FactoMineR”, “factoextra”, puis les charger

### Avec la librairie FactoMineR et factoextra
## install.packages(c("FactoMineR", "factoextra")) ## si pas déjà installés !

library("FactoMineR")
library("factoextra")

4.1 AFC avec toutes les variables

L’AFC avec tous les éléments actifs (51 lignes et 7 variables)

- CA est le nom de l’AFC dans Factominer

- CA fonctionne a minima avec :

  • x : le data frame (la table de contingence) ;

  • ncp : nb de dimensions gardé dans le résultat final ;

  • graph : le graphe par défaut (pour ne pas afficher le graphe graph = FALSE) ;

- Si le nom des stations est en première colonne :

  • le tableau “utile” va de la deuxième colonne à la 8ème [,2:8] ;

  • il n’y a pas de variables quantitatives supplémentaires ;

  • la variable qualitative (supplémentaire) est la dernière et exprime, pour l’élection présidentielle de 2012, quel est le parti vainqueur.

res.presidUSA16.ca <- CA(presidUSA16[,2:8],
                       col.sup = NULL,
                       row.sup = NULL,
                       quali.sup=7,
                       axes = 1:2,
                       ncp = 6,
                       graph = TRUE)

Le graphique avec la fonction Biplot (cf. infra) apporte un net gain de lisibilité.

McMullin est un candidat indépendant résidant dans l’Utah (n°51). Faut-il traiter cet état ou ce candidat en “supplémentaire” (car ayant un comportement d’outlier) ? Si oui (cf. infra), les mettre en fin de tableaux pour faciliter leur désignation comme colonne ou ligne supplémentaire.

4.2 AFC sans la variable “outlier” (traitée en illustrative)

res.presidUSA16.ca <- CA(presidUSA16[,2:8],
                       col.sup = 6,
                       row.sup = NULL,
                       quali.sup=7,
                       axes = 1:2,
                       ncp = 5,
                       graph = TRUE)

La suite du tutoriel se fera avec McMullin en variable illustrative (col.sup). Si vous ne le souhaitez pas, à des fins de comparaisons par exemple, relancez l’exécution en mettant en commantaires la section 4.2.

5. Les sorties de la fonction CA

Si ce n’est déjà fait, installer le package “factoextra”, puis le charger.

## install.packages("factoextra")

library("factoextra")

Si on veut connaître tous les résultats de la fonction CA dans Factominer et/ou factoextra :

### Listage des résultats

print(res.presidUSA16.ca)
## **Results of the Correspondence Analysis (CA)**
## The row variable has  51  categories; the column variable has 5 categories
## The chi square of independence between the two variables is equal to 7018356 (p-value =  0 ).
## *The results are available in the following objects:
## 
##    name               description                                
## 1  "$eig"             "eigenvalues"                              
## 2  "$col"             "results for the columns"                  
## 3  "$col$coord"       "coord. for the columns"                   
## 4  "$col$cos2"        "cos2 for the columns"                     
## 5  "$col$contrib"     "contributions of the columns"             
## 6  "$row"             "results for the rows"                     
## 7  "$row$coord"       "coord. for the rows"                      
## 8  "$row$cos2"        "cos2 for the rows"                        
## 9  "$row$contrib"     "contributions of the rows"                
## 10 "$col.sup$coord"   "coord. for supplementary columns"         
## 11 "$col.sup$cos2"    "cos2 for supplementary columns"           
## 12 "$quali.sup$coord" "coord. for supplementary categorical var."
## 13 "$quali.sup$cos2"  "cos2 for supplementary categorical var."  
## 14 "$call"            "summary called parameters"                
## 15 "$call$marge.col"  "weights of the columns"                   
## 16 "$call$marge.row"  "weights of the rows"

5.1. Les eigenvalues ou valeurs propres

La somme des eigenvalues égale le nombre d’axes (ici 5).

Contrairement à l’ACP eigenvalue n’est jamais supérieure à 1.

eig.val <- get_eigenvalue(res.presidUSA16.ca)
eig.val
##        eigenvalue variance.percent cumulative.variance.percent
## Dim.1 0.037699616        73.036783                    73.03678
## Dim.2 0.009748608        18.886319                    91.92310
## Dim.3 0.003110416         6.025918                    97.94902
## Dim.4 0.001058660         2.050980                   100.00000

Il est aussi possible d’apprécier les ruptures dans la succession des eigenvalues.

 # Visualisation des eigenvalues
fviz_eig(res.presidUSA16.ca, addlabels = TRUE, ylim = c(0, 40)) # calibrer le ylim avec la lecture du tableau précédent

Il n’y a pas de règles pour choisir le nombre d’axes. Eventuellement, retenir les axes qui ont une eigenvalues d’une valeur supérieure à :

 # Visualisation des eigenvalues
sp <- fviz_eig(res.presidUSA16.ca,addlabels = TRUE, ylim = c(0, 62)) # calibrer le ylim avec la lecture du tableau précédent
         
sp + geom_hline (yintercept = 25, linetype = 2, color = "red") # tracer le yintercept avec la valeur de la *eigenvalues* moyenne 

Cel laisse supposer qu’on pourrait presque se passer de l’axe 2 !

Les paramètres les plus utiles :

get_ca_row(res.presidUSA16.ca)
## Correspondence Analysis - Results for rows
##  ===================================================
##   Name       Description                
## 1 "$coord"   "Coordinates for the rows" 
## 2 "$cos2"    "Cos2 for the rows"        
## 3 "$contrib" "contributions of the rows"
## 4 "$inertia" "Inertia of the rows"

5.2. Coordonnées des variables et des individus sur les axes

Interprétation des coordonnées des variables sur les axes factoriels (les colonnes : col).

res.presidUSA16.ca$col$coord ### [toutes les lignes ; colonnes 1 à 4, cf résultats *eigenvalue*]
##                Dim 1       Dim 2        Dim 3        Dim 4
## CLINTON  0.181385328 -0.03423862 -0.009987601 -0.006482418
## TRUMP   -0.204308474  0.00330614 -0.008524917  0.005351149
## JOHNSON -0.002025339  0.15676959  0.264693615 -0.067003794
## STEIN    0.370422416  0.13429959  0.175354745  0.285384957
## OTHERS   0.331693239  0.96861765 -0.210419142 -0.021294244

Valeur des coordonnées des variables quantitatives supplémentaires (les cols.).

res.presidUSA16.ca$col.sup$coord  ## coord. for the supplementary columns            
##              Dim 1     Dim 2     Dim 3     Dim 4
## MCMULLIN -0.615083 0.5359832 0.4070686 0.3414092

Valeur des coordonnées des variables qualitatives.

res.presidUSA16.ca$quali.sup$coord  ##   "coord. for supplementary categorical var."
##                Dim 1         Dim 2        Dim 3         Dim 4
## PRES_12.D  0.1014612  0.0001277029 -0.001204224 -0.0002999752
## PRES_12.R -0.1961930 -0.0002469361  0.002328580  0.0005800550

Interprétation des coordonnées des individus sur les axes factoriels

res.presidUSA16.ca$row$coord ### [ligne 1 à 51 ; colonnes 1 à 5, mais 4 dimensions !]
##           Dim 1         Dim 2         Dim 3         Dim 4
## 1  -0.306613423  0.0412235166 -0.0817086860  0.0226261615
## 2  -0.087716266  0.4487503642  0.0222646913  0.0189826274
## 3  -0.043427370  0.0688930738  0.0343447270  0.0136590474
## 4  -0.291477674  0.0681286759 -0.0437246262  0.0446750956
## 5   0.299657734 -0.0213653057  0.0239418715  0.0251566941
## 6   0.037839316  0.0458230035  0.1009847085 -0.0169302674
## 7   0.105944416 -0.1067511718  0.0226902970  0.0192736621
## 8   0.088872808 -0.0651704284  0.0293597415  0.0127602419
## 9   0.867714076 -0.0636211097 -0.1305584926 -0.1005544096
## 10 -0.051592836 -0.0784244111 -0.0450746828 -0.0017432972
## 11 -0.104274363 -0.0866741350 -0.0105063051 -0.0542200424
## 12  0.339399920 -0.0031590426  0.0728958132  0.1024161673
## 13 -0.346929852  0.1308037272  0.0527865699  0.0626333085
## 14  0.140511507 -0.0989545928  0.0630930804 -0.0039607689
## 15 -0.239610108 -0.0205092543  0.0831119825 -0.0580078146
## 16 -0.104574726  0.1208986857 -0.0189591999 -0.0246199009
## 17 -0.221830774  0.0030827690  0.1309616986  0.0991100216
## 18 -0.341419264 -0.0289704898 -0.0024879594  0.0434776676
## 19 -0.231872125 -0.0280531986 -0.0653542282  0.0380759360
## 20  0.011343721 -0.0394567908  0.1460411630  0.0404994368
## 21  0.253579398 -0.0108132999 -0.0312126831 -0.0183459750
## 22  0.268442576  0.0375090759  0.0271169172 -0.0353267255
## 23 -0.031321853 -0.0374643079  0.0316982069  0.0015160849
## 24  0.014637656  0.1041334827  0.0043097651  0.0011712292
## 25 -0.221623244 -0.0531907195 -0.1107329265  0.0149568498
## 26 -0.216757651  0.0001444391  0.0202533692  0.0223747387
## 27 -0.221618865  0.0437784781  0.1545337503  0.0433435142
## 28 -0.251530104  0.1767186304  0.0297475651  0.0132034713
## 29  0.024199681  0.2215894131 -0.1206849306 -0.1103762478
## 30 -0.008485205  0.0842851961  0.0098164381 -0.0357762050
## 31  0.107323623 -0.1010793519 -0.0562971182  0.0022226925
## 32  0.059308461  0.0505184668  0.3217885805 -0.1174865302
## 33  0.204955921 -0.0725024064 -0.0338983524  0.0137084308
## 34 -0.071317418  0.0016585049 -0.0582810730 -0.0507054942
## 35 -0.345174731  0.2852542645  0.0907754565  0.0010631141
## 36 -0.112802549 -0.0220016237  0.0009304836  0.0033625645
## 37 -0.417681632  0.0127713872  0.1210223645 -0.0685255825
## 38  0.165537404  0.3040436991  0.0157387600  0.0629758451
## 39 -0.030364770  0.0040494157 -0.0601923355 -0.0001971201
## 40  0.159679196  0.0959180999 -0.0420046349 -0.0058402322
## 41 -0.181041652 -0.0353876449 -0.0428816515  0.0128242115
## 42 -0.332797566  0.1077247448  0.0750607992 -0.0852378279
## 43 -0.293244190  0.0159492688 -0.0259546151  0.0247646012
## 44 -0.129768019 -0.0619637128  0.0141498207  0.0040266333
## 45  0.380557925  0.6312288427 -0.2121528444  0.0100197254
## 46  0.025014456 -0.0181646964 -0.0265638240 -0.0323105564
## 47  0.204960921  0.3252257067 -0.0163981491 -0.0157985388
## 48 -0.443621730  0.0538381287  0.0148330487  0.0892404990
## 49 -0.021196474  0.0537096547 -0.0015298725 -0.0056721666
## 50 -0.430290781  0.4130031193 -0.0083775473  0.0231086359
## 51 -0.239354346  0.1246861541  0.0394492841  0.0176715790

5.3. Contribution des variables et des individus sur les axes

Interprétation des contributions des variables sur les axes factoriels.

res.presidUSA16.ca$col$contrib ### [toutes les lignes ; colonnes toutes, cf résultats *eigenvalue*] pour rechercher les plus contributives dans un tableur.
##                Dim 1       Dim 2     Dim 3      Dim 4
## CLINTON 4.226747e+01  5.82409892  1.553255  1.9224551
## TRUMP   5.128988e+01  0.05193925  1.082325  1.2529487
## JOHNSON 3.592535e-04  8.32383594 74.372244 14.0018241
## STEIN   3.900690e+00  1.98285325 10.594985 82.4497461
## OTHERS  2.541603e+00 83.81727264 12.397192  0.3730261

Interprétation des contributions des individus sur les axes factoriels.

res.presidUSA16.ca$row$contrib ### [ligne toutes ; colonnes toutes] pour rechercher les plus contributifs dans un tableur.
##           Dim 1        Dim 2        Dim 3        Dim 4
## 1   3.894317798 2.722284e-01  3.351999115 0.7551810583
## 2   0.047823343 4.840426e+00  0.037344907 0.0797576887
## 3   0.095187820 9.264026e-01  0.721593877 0.3353323142
## 4   1.852171072 3.913134e-01  0.505174125 1.5494649246
## 5  24.773351274 4.870195e-01  1.916762692 6.2175770598
## 6   0.076851476 4.358400e-01  6.634302539 0.5478649947
## 7   0.359721987 1.412376e+00  0.199990600 0.4239548285
## 8   0.068276362 1.419803e-01  0.090314068 0.0501222599
## 9   4.572047532 9.505046e-02  1.254544543 2.1864520219
## 10  0.489163982 4.370917e+00  4.525425446 0.0198883515
## 11  0.870048666 2.324673e+00  0.107054975 8.3769982144
## 12  0.963917705 3.229399e-04  0.538939526 3.1256027774
## 13  1.511621724 8.309872e-01  0.424155445 1.7544893972
## 14  2.127947361 4.081345e+00  5.200186783 0.0602110732
## 15  3.063260332 8.678960e-02  4.467034439 6.3933268079
## 16  0.331462063 1.713238e+00  0.132050105 0.6542341634
## 17  1.130754563 8.445027e-04  4.776741504 8.0378549135
## 18  4.323798324 1.203914e-01  0.002782879 2.4969055864
## 19  2.119218280 1.199603e-01  2.040536499 2.0349795220
## 20  0.001872820 8.762397e-02  3.762305305 0.8500868854
## 21  3.477084987 2.445109e-02  0.638510377 0.6481107566
## 22  4.670551296 3.526407e-01  0.577649449 2.8803971882
## 23  0.091696708 5.073277e-01  1.138273479 0.0076504352
## 24  0.012087176 2.365685e+00  0.012700106 0.0027557882
## 25  1.158799003 2.581330e-01  3.506302928 0.1879481359
## 26  2.567838745 4.409431e-06  0.271726387 0.9743501952
## 27  0.474143719 7.155042e-02  2.794226579 0.6458401651
## 28  1.041986652 1.989029e+00  0.176645851 0.1022442104
## 29  0.012857110 4.168851e+00  3.875685857 9.5247944271
## 30  0.001043932 3.983312e-01  0.016934549 0.6608702107
## 31  0.870519294 2.986118e+00  2.903210046 0.0132961765
## 32  0.054381636 1.525856e-01 19.403433872 7.5993312245
## 33  6.319156702 3.057999e+00  2.095143364 1.0066857839
## 34  0.470474207 9.839486e-04  3.808185112 8.4690538103
## 35  0.800412140 2.113948e+00  0.670951208 0.0002703807
## 36  1.361292199 2.002706e-01  0.001122663 0.0430759683
## 37  4.945121364 1.787955e-02  5.031944554 4.7399300256
## 38  1.069880482 1.395755e+01  0.117220182 5.5140570003
## 39  0.110783119 7.619257e-03  5.276359430 0.0001662553
## 40  0.230615933 3.218015e-01  0.193421809 0.0109858364
## 41  1.331260370 1.966997e-01  0.905247599 0.2378743409
## 42  0.799639299 3.240105e-01  0.493035959 1.8680085321
## 43  4.187286284 4.790156e-02  0.397577124 1.0634492246
## 44  2.932628474 2.585776e+00  0.422612126 0.1005509353
## 45  0.888353323 9.451749e+00  3.346264664 0.0219298717
## 46  0.047980129 9.784303e-02  0.655811237 2.8506796606
## 47  2.718398142 2.646884e+01  0.210901163 0.5751551800
## 48  2.738623883 1.559843e-01  0.037109576 3.9464900123
## 49  0.025981944 6.451243e-01  0.001640489 0.0662556046
## 50  0.924125136 3.292363e+00  0.004245793 0.0949151587
## 51  0.992182128 1.041213e+00  0.326667100 0.1925926622

5.4. Qualité de la représentation (COS2) des variables et des individus sur les axes

Interprétation des COS2 des variables sur les axes factoriels.

res.presidUSA16.ca$col$cos2 ### [toutes les lignes ; colonnes toutes, cf résultats *eigenvalue*] pour rechercher les mieux représentées dans un tableur.
##                Dim 1        Dim 2       Dim 3        Dim 4
## CLINTON 9.615938e-01 0.0342625616 0.002915478 0.0012281781
## TRUMP   9.973183e-01 0.0002611581 0.001736366 0.0006841560
## JOHNSON 4.137873e-05 0.2479164127 0.706754491 0.0452877174
## STEIN   5.130542e-01 0.0674400858 0.114975101 0.3045305804
## OTHERS  1.006619e-01 0.8584132824 0.040509993 0.0004148739

Interprétation des COS2 des variables quantitatives supplémentaires sur les axes factoriels.

res.presidUSA16.ca$col.sup$cos2 ### [toutes les lignes ; colonnes toutes, cf résultats *eigenvalue*] pour rechercher les mieux représentées dans un tableur.
##               Dim 1      Dim 2      Dim 3      Dim 4
## MCMULLIN 0.02130322 0.01617633 0.00933067 0.00656339

Interprétation des COS2 des variables qualitatives supplémentaires sur les axes factoriels.

res.presidUSA16.ca$quali.sup$cos2 ### [toutes les lignes ; colonnes toutes, cf résultats *eigenvalue*] pour rechercher les mieux représentées dans un tableur.
##               Dim 1        Dim 2        Dim 3        Dim 4
## PRES_12.D 0.9998488 1.583931e-06 0.0001408476 8.739882e-06
## PRES_12.R 0.9998488 1.583931e-06 0.0001408476 8.739882e-06

Interprétation des qualités de représentation des individus sur les axes factoriels.

res.presidUSA16.ca$row$cos2 ### [ligne toutes ; colonnes toutes] pour rechercher les mieux représentées dans un tableur.
##          Dim 1        Dim 2        Dim 3        Dim 4
## 1  0.913627981 1.651495e-02 6.488189e-02 4.975180e-03
## 2  0.036651503 9.592706e-01 2.361375e-03 1.716501e-03
## 3  0.235791518 5.934064e-01 1.474760e-01 2.332609e-02
## 4  0.908572724 4.963740e-02 2.044567e-02 2.134421e-02
## 5  0.981821586 4.991141e-03 6.267550e-03 6.919723e-03
## 6  0.102154888 1.498096e-01 7.275852e-01 2.045033e-02
## 7  0.477497211 4.847971e-01 2.190257e-02 1.580313e-02
## 8  0.599707575 3.224801e-01 6.544948e-02 1.236288e-02
## 9  0.960205231 5.161944e-03 2.173807e-02 1.289475e-02
## 10 0.245397511 5.670141e-01 1.873082e-01 2.801781e-04
## 11 0.507243546 3.504616e-01 5.149457e-03 1.371454e-01
## 12 0.879295969 7.617678e-05 4.056176e-02 8.006610e-02
## 13 0.834796189 1.186690e-01 1.932609e-02 2.720870e-02
## 14 0.588796700 2.920206e-01 1.187149e-01 4.678435e-04
## 15 0.842993048 6.176088e-03 1.014241e-01 4.940680e-02
## 16 0.412395027 5.511923e-01 1.355501e-02 2.285770e-02
## 17 0.645852449 1.247302e-04 2.251015e-01 1.289214e-01
## 18 0.977068564 7.034944e-03 5.188425e-05 1.584461e-02
## 19 0.892025029 1.305704e-02 7.086427e-02 2.405366e-02
## 20 0.005219491 6.314815e-02 8.651027e-01 6.652963e-02
## 21 0.978278891 1.778899e-03 1.482166e-02 5.120547e-03
## 22 0.955067445 1.864679e-02 9.745674e-03 1.654010e-02
## 23 0.289252075 4.138253e-01 2.962450e-01 6.776862e-04
## 24 0.019341144 9.788584e-01 1.676665e-03 1.238291e-04
## 25 0.762310105 4.391095e-02 1.903069e-01 3.472013e-03
## 26 0.980982275 4.355937e-07 8.564595e-03 1.045269e-02
## 27 0.639593683 2.495813e-02 3.109835e-01 2.446465e-02
## 28 0.662096738 3.268182e-01 9.260711e-03 1.824390e-03
## 29 0.007661707 6.423981e-01 1.905515e-01 1.593887e-01
## 30 0.008418645 8.306538e-01 1.126744e-02 1.496601e-01
## 31 0.462404584 4.101629e-01 1.272342e-01 1.983308e-04
## 32 0.028500056 2.067820e-02 8.389840e-01 1.118378e-01
## 33 0.864330371 1.081593e-01 2.364373e-02 3.866645e-03
## 34 0.460010190 2.487767e-04 3.072071e-01 2.325339e-01
## 35 0.570738465 3.897835e-01 3.947263e-02 5.414009e-06
## 36 0.962464497 3.661477e-02 6.548840e-05 8.552403e-04
## 37 0.899438274 8.409240e-04 7.551129e-02 2.420951e-02
## 38 0.220884105 7.451508e-01 1.996702e-03 3.196835e-02
## 39 0.202127472 3.594762e-03 7.942692e-01 8.518183e-06
## 40 0.698632408 2.520886e-01 4.834443e-02 9.345710e-04
## 41 0.909646636 3.475514e-02 5.103389e-02 4.564330e-03
## 42 0.818834008 8.579590e-02 4.165450e-02 5.371559e-02
## 43 0.982391800 2.906079e-03 7.695823e-03 7.006297e-03
## 44 0.805896025 1.837463e-01 9.581766e-03 7.759394e-04
## 45 0.246139391 6.771942e-01 7.649575e-02 1.706284e-04
## 46 0.231296264 1.219671e-01 2.608361e-01 3.859005e-01
## 47 0.283271724 7.132320e-01 1.813221e-03 1.683042e-03
## 48 0.946689014 1.394317e-02 1.058382e-03 3.830943e-02
## 49 0.133378746 8.563753e-01 6.948161e-04 9.551187e-03
## 50 0.519608996 4.786954e-01 1.969638e-04 1.498653e-03
## 51 0.766882921 2.081052e-01 2.083170e-02 4.180201e-03

6. Aide à l’interprétation

6.1. Graphiques de la contribution

  • des variables
          fviz_ca_col(res.presidUSA16.ca,
                  col.col = "contrib",
                  axes = 1:2,
                  gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))

  • des individus
          fviz_ca_row(res.presidUSA16.ca,
                      col.row = "contrib",
                      axes = 1:2,
                      gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))

6.2. Graphiques de la qualité

  • des variables
          fviz_ca_col(res.presidUSA16.ca,
                  col.col = "cos2",
                  axes = 1:2,
                  gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))

  • des filtrages sont possibles

– en fonction du Cos2

          ## Lignes avec un cos2 > 0.8
          fviz_ca_row(res.presidUSA16.ca,
                      select.row = list(cos2 = 0.8),
                      col.row = "cos2",
                      axes = 1:2,
                      gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))

– en fonction des contributions

          ## Top 5 des contributions lignes et colonnes
          fviz_ca_biplot(res.presidUSA16.ca,
                      select.row = list(contrib = 5), 
                      #select.col = list(contrib = 5), # si on veut toutes les variables
                      arrow = c (TRUE, TRUE), # pour mieux voir la proximité avec les axes
                      axes = 1:2,
                      repel = TRUE, # pour éviter les chevauchements dans biplot
                      )

Il est possible de faire des Biplots asymétriques, où les coordonnées sont pondérées par le poids de la valeur propre (en fait la racine carrée de la valeur propre eigenvalue). - Voir : Biplot asymétrique in : http://www.sthda.com/french/articles/38-methodes-des-composantes-principales-dans-r-guide-pratique/74-afc-analyse-factorielle-des-correspondances-avec-r-l-essentiel/#r-code-to-comput-ca

6.3. Aide à la description et à l’interprétation

Identification des variables les plus remarquables (moins efficace que dans PCA car pas significatives en l’absence de test) par composante. Simple tri ds coordonnées.

### fonction dimdesc() [in FactoMineR]

res.desc <- dimdesc(res.presidUSA16.ca, axes = c(1,2))
  • Aide sur l’axe 1

– Pour les lignes (pour nous, les individus)

### Description de la dimension 1 pour 4 lignes
head(res.desc[[1]]$row, 4)
##         coord
## 48 -0.4436217
## 50 -0.4302908
## 37 -0.4176816
## 13 -0.3469299

– Pour les colonnes (pour nous, les variables)

### Description de la dimension 1 pour 4 colonnes

head(res.desc[[1]]$col, 6)
##                 coord
## MCMULLIN -0.615083026
## TRUMP    -0.204308474
## JOHNSON  -0.002025339
## CLINTON   0.181385328
## OTHERS    0.331693239
## STEIN     0.370422416
  • Aide sur l’axe 2

– Pour les lignes (pour nous, les individus)

### Description de la dimension 2 pour toutes les lignes
res.desc[[2]]$row
##            coord
## 7  -0.1067511718
## 31 -0.1010793519
## 14 -0.0989545928
## 11 -0.0866741350
## 10 -0.0784244111
## 33 -0.0725024064
## 8  -0.0651704284
## 9  -0.0636211097
## 44 -0.0619637128
## 25 -0.0531907195
## 20 -0.0394567908
## 23 -0.0374643079
## 41 -0.0353876449
## 18 -0.0289704898
## 19 -0.0280531986
## 36 -0.0220016237
## 5  -0.0213653057
## 15 -0.0205092543
## 46 -0.0181646964
## 21 -0.0108132999
## 12 -0.0031590426
## 26  0.0001444391
## 34  0.0016585049
## 17  0.0030827690
## 39  0.0040494157
## 37  0.0127713872
## 43  0.0159492688
## 22  0.0375090759
## 1   0.0412235166
## 27  0.0437784781
## 6   0.0458230035
## 32  0.0505184668
## 49  0.0537096547
## 48  0.0538381287
## 4   0.0681286759
## 3   0.0688930738
## 30  0.0842851961
## 40  0.0959180999
## 24  0.1041334827
## 42  0.1077247448
## 16  0.1208986857
## 51  0.1246861541
## 13  0.1308037272
## 28  0.1767186304
## 29  0.2215894131
## 35  0.2852542645
## 38  0.3040436991
## 47  0.3252257067
## 50  0.4130031193
## 2   0.4487503642
## 45  0.6312288427

– Pour les colonnes (pour nous, les variables)

### Description de la dimension 2 pour toutes les colonnes

res.desc[[2]]$col
##                coord
## CLINTON  -0.03423862
## TRUMP     0.00330614
## STEIN     0.13429959
## JOHNSON   0.15676959
## MCMULLIN  0.53598318
## OTHERS    0.96861765

6.4 Exporter des résultats

  • Exporter des pdf ou des png

– En premier, création des graphes

# Scree plot
scree.plot <- fviz_eig(res.presidUSA16.ca)

# Biplot of row and column variables
biplot.ca <- fviz_ca_biplot(res.presidUSA16.ca)

– En second, export des graphes

library(ggpubr)

## Export d'un pdf (un graphe par page)
ggexport(plotlist = list(scree.plot, biplot.ca), 
         filename = "res.presidUSA16.ca.pdf")

## Export d'un png par graphe
ggexport(plotlist = list(scree.plot, biplot.ca), 
         filename = "res.presidUSA16.ca.png")
## [1] "res.presidUSA16.ca%03d.png"
  • Exporter des résultats en txt ou csv

A l’aide de write.table() [package FactoMineR], write.infile semble inaccessible à la date de rédaction !

# Export into a TXT file de la qualité de représentation des variables
write.table(res.presidUSA16.ca$col$cos2, "res.presidUSA16.ca$col$cos2.txt", sep = "\t")

# Export into a CSV file des contributions des individus
write.table(res.presidUSA16.ca$row$contrib, file="res.presidUSA16.ca$row$contrib.csv", col.names=TRUE, sep = ";")

# Export into a CSV file des coordonnées des individus
write.table(res.presidUSA16.ca$row$coord, file="res.presidUSA16.ca$row$coord.csv", col.names=TRUE, sep = ";")

7. Le couteau suisse

Le package FactoInvestigate décrit et interprète automatiquement les résultats de votre analyse factorielle (ACP, AFC ou ACM) en choisissant les graphes les plus appropriés pour le rapport (sources : http://factominer.free.fr/reporting/index_fr.html, mais ce package semble inaccessible à la date de rédaction !)

# install.packages("FactoInvestigate")

# library("FactoInvestigate")

# Investigate(res.presidUSA16.ca)