<- read.csv2("DEV-AFRIC-2018/afrika_don.csv")
don <- read.csv2("DEV-AFRIC-2018/afrika_don_meta.csv")
meta <- st_read("DEV-AFRIC-2018/afrika_map.shp",quiet = T) map
Exo 1 : Développement des pays africains en 2018 (ACP-CAH)
Introduction
Le but de cet exercice est :
- De montrer les commandes R permettant de réaliser une ACP et une CAH
- D’apprendre à interpréter les résultats.
- De cartographier les axes factoriels et les classes obtenues
En préalable à cet exercice il est indispensable d’avoir bien maîtrisé les fondements théoriques des deux méthodes d’ACP et de CAH qui sont discutés sur ce site. On peut également trouver une présentation plus approfondie sur le plan statistique dans le MOOC de cours de François Husson en suivant les liens suivants
CHOIX DES DONNEES
Le chargement des données s’effectue à l’aide de trois fichiers qui peuvent être importées dans R mais aussi bien dans d’autres logiciels de statistique (format .csv) ou de cartographie (format .shp).
Liste des variables
kable(meta, caption = "Défintion et source des variables")
Code | Definition | Souce |
---|---|---|
iso3 | ISO3 code of country | Human Development Report 2020 |
name | English name of country | Human Development Report 2020 |
nom | French name of country | Human Development Report 2020 |
POP | Population (Millions inhabitants) | Human Development Report 2020 |
PIB | Gross Domestic Product ($ per capita ppp) | Human Development Report 2020 |
IDH | Human Development Index | Human Development Report 2020 |
ADOFEC | Adolescent birth rate (births per 1,000 women ages 15-19) | Human Development Report 2020 |
CO2HAB | Carbon Dioxyde Emissions per capita (tonnes) | Human Development Report 2020 |
EMPAGR | Employment in agriculture (% of total employment) | Human Development Report 2020 |
EMPSER | Employment in services (% of total employment) | Human Development Report 2020 |
INTERN | Internet users, total (% of population) | Human Development Report 2020 |
ESPVIE | Life expectancy at birth (years) | Human Development Report 2020 |
AGEMED | Median age (years) | Human Development Report 2020 |
TELMOB | Mobile phone subscriptions (per 100 people) | Human Development Report 2020 |
MORINF | Mortality rate, infant (per 1,000 live births) | Human Development Report 2020 |
TXMIGR | Net migration rate (per 1,000 people) | Human Development Report 2020 |
DVIEUX | Old-age (65 and older) dependency ratio (per 100 people ages 15-64) | Human Development Report 2020 |
TUBERC | Tuberculosis incidence (per 100,000 people) | Human Development Report 2020 |
URBANI | Urban population (%) | Human Development Report 2020 |
DJEUNE | Young age (0-14) dependency ratio (per 100 people ages 15-64) | Human Development Report 2020 |
SUBREG | United Nation subregions in Africa | Human Development Report 2020 |
LOCKED | Landlocked country (0/1) | CEPII |
COLFRA | Colonisation by France (0/1) | CEPII |
COLGBR | Colonisation by United Kingdom (0/1) | CEPII |
LANGFR | French official langage (0/1) | CEPII |
LANGEN | English official langage(0/1) | CEPII |
Paramètres principaux
On résume rapidement les variables retenues ce qui permet de constater qu’elles sont toutes complètes sauf la variable X1_PIB pour laquelle il y a trois valeurs manquantes.
summary(don)
iso3 name nom POP
Length:49 Length:49 Length:49 Min. : 0.9662
Class :character Class :character Class :character 1st Qu.: 4.8782
Mode :character Mode :character Mode :character Median : 15.2256
Mean : 26.2713
3rd Qu.: 30.0925
Max. :198.4191
PIB IDH ADOFEC CO2HAB
Min. : 756.6 Min. :0.3925 Min. : 5.814 Min. :0.02423
1st Qu.: 2014.9 1st Qu.:0.4783 1st Qu.: 65.995 1st Qu.:0.17041
Median : 3289.4 Median :0.5317 Median : 92.262 Median :0.33470
Mean : 5168.8 Mean :0.5455 Mean : 92.836 Mean :1.07945
3rd Qu.: 6437.0 3rd Qu.:0.5903 3rd Qu.:120.468 3rd Qu.:1.05493
Max. :19458.9 Max. :0.7470 Max. :188.314 Max. :8.09036
NA's :3 NA's :1
EMPAGR EMPSER INTERN ESPVIE
Min. : 5.128 Min. : 6.498 Min. : 1.309 Min. :53.04
1st Qu.:30.375 1st Qu.:27.744 1st Qu.: 9.800 1st Qu.:59.80
Median :43.752 Median :41.351 Median :20.000 Median :63.17
Mean :46.174 Mean :39.652 Mean :25.381 Mean :63.21
3rd Qu.:64.448 3rd Qu.:49.136 3rd Qu.:42.000 3rd Qu.:66.33
Max. :92.017 Max. :71.846 Max. :64.804 Max. :76.79
AGEMED TELMOB MORINF TXMIGR
Min. :15.15 Min. : 20.36 Min. :10.24 Min. :-15.902
1st Qu.:17.84 1st Qu.: 47.72 1st Qu.:32.70 1st Qu.: -1.277
Median :19.20 Median : 88.18 Median :42.14 Median : -0.339
Mean :20.31 Mean : 82.81 Mean :45.33 Mean : -1.103
3rd Qu.:21.51 3rd Qu.:104.45 3rd Qu.:59.40 3rd Qu.: 0.131
Max. :32.84 Max. :153.25 Max. :84.46 Max. : 12.443
DVIEUX TUBERC URBANI DJEUNE
Min. : 3.802 Min. : 12.0 Min. :13.20 Min. : 35.93
1st Qu.: 4.977 1st Qu.: 93.0 1st Qu.:32.20 1st Qu.: 63.06
Median : 5.466 Median :186.0 Median :43.60 Median : 75.62
Mean : 5.961 Mean :222.3 Mean :45.37 Mean : 72.68
3rd Qu.: 6.274 3rd Qu.:308.0 3rd Qu.:56.70 3rd Qu.: 83.04
Max. :12.555 Max. :611.0 Max. :89.55 Max. :105.10
SUBREG LOCKED COLFRA COLGBR
Length:49 Min. :0.0000 Min. :0.0000 Min. :0.0000
Class :character 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
Mode :character Median :0.0000 Median :0.0000 Median :0.0000
Mean :0.3265 Mean :0.4082 Mean :0.3878
3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:1.0000
Max. :1.0000 Max. :1.0000 Max. :1.0000
LANGFR LANGEN
Min. :0.000 Min. :0.0000
1st Qu.:0.000 1st Qu.:0.0000
Median :0.000 Median :0.0000
Mean :0.449 Mean :0.4286
3rd Qu.:1.000 3rd Qu.:1.0000
Max. :1.000 Max. :1.0000
Analyse en composantes principales (ACP)
Préparation du tableau
On conserve toutes les variables quantitatives sauf la population, le PIB et l’IDH et on ajoute en nom de ligne les codes des pays.
<-don[,8:20]
tabrow.names(tab)<-don$iso3
kable(head(tab), caption = "Tableau prêt pour l'ACP et la CAH")
CO2HAB | EMPAGR | EMPSER | INTERN | ESPVIE | AGEMED | TELMOB | MORINF | TXMIGR | DVIEUX | TUBERC | URBANI | DJEUNE | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AGO | 1.1209815 | 50.4490 | 41.3865 | 14.33910 | 60.9660 | 16.677 | 43.1305 | 51.58504 | 0.211 | 4.3225 | 355 | 65.85 | 91.4625 |
BDI | 0.0466776 | 92.0170 | 6.4980 | 2.66075 | 61.4135 | 17.320 | 56.5347 | 40.99260 | 0.181 | 4.3610 | 111 | 13.20 | 86.9555 |
BEN | 0.6224791 | 38.9125 | 42.1465 | 20.00000 | 61.6200 | 18.781 | 82.3843 | 60.53574 | -0.176 | 5.9895 | 56 | 47.60 | 77.7865 |
BFA | 0.1973980 | 25.5640 | 40.8700 | 16.00000 | 61.3770 | 17.551 | 97.9123 | 49.00709 | -1.282 | 4.5605 | 48 | 29.70 | 84.9065 |
BWA | 2.9573642 | 20.8570 | 61.0040 | 47.00000 | 69.4325 | 24.044 | 150.0060 | 29.98541 | 1.341 | 6.9540 | 275 | 69.80 | 54.9450 |
CAF | 0.0650827 | 77.4450 | 17.1505 | 4.33925 | 53.0425 | 17.611 | 27.6743 | 84.46370 | -8.581 | 5.3140 | 540 | 41.60 | 83.1095 |
Caclul de l’ACP
On va utiliser le package FactomineR pour réaliser l’analyse en composante principales à l’aide de la fonction PCA()
.
.
library(FactoMineR)
<- PCA(tab) monACP
Comme on peut le voir, l’application de la fonction PCA provoque l’apparition de deux graphiques, l’un relatif aux variables et l’autre aux individus. Nous allons les analyser tout à tour en ajoutant des informations additionnelles contenues dans l’objet monACP. Celui-ci contient en effet un grand nombre de résultats qu’il suffit d’extraire :
names(monACP)
[1] "eig" "var" "ind" "svd" "call"
Analyse des valeurs propres
L’analyse des valeurs propres permet de savoir quelle est la part de variance prise en compte par chacun des facteurs (on dit aussi composantes) de l’analyse. Les facteurs sont orthogonaux c’est-à-dire statistiquement indépendants (corrélation = 0). Le premier facteur est celui qui résume le mieux le nuage de point. Puis le second facteur est celui qui résume le maximum de variance résiduelle, etc. Il y a autant de facteurs que de variables de sorte que les facteurs sont d’autant plus pertinents qu’ils résument une part de la variance supérieure à 1/k ou k est le nombre de variables. Les facteurs qui résument plus qu’une variable ont une valeur propre supérieure à 1 et doivent être interprétés en priorité.
<-monACP$eig
valpropkable(valprop,
digits=2,
caption = "Tableau des valeurs propres",
col.names = c ("Valeurs propres", "Variance (%)", "Variance cumulée (%)"))
Valeurs propres | Variance (%) | Variance cumulée (%) | |
---|---|---|---|
comp 1 | 6.79 | 52.23 | 52.23 |
comp 2 | 1.72 | 13.19 | 65.42 |
comp 3 | 1.23 | 9.50 | 74.92 |
comp 4 | 0.90 | 6.93 | 81.85 |
comp 5 | 0.62 | 4.76 | 86.61 |
comp 6 | 0.51 | 3.94 | 90.54 |
comp 7 | 0.41 | 3.18 | 93.73 |
comp 8 | 0.35 | 2.72 | 96.45 |
comp 9 | 0.20 | 1.54 | 97.99 |
comp 10 | 0.18 | 1.36 | 99.35 |
comp 11 | 0.05 | 0.35 | 99.70 |
comp 12 | 0.03 | 0.22 | 99.92 |
comp 13 | 0.01 | 0.08 | 100.00 |
- Commentaire : expliquez pourquoi on peut analyser les trois premiers facteurs
Analyse des corrélations des variables avec les facteurs
<-monACP$var$cor
corvarkable(corvar,digits=2,caption =" Corrélation des variables avec les facteurs")
Dim.1 | Dim.2 | Dim.3 | Dim.4 | Dim.5 | |
---|---|---|---|---|---|
CO2HAB | 0.75 | 0.16 | 0.16 | 0.32 | -0.02 |
EMPAGR | -0.85 | -0.26 | 0.14 | 0.27 | -0.07 |
EMPSER | 0.83 | 0.34 | -0.08 | -0.30 | 0.02 |
INTERN | 0.85 | 0.09 | -0.05 | -0.16 | 0.01 |
ESPVIE | 0.71 | -0.59 | 0.20 | 0.04 | -0.20 |
AGEMED | 0.92 | -0.13 | -0.11 | 0.28 | 0.10 |
TELMOB | 0.68 | 0.27 | 0.03 | -0.49 | -0.08 |
MORINF | -0.67 | 0.49 | -0.18 | 0.11 | 0.47 |
TXMIGR | 0.21 | 0.25 | 0.87 | 0.13 | 0.05 |
DVIEUX | 0.71 | -0.35 | -0.41 | 0.21 | 0.20 |
TUBERC | -0.05 | 0.71 | -0.31 | 0.34 | -0.50 |
URBANI | 0.68 | 0.37 | 0.22 | 0.21 | 0.19 |
DJEUNE | -0.90 | 0.03 | 0.15 | -0.23 | -0.04 |
<-monACP$var$contrib
ctrvarkable(ctrvar,digits=2,caption =" Contribution des variables aux facteurs")
Dim.1 | Dim.2 | Dim.3 | Dim.4 | Dim.5 | |
---|---|---|---|---|---|
CO2HAB | 8.21 | 1.50 | 2.13 | 11.68 | 0.06 |
EMPAGR | 10.67 | 3.82 | 1.69 | 7.95 | 0.86 |
EMPSER | 10.04 | 6.56 | 0.54 | 10.31 | 0.09 |
INTERN | 10.64 | 0.45 | 0.23 | 3.00 | 0.03 |
ESPVIE | 7.42 | 20.20 | 3.38 | 0.16 | 6.28 |
AGEMED | 12.51 | 0.93 | 0.94 | 8.55 | 1.49 |
TELMOB | 6.84 | 4.30 | 0.07 | 26.99 | 0.95 |
MORINF | 6.68 | 14.24 | 2.57 | 1.38 | 36.35 |
TXMIGR | 0.67 | 3.72 | 61.49 | 1.74 | 0.39 |
DVIEUX | 7.49 | 7.12 | 13.47 | 4.78 | 6.53 |
TUBERC | 0.04 | 29.17 | 7.76 | 12.89 | 40.66 |
URBANI | 6.81 | 7.95 | 3.99 | 4.76 | 6.08 |
DJEUNE | 11.99 | 0.05 | 1.74 | 5.82 | 0.22 |
plot.PCA(monACP,choix = "varcor",axes = c(1,2))
plot.PCA(monACP,choix = "varcor",axes = c(3,2))
Commentaire : proposez une interprétation des trois premiers facteurs
le premier facteur :
le second facteur :
le troisième facteur :
Cartographie des coordonnées des individus sur les facteurs
Nous allons maintenant examiner comment les individus se positionnent sur les facteurs. Pour cela nous allons extraire les coordonnées des individus et les contributions puis les fusionner avec le fichier sf contenant les contours des pays pour faire des cartes.
<-data.frame(monACP$ind$coord)
cooindnames(cooind)<-c("Coo1","Coo2","Coo3","Coo4","Coo5")
$iso3<-row.names(cooind)
cooind<-left_join(map,cooind)
map
<-data.frame(monACP$ind$contrib)
ctrindnames(ctrind)<-c("Ctr1","Ctr2","Ctr3","Ctr4","Ctr5")
$iso3<-row.names(ctrind)
ctrind<-left_join(map,ctrind) map
Carte du facteur 1 : donnez lui un nom
<-brewer.pal(n = 8,name = "RdYlBu")
mypal
mf_map(map,var="Coo1",
type="choro",
breaks=c(-10,-3,-2,-1,0,1,2,3,10),
pal=mypal,
leg_pos = "left",
leg_title = "Coordonnées",
leg_val_rnd = 1)
mf_map(map,var="Ctr1",
type="prop",
inches=0.05,
col="gray70",
leg_pos = "right",
leg_title = "Contributions",
)
mf_layout(title = "Facteur 1 : ...???...",
frame = T,
arrow = F,
credits = "(c) EE CIST 2023 - Source : HDR 2020"
)
Commentaire : proposez une commentaire de la carte
Carte du facteur 2 : Donnez-lui un nom
<-brewer.pal(n = 8,name = "RdYlBu")
mypal
mf_map(map,var="Coo2",
type="choro",
breaks=c(-10,-3,-2,-1,0,1,2,3,10),
pal=mypal,
leg_pos = "left",
leg_title = "Coordonnées",
leg_val_rnd = 1)
mf_map(map,var="Ctr2",
type="prop",
inches=0.05,
col="gray70",
leg_pos = "right",
leg_title = "Contributions",
)
mf_layout(title = "Facteur 2 : ...???...",
frame = T,
arrow = F,
credits = "(c) EE CIST 2023 - Source : HDR 2020"
)
Commentaire : proposez une commentaire de la carte
Carte du facteur 3 : Donnez-lui un nom
<-brewer.pal(n = 8,name = "RdYlBu")
mypal
mf_map(map,var="Coo3",
type="choro",
breaks=c(-10,-3,-2,-1,0,1,2,3,10),
pal=mypal,
leg_pos = "left",
leg_title = "Coordonnées",
leg_val_rnd = 1)
mf_map(map,var="Ctr3",
type="prop",
inches=0.05,
col="gray70",
leg_pos = "right",
leg_title = "Contributions",
)
mf_layout(title = "Facteur 3 : ...???... ",
frame = T,
arrow = F,
credits = "(c) EE CIST 2023 - Source : HDR 2020"
)
Commentaire : proposez une commentaire de la carte
Classification ascendante hiérarchique (CAH)
On effectue la classification sur le même tableau
CAH selon le critère de Ward
<- 5
nbclasses <-HCPC(monACP, nb.clust=nbclasses) maCAH
<-data.frame(maclassif=maCAH$data.clust$clust,iso3=row.names(maCAH$data.clust))
CAH
<-left_join(map,CAH) map
Commentaire : Discutez le choix du nombre de classe retenues - au besoin modifiez le programme
Interprétation des classes
$desc.var maCAH
Link between the cluster variable and the quantitative variables
================================================================
Eta2 P-value
AGEMED 0.8039374 5.060759e-15
EMPAGR 0.7686951 1.841599e-13
EMPSER 0.7396272 2.401275e-12
DJEUNE 0.6977446 6.050035e-11
ESPVIE 0.6924972 8.772653e-11
MORINF 0.6794410 2.151163e-10
INTERN 0.6756970 2.762938e-10
DVIEUX 0.6713158 3.689236e-10
TUBERC 0.5272748 8.745116e-07
URBANI 0.5050177 2.312757e-06
CO2HAB 0.4690791 1.010400e-05
TELMOB 0.4498411 2.128272e-05
Description of each cluster by quantitative variables
=====================================================
$`1`
v.test Mean in category Overall mean sd in category Overall sd
MORINF 4.095734 68.855434 45.32532 10.427182 17.581908
EMPAGR 3.292330 69.273313 46.17392 9.151047 21.471924
DJEUNE 2.156486 83.588188 72.67812 7.272691 15.482977
TUBERC 2.070014 327.625000 222.26531 145.252313 155.766803
TELMOB -2.691164 51.701775 82.80564 19.821927 35.371054
INTERN -3.079388 6.546392 25.38088 2.660927 18.718153
EMPSER -3.303503 23.673938 39.65218 7.152320 14.802263
ESPVIE -3.407514 56.976062 63.21391 2.666740 5.602355
p.value
MORINF 4.208337e-05
EMPAGR 9.936107e-04
DJEUNE 3.104577e-02
TUBERC 3.845104e-02
TELMOB 7.120325e-03
INTERN 2.074262e-03
EMPSER 9.548505e-04
ESPVIE 6.555747e-04
$`2`
v.test Mean in category Overall mean sd in category Overall sd
EMPAGR 3.436935 65.97173 46.17392 11.506355 21.47192
MORINF -1.978415 35.99367 45.32532 5.449706 17.58191
INTERN -2.035092 15.16156 25.38088 8.795731 18.71815
TELMOB -2.667714 57.49156 82.80564 23.582229 35.37105
EMPSER -3.387605 26.19991 39.65218 9.151641 14.80226
URBANI -3.982373 25.50909 45.37347 8.968906 18.59337
p.value
EMPAGR 5.883366e-04
MORINF 4.788189e-02
INTERN 4.184160e-02
TELMOB 7.636914e-03
EMPSER 7.050574e-04
URBANI 6.823045e-05
$`3`
v.test Mean in category Overall mean sd in category Overall sd
AGEMED -2.059356 18.806222 20.310653 1.4687891 3.856709
DVIEUX -2.543570 5.123806 5.960786 0.6398809 1.737191
p.value
AGEMED 0.03946019
DVIEUX 0.01097262
$`4`
v.test Mean in category Overall mean sd in category Overall sd
TUBERC 3.860261 434.857143 222.265306 131.845612 155.766803
EMPSER 3.793409 59.504571 39.652184 6.863163 14.802263
INTERN 3.673663 49.692686 25.380877 9.810010 18.718153
AGEMED 2.634130 23.902429 20.310653 2.307402 3.856709
TELMOB 2.549195 114.684743 82.805645 36.143684 35.371054
CO2HAB 2.480614 2.615599 1.079454 2.357461 1.751532
DJEUNE -3.206523 55.125429 72.678122 8.016482 15.482977
EMPAGR -3.519691 19.454286 46.173918 10.442229 21.471924
p.value
TUBERC 0.0001132660
EMPSER 0.0001485934
INTERN 0.0002390983
AGEMED 0.0084353097
TELMOB 0.0107971975
CO2HAB 0.0131156460
DJEUNE 0.0013434972
EMPAGR 0.0004320501
$`5`
v.test Mean in category Overall mean sd in category Overall sd
AGEMED 5.179263 28.863400 20.310653 2.625777 3.856709
DVIEUX 5.120339 9.769400 5.960786 2.038212 1.737191
ESPVIE 4.886679 74.936000 63.213908 2.122361 5.602355
CO2HAB 3.566990 3.754558 1.079454 2.247640 1.751532
INTERN 3.252880 51.451520 25.380877 16.178937 18.718153
URBANI 2.533100 65.540000 45.373469 12.748937 18.593372
EMPSER 2.081007 52.841500 39.652184 6.157679 14.802263
TUBERC -2.567874 51.000000 222.265306 30.086542 155.766803
EMPAGR -2.828800 20.166700 46.173918 8.832253 21.471924
MORINF -3.833633 16.465259 45.325321 3.634739 17.581908
DJEUNE -4.250530 44.499600 72.678122 6.706856 15.482977
p.value
AGEMED 2.227639e-07
DVIEUX 3.049872e-07
ESPVIE 1.025513e-06
CO2HAB 3.611057e-04
INTERN 1.142417e-03
URBANI 1.130587e-02
EMPSER 3.743331e-02
TUBERC 1.023242e-02
EMPAGR 4.672290e-03
MORINF 1.262645e-04
DJEUNE 2.132657e-05
Commentaire : Discutez le profil de chacune des classes en vous aidant des tableaux ci-dessus
Cartographie
<-brewer.pal(n = nbclasses,name = "Set3")
mypal
mf_map(map,var="maclassif",
type="typo",
pal=mypal,
leg_title = "Classes")
mf_layout(title = "Typologie du développement des pays d'Afrique en 2018",
frame = T,
arrow = F,
credits = "(c) EE CIST 2023 - Source : HDR 2020"
)
Commentaire : Commentez la distribution spataile des classes