title: “Analyse de l’accès à l’électricité en Afrique subsaharienne”

author: “KOUAME Ange Anselme, NGAMGOU WEMBE Carelle, OUEDRAOGO Pingdwendé Rodolphe”

output: html_document —

Qu’est-ce que l’Analyse en Composantes Principales (ACP) ?

Définition

L’Analyse en Composantes Principales (ACP) est une méthode statistique multivariée utilisée pour analyser et simplifier des ensembles de données composés de nombreuses variables quantitatives. Elle est largement utilisée dans des domaines comme la biostatistique, le marketing et la sociologie pour extraire les informations clés contenues dans des bases de données complexes.

L’ACP permet de réduire la dimensionnalité des données en projetant les observations d’un espace à plusieurs dimensions vers un espace de dimensions inférieures, tout en conservant un maximum d’information. Cette réduction se fait en ordonnant les nouvelles dimensions, appelées axes principaux ou facteurs, de manière à expliquer la variance des données. Si les deux ou trois premiers axes expliquent une grande partie de la variance, il devient alors possible de visualiser les données dans un graphique à 2 ou 3 dimensions, facilitant ainsi l’interprétation des résultats.

Les packages suivants seront utilisés dans la suite de l’analyse.

library(readxl)
## Warning: package 'readxl' was built under R version 4.4.2
library(FactoMineR)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(Factoshiny)
## Loading required package: shiny
## Loading required package: FactoInvestigate
library(ggrepel)
library(corrplot)  
## corrplot 0.94 loaded
library(ggplot2)   
library(car)       
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:psych':
## 
##     logit

#Importation et préparation des données

RTI_DONNEES_A_ANALYSER <- read_excel("C:/Users/HP/Desktop/RStudio_GEE/RTI PROJET/RTI DONNEES A ANALYSER.xlsx",
                                     col_types = c("text", "numeric", "numeric", 
                                                   "numeric", "numeric", "numeric", 
                                                   "numeric", "numeric", "numeric", 
                                                   "numeric", "numeric", "numeric",  
                                                   "numeric"))
View(RTI_DONNEES_A_ANALYSER)

data <- RTI_DONNEES_A_ANALYSER

str(data)  
## tibble [16 × 13] (S3: tbl_df/tbl/data.frame)
##  $ Pays                  : chr [1:16] "Benin" "Burkina Faso" "Cabo Verde" "Côte d'Ivoire" ...
##  $ Accès_élec_rural      : num [1:16] 17.99 4.75 96.86 45.19 31.23 ...
##  $ Accès_élec_urb        : num [1:16] 67 67.6 94.9 94.9 82.6 ...
##  $ Prod_élec             : num [1:16] 1.13 0.76 0.42 11.35 0.5 ...
##  $ Demd_élec             : num [1:16] 1.82 2.28 0.42 10.8 0.5 ...
##  $ Taux_prod_enr         : num [1:16] 0.02 0.23 0.07 2.71 0 7.68 2.02 0 0.53 1.09 ...
##  $ Taux_prod_fossil      : num [1:16] 98.2 69.7 83.3 76.1 100 ...
##  $ PIB_habt              : num [1:16] 3322 2176 6357 5316 2077 ...
##  $ Taux_croiss_pop       : num [1:16] 2.556 2.339 0.691 2.475 2.341 ...
##  $ Taux_pop_accès_élec   : num [1:16] 42 19 95.5 71.1 63.7 ...
##  $ Coût_moy_elct         : num [1:16] 0.195 0.218 0.236 0.103 0.2 0.125 0.033 0.323 0.299 0.375 ...
##  $ Invest_infrast_énergie: num [1:16] 1.58e+07 1.12e+08 8.00e+07 4.16e+08 8.23e+07 ...
##  $ Impo_énergie          : num [1:16] 0.69 1.52 0 -0.55 0 -1.69 0 0 0 0.16 ...
summary(data)  
##      Pays           Accès_élec_rural Accès_élec_urb    Prod_élec      
##  Length:16          Min.   : 3.000   Min.   :49.51   Min.   : 0.0800  
##  Class :character   1st Qu.: 8.826   1st Qu.:66.69   1st Qu.: 0.6875  
##  Mode  :character   Median :19.762   Median :89.45   Median : 0.9900  
##                     Mean   :27.804   Mean   :80.68   Mean   : 5.5950  
##                     3rd Qu.:34.278   3rd Qu.:94.88   3rd Qu.: 4.1175  
##                     Max.   :96.856   Max.   :96.87   Max.   :36.0600  
##    Demd_élec      Taux_prod_enr   Taux_prod_fossil    PIB_habt   
##  Min.   : 0.080   Min.   :0.000   Min.   :  5.00   Min.   :1187  
##  1st Qu.: 0.710   1st Qu.:0.065   1st Qu.: 66.30   1st Qu.:2015  
##  Median : 1.845   Median :0.365   Median : 75.12   Median :2408  
##  Mean   : 5.754   Mean   :1.542   Mean   : 70.21   Mean   :3200  
##  3rd Qu.: 4.315   3rd Qu.:1.518   3rd Qu.: 85.83   3rd Qu.:4978  
##  Max.   :36.060   Max.   :8.010   Max.   :100.00   Max.   :6357  
##  Taux_croiss_pop Taux_pop_accès_élec Coût_moy_elct    Invest_infrast_énergie
##  Min.   :0.691   Min.   :18.60       Min.   :0.0330   Min.   :1.442e+07     
##  1st Qu.:2.192   1st Qu.:34.28       1st Qu.:0.1273   1st Qu.:5.200e+07     
##  Median :2.351   Median :50.54       Median :0.1720   Median :8.117e+07     
##  Mean   :2.339   Mean   :51.27       Mean   :0.1862   Mean   :2.378e+08     
##  3rd Qu.:2.506   3rd Qu.:64.77       3rd Qu.:0.2225   3rd Qu.:2.069e+08     
##  Max.   :3.220   Max.   :95.52       Max.   :0.3750   Max.   :1.533e+09     
##   Impo_énergie    
##  Min.   :-1.6900  
##  1st Qu.: 0.0000  
##  Median : 0.0000  
##  Mean   : 0.1594  
##  3rd Qu.: 0.4050  
##  Max.   : 1.5200

#Matrice de corrélation

cor_matrix <- cor(data[, -1], use = "complete.obs")  

corrplot(cor_matrix, 
         method = "color",         
         col = colorRampPalette(c("blue", "white", "red"))(200), 
         type = "upper",           
         tl.col = "black",         
         tl.srt = 45,              
         addCoef.col = "black",    
         number.cex = 0.5,         
         cl.cex = 0.7,             
         tl.cex = 0.7,             
         mar = c(0, 0, 2, 0),      
         diag = FALSE,             
         title = "Matrice de Corrélation", 
         addshade = "positive"     
)

Les principales observations révèlent une forte corrélation positive entre la production et la demande d’électricité, ainsi qu’entre l’accès à l’électricité en milieu rural et urbain, tandis que des corrélations négatives apparaissent entre l’investissement en infrastructures énergétiques et le coût moyen de l’électricité, ainsi qu’entre le PIB par habitant et la production d’énergie fossile et renouvelable, tandis que des variables comme le taux de croissance de la population montrent des corrélations faibles ou non significatives avec les variables énergétiques.

#Tests d’adéquation pour l’ACP

n <- nrow(data)  
cortest.bartlett(cor_matrix, n = n)  
## $chisq
## [1] 510.9808
## 
## $p.value
## [1] 5.195024e-70
## 
## $df
## [1] 66

#Analyse en Composantes Principales (ACP)

data <- as.data.frame(data)  

pays <- c("Benin", "Burkina Faso", "Cape Verde", "Cote d'Ivoire", "Gambia", "Ghana", "Guinea", 
          "Guinea-Bissau", "Liberia", "Mali", "Mauritania", "Niger", "Nigeria", "Senegal", 
          "Sierra Leone", "Togo")
rownames(data) <- pays

resultats_acp <- PCA(X = data[, -1],   
                     scale.unit = TRUE, 
                     quanti.sup = c(10, 11, 12),  
                     ind.sup = c(3),  
                     graph = FALSE)

print(resultats_acp$var)  
## $coord
##                          Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## Accès_élec_rural     0.8180185  0.1818202 -0.38183581 -0.24001940  0.146752813
## Accès_élec_urb       0.6770408  0.5646501 -0.16800951  0.33332383  0.118882827
## Prod_élec            0.8972007 -0.2678076  0.33241887  0.03816650  0.085577220
## Demd_élec            0.8785268 -0.2646986  0.37576245  0.03933819  0.093734935
## Taux_prod_enr        0.9201949 -0.2895895  0.16492119  0.07738831  0.109525517
## Taux_prod_fossil     0.1477429  0.6520103  0.41496689 -0.61286617 -0.027977315
## PIB_habt             0.8300435  0.1472967  0.06110826  0.16676235 -0.501645174
## Taux_croiss_pop     -0.4171328  0.6803181  0.35476248  0.42438655  0.110811429
## Taux_pop_accès_élec  0.8500561  0.3217055 -0.37417915 -0.04728672  0.007405863
## 
## $cor
##                          Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## Accès_élec_rural     0.8180185  0.1818202 -0.38183581 -0.24001940  0.146752813
## Accès_élec_urb       0.6770408  0.5646501 -0.16800951  0.33332383  0.118882827
## Prod_élec            0.8972007 -0.2678076  0.33241887  0.03816650  0.085577220
## Demd_élec            0.8785268 -0.2646986  0.37576245  0.03933819  0.093734935
## Taux_prod_enr        0.9201949 -0.2895895  0.16492119  0.07738831  0.109525517
## Taux_prod_fossil     0.1477429  0.6520103  0.41496689 -0.61286617 -0.027977315
## PIB_habt             0.8300435  0.1472967  0.06110826  0.16676235 -0.501645174
## Taux_croiss_pop     -0.4171328  0.6803181  0.35476248  0.42438655  0.110811429
## Taux_pop_accès_élec  0.8500561  0.3217055 -0.37417915 -0.04728672  0.007405863
## 
## $cos2
##                          Dim.1      Dim.2      Dim.3       Dim.4        Dim.5
## Accès_élec_rural    0.66915430 0.03305858 0.14579859 0.057609311 2.153639e-02
## Accès_élec_urb      0.45838419 0.31882976 0.02822719 0.111104776 1.413313e-02
## Prod_élec           0.80496913 0.07172092 0.11050231 0.001456682 7.323461e-03
## Demd_élec           0.77180926 0.07006533 0.14119742 0.001547493 8.786238e-03
## Taux_prod_enr       0.84675873 0.08386209 0.02719900 0.005988950 1.199584e-02
## Taux_prod_fossil    0.02182796 0.42511750 0.17219752 0.375604948 7.827302e-04
## PIB_habt            0.68897225 0.02169632 0.00373422 0.027809682 2.516479e-01
## Taux_croiss_pop     0.17399976 0.46283275 0.12585642 0.180103941 1.227917e-02
## Taux_pop_accès_élec 0.72259539 0.10349446 0.14001004 0.002236034 5.484681e-05
## 
## $contrib
##                          Dim.1     Dim.2      Dim.3      Dim.4       Dim.5
## Accès_élec_rural    12.9719504  2.078270 16.2953935  7.5458012  6.55518625
## Accès_élec_urb       8.8860477 20.043643  3.1548540 14.5527613  4.30180200
## Prod_élec           15.6048010  4.508828 12.3504531  0.1907996  2.22909470
## Demd_élec           14.9619775  4.404747 15.7811376  0.2026942  2.67433084
## Taux_prod_enr       16.4149171  5.272098  3.0399362  0.7844466  3.65126024
## Taux_prod_fossil     0.4231478 26.725558 19.2459089 49.1976075  0.23824524
## PIB_habt            13.3561332  1.363967  0.4173606  3.6425767 76.59588593
## Taux_croiss_pop      3.3730878 29.096576 14.0665280 23.5904320  3.73750067
## Taux_pop_accès_élec 14.0079376  6.506312 15.6484280  0.2928809  0.01669412
print(resultats_acp$ind)  
## $coord
##                    Dim.1      Dim.2      Dim.3      Dim.4       Dim.5
## Benin         -0.9888137  0.6196749  0.5354085 -0.8834044 -0.70231982
## Burkina Faso  -1.8875390 -0.7782737  0.5531029 -0.2936205 -0.25670878
## Cote d'Ivoire  2.3158395  0.9415065 -0.4123286  0.2141739 -0.63242778
## Gambia        -0.2920746  1.0950659 -0.7100700 -1.2872969  0.28542729
## Ghana          5.0753062 -0.5781655 -1.0072583 -0.4526971  0.12779134
## Guinea        -0.2593137 -0.3462912 -0.8339514  1.2380324  0.32978227
## Guinea-Bissau -1.5821835 -0.1913146  0.2800234 -1.7011861 -0.16205959
## Liberia       -2.1026606 -2.3148530 -0.5274243 -0.2647622 -0.06762409
## Mali          -0.5183653  1.4745593  0.1268143  1.2114706  0.88443080
## Mauritania    -0.4327872  1.2331338  0.4839778  1.3327876 -1.42586210
## Niger         -2.5418411  0.9771236  1.7537225  0.0672451  0.79744428
## Nigeria        4.5846016 -1.6878562  2.1866957  0.1622341  0.24591330
## Senegal        1.1933884  1.1144364 -0.7222043 -0.1717598  0.17043581
## Sierra Leone  -2.2797771 -2.3573670 -0.8197446  0.9305056 -0.03004772
## Togo          -0.2837798  0.7986209 -0.8867636 -0.1017223  0.43582480
## 
## $cos2
##                    Dim.1       Dim.2       Dim.3        Dim.4        Dim.5
## Benin         0.32436263 0.127388320 0.095098208 0.2588934181 1.636333e-01
## Burkina Faso  0.70414317 0.119710945 0.060461792 0.0170389090 1.302419e-02
## Cote d'Ivoire 0.76206676 0.125957120 0.024158115 0.0065179220 5.683266e-02
## Gambia        0.02267549 0.318749433 0.134020514 0.4404801767 2.165509e-02
## Ghana         0.92152914 0.011958837 0.036296631 0.0073316208 5.842348e-04
## Guinea        0.02555723 0.045577016 0.264328804 0.5825416972 4.133497e-02
## Guinea-Bissau 0.44864176 0.006559672 0.014053185 0.5186682334 4.706905e-03
## Liberia       0.43218089 0.523810318 0.027192396 0.0068523458 4.470232e-04
## Mali          0.05634475 0.455938252 0.003372234 0.3077565299 1.640247e-01
## Mauritania    0.03218925 0.261325938 0.040254366 0.3052699201 3.493954e-01
## Niger         0.54558503 0.080624068 0.259709258 0.0003818449 5.369902e-02
## Nigeria       0.72235132 0.097907545 0.164331943 0.0009045437 2.078305e-03
## Senegal       0.42555421 0.371109327 0.155851662 0.0088152463 8.679866e-03
## Sierra Leone  0.41947290 0.448511444 0.054234582 0.0698806793 7.286892e-05
## Togo          0.03261875 0.258336447 0.318507821 0.0041911818 7.693576e-02
## 
## $contrib
##                     Dim.1      Dim.2      Dim.3       Dim.4       Dim.5
## Benin          1.26362062  1.6093640  2.1359484  6.81460311 10.00900152
## Burkina Faso   4.60446974  2.5385826  2.2794612  0.75282512  1.33721847
## Cote d'Ivoire  6.93113999  3.7151228  1.2667976  0.40054792  8.11601399
## Gambia         0.11024920  5.0258210  3.7568393 14.47034347  1.65314858
## Ghana         33.28988125  1.4009767  7.5596558  1.78952114  0.33137806
## Guinea         0.08690377  0.5025849  5.1820520 13.38398457  2.20686376
## Guinea-Bissau  3.23520234  0.1533990  0.5842639 25.27115380  0.53293024
## Liberia        5.71381413 22.4581197  2.0727196  0.61211565  0.09279482
## Mali           0.34726393  9.1127835  0.1198275 12.81584281 15.87262008
## Mauritania     0.24206752  6.3730446  1.7453043 15.51112601 41.25493988
## Niger          8.34996277  4.0015256 22.9161710  0.03948597 12.90391817
## Nigeria       27.16382663 11.9398106 35.6284559  0.22982945  1.22711408
## Senegal        1.84056579  5.2051963  3.8863367  0.25761110  0.58944410
## Sierra Leone   6.71695629 23.2906139  5.0069982  7.56065459  0.01832079
## Togo           0.10407604  2.6730547  5.8591688  0.09035528  3.85429347
## 
## $dist
##         Benin  Burkina Faso Cote d'Ivoire        Gambia         Ghana 
##      1.736197      2.249394      2.652845      1.939615      5.286981 
##        Guinea Guinea-Bissau       Liberia          Mali    Mauritania 
##      1.622066      2.362147      3.198427      2.183782      2.412231 
##         Niger       Nigeria       Senegal  Sierra Leone          Togo 
##      3.441257      5.394204      1.829382      3.519982      1.571259

#Visualisation des résultats de l’ACP

fviz_pca_ind(resultats_acp)  

fviz_pca_var(resultats_acp, repel = TRUE)  

fviz_pca_biplot(resultats_acp, repel = TRUE)  

#Valeurs Propres et Scree Plot

eig.val <- get_eigenvalue(resultats_acp)

eig.df <- data.frame(
  Dimension = 1:nrow(eig.val),   
  Variance = eig.val[, 2],       
  Label = paste0(round(eig.val[, 2], 1), "%")  
)

fviz_eig(resultats_acp, addlabels = FALSE, ylim = c(0, max(eig.val[, 2]) + 10)) +  
  geom_text(
    data = eig.df,                 
    aes(
      x = Dimension,               
      y = Variance + 3,            
      label = Label                
    ),
    size = 5,                      
    fontface = "bold",             
    color = "black"                
  ) +
  labs(
    title = "Scree plot avec pourcentages",
    x = "Dimensions",
    y = "Pourcentage de variance expliquée"
  ) +
  theme_minimal()

L’inertie des axes factoriels permet de déterminer quels axes sont significatifs pour l’analyse. Dans cette étude, les deux premiers axes expliquent 74,99% de la variabilité totale, un pourcentage bien supérieur à la référence de 54,13% obtenue par simulation. Le premier axe, qui à lui seul explique 57,32% de la variabilité, est particulièrement dominant. Conformément au critère de Kaiser (valeurs propres > 1), les deux premiers axes ont été retenus, car ils capturent une grande majorité de l’information, bien au-delà du quantile 0,95 des inerties simulées.

#Contribution des Variables aux Composantes

fviz_contrib(resultats_acp, choice = "var", axes = 1, top = 10)

fviz_contrib(resultats_acp, choice = "var", axes = 2, top = 10)

Les variables les plus influentes pour le premier axe (Dim1) sont la production d’électricité, la demande d’électricité et le taux de production d’énergie renouvelable, ce qui permet de distinguer certains pays sur cet axe. Pour le second axe (Dim2), les variables clés sont le taux de croissance de la population et le taux de production d’énergie fossile, permettant de différencier les pays selon leur dynamique démographique et leur dépendance aux énergies fossiles.

#Classification Hiérarchique sur Composantes Principales (HCPC)

resultats_hcpc <- HCPC(resultats_acp, graph = FALSE)

fviz_dend(resultats_hcpc, 
          cex = 0.7,                   
          palette = "jco",             
          rect = TRUE,                 
          rect_fill = TRUE,            
          rect_border = "jco",         
          labels_track_height = 0.8)   
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

fviz_cluster(resultats_hcpc, 
             repel = TRUE,            
             show.clust.cent = TRUE,  
             palette = "jco",         
             ggtheme = theme_minimal(), 
             title = "Représentation des Clustgroupes.")
## Warning: argument title is deprecated; please use main instead.

Les résultats montrent que l’analyse hiérarchique a permis de regrouper les pays en trois clusters principaux. Le premier cluster inclut des pays comme le Nigéria et le Ghana, qui se distinguent par des profils énergétiques et socio-économiques particuliers. Le deuxième cluster regroupe la Mauritanie, le Mali, le Ghana, la Gambie, le Togo, le Sénégal, et la Côte d’Ivoire, qui partagent des caractéristiques similaires. Enfin, le troisième cluster comprend des pays comme la Sierra Leone, le Libéria, le Niger, le Burkina Faso, la Guinée-Bissau, et le Bénin, qui, bien qu’ils aient des profils énergétiques et socio-économiques variés, sont plus proches les uns des autres que des autres groupes.

#Régression Linéaire pour Prédictions

data_filtrée <- subset(data, pays != "Cape Verde")

library(ggplot2)

modele_lm <- lm(Taux_pop_accès_élec ~ PIB_habt + Invest_infrast_énergie, data = data_filtrée)

summary(modele_lm)
## 
## Call:
## lm(formula = Taux_pop_accès_élec ~ PIB_habt + Invest_infrast_énergie, 
##     data = data_filtrée)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -21.087  -7.326  -2.160   8.930  24.825 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)  
## (Intercept)            2.089e+01  8.408e+00   2.485   0.0287 *
## PIB_habt               8.184e-03  2.708e-03   3.023   0.0106 *
## Invest_infrast_énergie 1.195e-08  1.038e-08   1.151   0.2721  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14.31 on 12 degrees of freedom
## Multiple R-squared:  0.5545, Adjusted R-squared:  0.4803 
## F-statistic: 7.469 on 2 and 12 DF,  p-value: 0.007816
par(mfrow = c(2, 2))
plot(modele_lm)

par(mfrow = c(1, 1))
plot(modele_lm$residuals, main = "Résidus du modèle", xlab = "Index", ylab = "Résidus")
abline(h = 0, col = "red", lty = 2)

correlation_matrix <- cor(data_filtrée[, c("PIB_habt", "Invest_infrast_énergie")])
print("Matrice de corrélation :")
## [1] "Matrice de corrélation :"
print(correlation_matrix)
##                         PIB_habt Invest_infrast_énergie
## PIB_habt               1.0000000              0.3619101
## Invest_infrast_énergie 0.3619101              1.0000000
nouvelles_donnees <- data.frame(
  PIB_habt = c(1500, 2500, 3000),
  Invest_infrast_énergie = c(400, 700, 1000)
)

predictions <- predict(modele_lm, newdata = nouvelles_donnees)
print("Prédictions :")
## [1] "Prédictions :"
print(predictions)
##        1        2        3 
## 33.16944 41.35385 45.44605
nouvelles_donnees$Taux_Electricite_Predit <- predictions
print("Nouvelles données avec prédictions :")
## [1] "Nouvelles données avec prédictions :"
print(nouvelles_donnees)
##   PIB_habt Invest_infrast_énergie Taux_Electricite_Predit
## 1     1500                    400                33.16944
## 2     2500                    700                41.35385
## 3     3000                   1000                45.44605