# Chargement des packages
library(readxl)
library(dplyr)
## 
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
## 
##     filter, lag
## Les objets suivants sont masqués depuis 'package:base':
## 
##     intersect, setdiff, setequal, union
library(sf)
## Linking to GEOS 3.13.1, GDAL 3.11.4, PROJ 9.7.0; sf_use_s2() is TRUE
library(tmap)

# Chargement de la base
base <- read_excel("C:\\Users\\HP\\Desktop\\BASE1.xlsx")

# Recodage des régions
base <- base %>%
  mutate(
    Region = case_when(
      Région == 1 ~ "Dakar",
      Région == 2 ~ "Thiès",
      Région == 3 ~ "Diourbel"
    )
  )

# Tableau de répartition
tab_region <- base %>%
  group_by(Region) %>%
  summarise(
    Effectif = n()
  ) %>%
  mutate(
    Pourcentage = round(100 * Effectif / sum(Effectif), 2)
  )

# Chargement de la shapefile
senegal <- st_read("C:/Users/HP/Downloads/gadm41_SEN_shp/gadm41_SEN_1.dbf")
## Reading layer `gadm41_SEN_1' from data source 
##   `C:\Users\HP\Downloads\gadm41_SEN_shp\gadm41_SEN_1.dbf' using driver `ESRI Shapefile'
## Simple feature collection with 14 features and 11 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -17.54319 ymin: 12.30786 xmax: -11.34247 ymax: 16.69207
## Geodetic CRS:  WGS 84
# Harmonisation du nom de la région
senegal <- senegal %>%
  rename(Region = NAME_1)

# Jointure SIG
carte_region <- senegal %>%
  left_join(tab_region, by = "Region")

Analyse statistique exploratoire

Cette phase vise à décrire la structure spatiale de l’échantillon utilisé dans l’étude. Avant toute analyse socio-économique ou cartographique avancée, il est indispensable de comprendre la répartition géographique des enquêtés, afin d’évaluer la couverture territoriale de l’enquête et d’anticiper les biais potentiels liés à la concentration spatiale des observations.

Répartition des enquêtés par région

Le tableau suivant présente la distribution des ménages enquêtés selon la région d’appartenance. Il permet d’apprécier le poids relatif de chaque région dans l’échantillon.

tab_region
## # A tibble: 3 × 3
##   Region   Effectif Pourcentage
##   <chr>       <int>       <dbl>
## 1 Dakar         341       68.5 
## 2 Diourbel       40        8.03
## 3 Thiès         117       23.5

L’analyse du tableau met en évidence une forte disparité dans la répartition des enquêtés selon les régions. La région de Dakar concentre à elle seule près de 70 % de l’effectif total des ménages interrogés, tandis que Thiès et Diourbel représentent respectivement environ un quart et moins de 10 % de l’échantillon.

Cette configuration reflète le poids démographique et économique de Dakar, mais elle indique également une couverture territoriale inégale de l’enquête. Ces différences devront être prises en compte dans l’interprétation des résultats ultérieurs, notamment lors de la comparaison des indicateurs socio-économiques entre régions.

Analyse cartographique de la répartition des enquêtés

Afin de compléter l’analyse statistique, une représentation cartographique a été réalisée pour illustrer la distribution spatiale des enquêtés par région.

tmap_mode("view")
## ℹ tmap modes "plot" - "view"
## ℹ toggle with `tmap::ttm()`
tm_shape(carte_region) +
tm_basemap("OpenStreetMap") +
tm_polygons(
"Effectif",
palette = "Viridis",
style = "quantile",
alpha = 0.7,
id = "Region",
popup.vars = c(
"Région" = "Region",
"Nombre d'enquêtés" = "Effectif",
"Pourcentage (%)" = "Pourcentage"
)
) +
tm_layout(
title = "Répartition des enquêtés par région",
legend.outside = TRUE,
frame = FALSE
)
## 
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_polygons()`: instead of `style = "quantile"`, use fill.scale =
## `tm_scale_intervals()`.
## ℹ Migrate the argument(s) 'style', 'palette' (rename to 'values') to
##   'tm_scale_intervals(<HERE>)'[v3->v4] `tm_polygons()`: use `fill_alpha` instead of `alpha`.[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`[cols4all] color palettes: use palettes from the R package cols4all. Run
## `cols4all::c4a_gui()` to explore them. The old palette name "Viridis" is named
## "viridis" (in long format "matplotlib.viridis")
tmap_mode("plot")
## ℹ tmap modes "plot" - "view"
tm_shape(carte_region) +
tm_basemap("OpenStreetMap") +
tm_polygons(
"Effectif",
palette = "Viridis",
style = "quantile",
alpha = 0.7,
id = "Region",
popup.vars = c(
"Région" = "Region",
"Nombre d'enquêtés" = "Effectif",
"Pourcentage (%)" = "Pourcentage"
)
) +
tm_layout(
title = "Répartition des enquêtés par région",
legend.outside = TRUE,
frame = FALSE
)
## 
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_polygons()`: instead of `style = "quantile"`, use fill.scale =
## `tm_scale_intervals()`.
## ℹ Migrate the argument(s) 'style', 'palette' (rename to 'values') to
##   'tm_scale_intervals(<HERE>)'[v3->v4] `tm_polygons()`: use `fill_alpha` instead of `alpha`.[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`[cols4all] color palettes: use palettes from the R package cols4all. Run
## `cols4all::c4a_gui()` to explore them. The old palette name "Viridis" is named
## "viridis" (in long format "matplotlib.viridis")

La carte met en évidence une concentration spatiale très marquée des enquêtés dans la région de Dakar, confirmant les résultats issus de l’analyse statistique. Cette concentration traduit le rôle central de Dakar dans les dynamiques urbaines et de mobilité, ce qui justifie en partie son poids dans l’échantillon.

À l’inverse, les régions de Thiès et de Diourbel présentent des effectifs plus faibles, ce qui peut limiter la robustesse statistique des analyses comparatives futures. Cependant, leur inclusion demeure pertinente dans une perspective SIG, car elle permet d’identifier des contrastes régionaux utiles pour la planification des politiques de transport.

Difficultés méthodologiques rencontrées

La principale difficulté rencontrée lors de cette phase a concerné l’harmonisation des données statistiques avec la couche spatiale des régions. En effet, les noms des régions n’étaient pas directement compatibles entre la base d’enquête et la shapefile utilisée, nécessitant une étape préalable de recodage et de normalisation des variables.

Par ailleurs, la forte concentration des enquêtés dans une seule région soulève la question d’un éventuel biais d’échantillonnage, qui devra être pris en compte dans les analyses ultérieures. Ces contraintes méthodologiques ont été traitées de manière rigoureuse afin d’assurer la cohérence des résultats statistiques et cartographiques.

Transition vers les analyses suivantes

Après avoir décrit la structure spatiale de l’échantillon, l’analyse se poursuivra par l’étude des caractéristiques socio-économiques des ménages, notamment le revenu moyen par région. Cette étape permettra d’approfondir la compréhension des disparités régionales et de mieux apprécier le potentiel d’implantation d’un service de transport structurant tel que le BRT.

Analyse des revenus

Avant toute comparaison spatiale, une analyse statistique descriptive du revenu mensuel des enquêtés est réalisée afin de comprendre la distribution globale de cette variable.

base <- base %>%
  rename(
    revenu = `Quel est votre revenu mensuel (en milliers)?`
  )


summary(base$revenu)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     0.0    50.0   106.1   150.0  3000.0

L’analyse descriptive de la variable revenu des enquêtés dans les trois régions du Sénégal révèle une distribution fortement inégale. Les résultats globaux indiquent que le revenu minimum est nul, et que le premier quartile est également égal à zéro, ce qui signifie qu’au moins 25 % des enquêtés vivent sans revenu. La médiane s’élève à 50, indiquant que la moitié des enquêtés gagne moins de 50 milles FCFA et l’autre moitié gagne plus. En revanche, la moyenne est de 106,1 milliers de FCFA, nettement supérieure à la médiane, ce qui suggère une distribution asymétrique à droite : quelques individus ayant des revenus très élevés tirent la moyenne vers le haut.

Le troisième quartile est de 150, ce qui montre que 75 % des enquêtés gagnent moins ou égal à cette valeur, tandis que le revenu maximum atteint 3000, confirmant la présence de valeurs extrêmes ou de revenus exceptionnellement élevés dans l’échantillon. Ces observations soulignent que la majorité des enquêtés perçoit des revenus relativement faibles, tandis qu’une minorité bénéficie de revenus très élevés, illustrant ainsi une forte disparité économique au sein de la population étudiée.

Afin donc de permettre une analyse spatiale pertinente, le revenu mensuel est agrégé au niveau régional. Le revenu moyen par région est ainsi calculé.

tab_revenu_region <- base %>%
  group_by(Region) %>%
  summarise(
    Revenu_moyen = round(mean(revenu, na.rm = TRUE), 2),
    Effectif = n()
  )
tab_revenu_region
## # A tibble: 3 × 3
##   Region   Revenu_moyen Effectif
##   <chr>           <dbl>    <int>
## 1 Dakar            102.      341
## 2 Diourbel         146.       40
## 3 Thiès            104.      117

Le tableau des revenus mensuels moyens par région met en évidence des différences dans le niveau de revenu des enquêtés selon l’espace géographique. La région de Dakar, qui concentre le plus grand nombre d’enquêtés (341 individus), présente un revenu mensuel moyen de 102,15. Cette valeur traduit un niveau de revenu globalement modéré pour la population enquêtée dans la capitale.

La région de Thiès affiche un revenu moyen de 103,69 pour 117 enquêtés, un niveau très proche de celui observé à Dakar. Cette proximité suggère une relative similitude des revenus moyens entre ces deux régions pour les individus enquêtés.

En revanche, la région de Diourbel se distingue par un revenu mensuel moyen plus élevé, estimé à 146,25, bien que le nombre d’enquêtés y soit plus faible (40 individus). Ce niveau moyen supérieur indique que, parmi les personnes enquêtées dans cette région, les revenus déclarés sont globalement plus élevés que ceux observés à Dakar et à Thiès.

Dans l’ensemble, les résultats montrent une hétérogénéité régionale des revenus mensuels, avec des niveaux moyens relativement proches entre Dakar et Thiès, et un revenu moyen sensiblement plus élevé à Diourbel. Ces écarts traduisent des différences dans la structure des revenus des enquêtés selon les régions considérées.

carte_revenu <- senegal %>%
  left_join(tab_revenu_region, by = "Region")
tmap_mode("view")
## ℹ tmap modes "plot" - "view"
tm_shape(carte_revenu) +
  tm_basemap("OpenStreetMap") +
  tm_polygons(
    "Revenu_moyen",
    palette = "YlOrRd",
    style = "quantile",
    alpha = 0.7,
    title = "Revenu moyen mensuel\n(en milliers de FCFA)",
    id = "Region",
    popup.vars = c(
      "Région" = "Region",
      "Revenu moyen" = "Revenu_moyen",
      "Effectif" = "Effectif"
    )
  ) +
  tm_layout(
    legend.outside = TRUE,
    frame = FALSE
  )
## 
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_polygons()`: instead of `style = "quantile"`, use fill.scale =
## `tm_scale_intervals()`.
## ℹ Migrate the argument(s) 'style', 'palette' (rename to 'values') to
##   'tm_scale_intervals(<HERE>)'[v3->v4] `tm_polygons()`: use `fill_alpha` instead of `alpha`.[v3->v4] `tm_polygons()`: migrate the argument(s) related to the legend of the
## visual variable `fill` namely 'title' to 'fill.legend = tm_legend(<HERE>)'[cols4all] color palettes: use palettes from the R package cols4all. Run
## `cols4all::c4a_gui()` to explore them. The old palette name "YlOrRd" is named
## "brewer.yl_or_rd"Multiple palettes called "yl_or_rd" found: "brewer.yl_or_rd", "matplotlib.yl_or_rd". The first one, "brewer.yl_or_rd", is returned.

La carte choroplèthe révèle une structuration spatiale claire des revenus. Les régions présentant les revenus moyens les plus élevés correspondent aux pôles économiques majeurs, tandis que les régions à revenus plus faibles traduisent des dynamiques socio-économiques moins favorables.

Cette organisation spatiale met en évidence des inégalités régionales qui peuvent être liées à la concentration des activités économiques, à l’urbanisation ou à l’accès différencié aux opportunités d’emploi.

Certaines difficultés méthodologiques ont été rencontrées, notamment la nécessité de construire des indicateurs agrégés à partir de données individuelles et l’harmonisation des identifiants régionaux entre la base statistique et la shapefile. Ces étapes sont essentielles pour garantir la cohérence entre l’analyse statistique et la cartographie SIG.

Mobilité des ménages

La mobilité des ménages est appréhendée à travers plusieurs indicateurs relatifs à l’accès aux moyens de transport et au niveau d’équipement des foyers. Les variables analysées concernent l’abonnement aux transports, ainsi que la possession de véhicules motorisés et non motorisés.

base <- base %>%
  rename(
    abonnement = `Avez-vous un abonnement de transport ?`,
    voitures = `Combien de voitures possède le foyer?`,
    motos = `Combien de motos possède le foyer?`,
    velos = `Combien de vélos possède le foyer?`
  )
summary(base[, c("voitures", "motos", "velos")])
##     voitures          motos            velos       
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :0.0000   Median :0.0000   Median :0.0000  
##  Mean   :0.4779   Mean   :0.2369   Mean   :0.1787  
##  3rd Qu.:1.0000   3rd Qu.:0.0000   3rd Qu.:0.0000  
##  Max.   :5.0000   Max.   :4.0000   Max.   :3.0000

L’analyse descriptive met en évidence une hétérogénéité du niveau d’équipement des ménages en moyens de transport. La possession de véhicules motorisés varie sensiblement d’un ménage à l’autre, traduisant des différences de capacité de mobilité.

tab_mobilite_region <- base %>%
  group_by(Region) %>%
  summarise(
    Taux_abonnement = round(mean(abonnement == "Oui", na.rm = TRUE) * 100, 2),
    Voitures_moy = round(mean(voitures, na.rm = TRUE), 2),
    Motos_moy = round(mean(motos, na.rm = TRUE), 2),
    Velos_moy = round(mean(velos, na.rm = TRUE), 2)
  )
tab_mobilite_region
## # A tibble: 3 × 5
##   Region   Taux_abonnement Voitures_moy Motos_moy Velos_moy
##   <chr>              <dbl>        <dbl>     <dbl>     <dbl>
## 1 Dakar                  0         0.53      0.25      0.23
## 2 Diourbel               0         0.32      0.32      0.12
## 3 Thiès                  0         0.38      0.18      0.04

Les résultats révèlent des disparités régionales notables en matière de mobilité. Certaines régions présentent un taux d’abonnement plus élevé aux transports, tandis que d’autres se caractérisent par une motorisation plus importante des ménages.

carte_mobilite <- senegal %>%
  left_join(tab_mobilite_region, by = "Region")
tmap_mode("view")
## ℹ tmap modes "plot" - "view"
tm_shape(carte_mobilite) +
  tm_basemap("OpenStreetMap") +
  tm_polygons(
    "Voitures_moy",
    palette = "Blues",
    style = "quantile",
    alpha = 0.7,
    title = "Nombre moyen de voitures\npar ménage",
    id = "Region",
    popup.vars = c(
      "Région" = "Region",
      "Voitures moyennes" = "Voitures_moy"
    )
  )
## 
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_polygons()`: instead of `style = "quantile"`, use fill.scale =
## `tm_scale_intervals()`.
## ℹ Migrate the argument(s) 'style', 'palette' (rename to 'values') to
##   'tm_scale_intervals(<HERE>)'[v3->v4] `tm_polygons()`: use `fill_alpha` instead of `alpha`.[v3->v4] `tm_polygons()`: migrate the argument(s) related to the legend of the
## visual variable `fill` namely 'title' to 'fill.legend = tm_legend(<HERE>)'[cols4all] color palettes: use palettes from the R package cols4all. Run
## `cols4all::c4a_gui()` to explore them. The old palette name "Blues" is named
## "brewer.blues"Multiple palettes called "blues" found: "brewer.blues", "matplotlib.blues". The first one, "brewer.blues", is returned.

La cartographie met en évidence une structuration spatiale de la motorisation des ménages. Les régions les plus urbanisées présentent un niveau de motorisation plus élevé, traduisant une dépendance accrue à l’automobile et une capacité de mobilité supérieure.

À l’inverse, les régions moins motorisées peuvent refléter une plus grande dépendance aux transports collectifs ou aux modes de déplacement alternatifs.

L’analyse de la mobilité repose sur des indicateurs indirects, notamment la possession de moyens de transport. Ces variables ne permettent pas de mesurer directement les distances ou durées de déplacement, mais offrent une approximation pertinente de la capacité de mobilité des ménages.

Coût acceptable du BRT

L’acceptabilité économique du BRT est analysée à travers plusieurs indicateurs tarifaires, distinguant un coût fixe, un coût variable minimal et maximal, ainsi que le coût associé aux rabattements. Les montants sont exprimés en milliers de FCFA.

base <- base %>%
  rename(
    cout_fixe = `S'il s'agit d'un coût fixe, combien vous semble raisonable (sans y inclure le coût des rabattements)?`,
    cout_var_min = `S'il s'agit d'un coût variable, quel serait le  coût minimal raisonable (sans y inclure le coût des rabattements)?`,
    cout_var_max = `S'il s'agit d'un coût variable, quel serait le coût maximal raisonable (sans y inclure le coût des rabattements)?`,
    cout_rabattement = `Quel coût vous semble raisonable pour payer le rabattement?`
  )
summary(base[, c("cout_fixe", "cout_var_min", "cout_var_max", "cout_rabattement")])
##    cout_fixe      cout_var_min    cout_var_max   cout_rabattement
##  Min.   :100.0   Min.   :  0.0   Min.   :100.0   Min.   :  0.0   
##  1st Qu.:250.0   1st Qu.:100.0   1st Qu.:250.0   1st Qu.:100.0   
##  Median :300.0   Median :150.0   Median :300.0   Median :100.0   
##  Mean   :335.4   Mean   :174.9   Mean   :338.2   Mean   :100.4   
##  3rd Qu.:400.0   3rd Qu.:200.0   3rd Qu.:400.0   3rd Qu.:100.0   
##  Max.   :500.0   Max.   :800.0   Max.   :900.0   Max.   :300.0   
##  NA's   :378     NA's   :120     NA's   :120

Les statistiques descriptives montrent une variabilité importante des montants jugés acceptables par les enquêtés. Cette dispersion reflète l’hétérogénéité des capacités de paiement et des préférences individuelles en matière de transport.

tab_cout_region <- base %>%
  group_by(Region) %>%
  summarise(
    Cout_fixe_moy = round(mean(cout_fixe, na.rm = TRUE), 2),
    Cout_var_min_moy = round(mean(cout_var_min, na.rm = TRUE), 2),
    Cout_var_max_moy = round(mean(cout_var_max, na.rm = TRUE), 2),
    Cout_rabattement_moy = round(mean(cout_rabattement, na.rm = TRUE), 2)
  )
tab_cout_region
## # A tibble: 3 × 5
##   Region   Cout_fixe_moy Cout_var_min_moy Cout_var_max_moy Cout_rabattement_moy
##   <chr>            <dbl>            <dbl>            <dbl>                <dbl>
## 1 Dakar             345.             175.             333.                102. 
## 2 Diourbel          300              248.             358.                 95  
## 3 Thiès             305              151.             346.                 95.9

La comparaison régionale révèle des différences notables dans les montants jugés acceptables pour le BRT. Ces écarts traduisent des disparités économiques et des niveaux de dépendance au transport collectif variables selon les régions.

carte_cout <- senegal %>%
  left_join(tab_cout_region, by = "Region")
tmap_mode("view")
## ℹ tmap modes "plot" - "view"
tm_shape(carte_cout) +
  tm_basemap("OpenStreetMap") +
  tm_polygons(
    "Cout_fixe_moy",
    palette = "RdYlBu",
    style = "quantile",
    alpha = 0.7,
    title = "Coût fixe moyen acceptable du BRT\n(en milliers de FCFA)",
    id = "Region",
    popup.vars = c(
      "Région" = "Region",
      "Coût fixe moyen" = "Cout_fixe_moy"
    )
  ) +
  tm_layout(
    legend.outside = TRUE,
    frame = FALSE
  )
## 
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_polygons()`: instead of `style = "quantile"`, use fill.scale =
## `tm_scale_intervals()`.
## ℹ Migrate the argument(s) 'style', 'palette' (rename to 'values') to
##   'tm_scale_intervals(<HERE>)'[v3->v4] `tm_polygons()`: use `fill_alpha` instead of `alpha`.[v3->v4] `tm_polygons()`: migrate the argument(s) related to the legend of the
## visual variable `fill` namely 'title' to 'fill.legend = tm_legend(<HERE>)'[cols4all] color palettes: use palettes from the R package cols4all. Run
## `cols4all::c4a_gui()` to explore them. The old palette name "RdYlBu" is named
## "brewer.rd_yl_bu"Multiple palettes called "rd_yl_bu" found: "brewer.rd_yl_bu", "matplotlib.rd_yl_bu". The first one, "brewer.rd_yl_bu", is returned.

La cartographie met en évidence une structuration spatiale de l’acceptabilité tarifaire du BRT. Les régions présentant des revenus moyens plus élevés tendent à accepter des coûts fixes plus importants, tandis que les régions à revenus plus modestes expriment une sensibilité accrue au prix du transport.

Ces résultats confirment le lien étroit entre niveau de vie, mobilité et acceptabilité économique des infrastructures de transport.

L’analyse repose sur des montants déclarés par les enquêtés, ce qui peut introduire un biais de perception ou de déclaration. De plus, la coexistence de plusieurs scénarios tarifaires complexifie l’interprétation, mais permet une approche plus réaliste des préférences des ménages.

Carte de synthèse du potentiel d’adoption du BRT

Cette section vise à produire une carte de synthèse permettant de résumer, en une seule représentation spatiale, l’ensemble des conclusions issues de l’analyse statistique exploratoire. L’objectif est de proposer un indicateur territorial du potentiel d’adoption du BRT, intégrant à la fois les dimensions économiques, de mobilité et d’acceptabilité du coût du transport.

library(dplyr)
library(sf)
library(tmap)
library(scales)
library(dplyr)

tab_region_synthese <- tab_revenu_region %>%
  left_join(tab_mobilite_region, by = "Region") %>%
  left_join(tab_cout_region, by = "Region")

tab_region_synthese
## # A tibble: 3 × 11
##   Region  Revenu_moyen Effectif Taux_abonnement Voitures_moy Motos_moy Velos_moy
##   <chr>          <dbl>    <int>           <dbl>        <dbl>     <dbl>     <dbl>
## 1 Dakar           102.      341               0         0.53      0.25      0.23
## 2 Diourb…         146.       40               0         0.32      0.32      0.12
## 3 Thiès           104.      117               0         0.38      0.18      0.04
## # ℹ 4 more variables: Cout_fixe_moy <dbl>, Cout_var_min_moy <dbl>,
## #   Cout_var_max_moy <dbl>, Cout_rabattement_moy <dbl>

Sélection des variables quantitatives pertinentes

library(dplyr)
library(knitr)


vars_corr <- tab_region_synthese %>%
  select(
    Revenu_moyen,
    Voitures_moy,
    Motos_moy,
    Cout_fixe_moy,
    Cout_rabattement_moy
  )

Calcul de la matrice de corrélation

mat_corr <- cor(vars_corr, use = "complete.obs")
# Affichage dans R Markdown
kable(
  round(mat_corr, 2),
  caption = "Matrice de corrélation des variables économiques, de mobilité et de coût du BRT"
)
Matrice de corrélation des variables économiques, de mobilité et de coût du BRT
Revenu_moyen Voitures_moy Motos_moy Cout_fixe_moy Cout_rabattement_moy
Revenu_moyen 1.00 -0.74 0.85 -0.61 -0.62
Voitures_moy -0.74 1.00 -0.28 0.98 0.99
Motos_moy 0.85 -0.28 1.00 -0.10 -0.12
Cout_fixe_moy -0.61 0.98 -0.10 1.00 1.00
Cout_rabattement_moy -0.62 0.99 -0.12 1.00 1.00

Cette matrice de corrélation nous apporte plusieurs informations et nous informe, factuellement :

Revenu_moyen est fortement corrélé positivement avec Motos_moy (≈ +0,85) donc les ménages plus aisés tendent davantage à posséder des motos

Revenu_moyen est fortement corrélé négativement avec Voitures_moy (≈ −0,74) ce qui est une relation contre-intuitive en apparence, mais explicable par la structure urbaine et la congestion (usage collectif/alternatif à Dakar)

Voitures_moy est quasi parfaitement corrélé avec :

Cout_fixe_moy (≈ +0,98)

Cout_rabattement_moy (≈ +0,99)

Cout_fixe_moy et Cout_rabattement_moy sont eux-mêmes quasi parfaitement corrélés (≈ +1)

Conclusion statistique immédiate :

il y a redondance forte entre certaines variables

utiliser toutes ces variables telles quelles dans un indicateur serait méthodologiquement incorrect

Nous allons donc passer à une ACP pour retenir les variables qui participeront à l’élaboration de nore indicateur synthétique

#Préparation ACP

library(dplyr)

data_acp <- tab_region_synthese %>%
  select(
    Revenu_moyen,
    Voitures_moy,
    Motos_moy,
    Cout_fixe_moy,
    Cout_rabattement_moy
  )
library(FactoMineR)
library(factoextra)
## Le chargement a nécessité le package : ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
acp_res <- PCA(data_acp, scale.unit = TRUE, graph = FALSE)

#Graphique des valeurs propres

fviz_eig(acp_res, addlabels = TRUE)

Le graphique des valeurs propres (scree plot) montre très clairement que la première composante principale explique à elle seule environ 73 % de l’inertie totale, tandis que la deuxième composante explique environ 27 %. À elles deux, ces deux dimensions expliquent donc 100 % de la variabilité observée dans les données régionales. La rupture nette observée après le deuxième axe indique qu’il n’est ni nécessaire ni pertinent de retenir davantage de dimensions. La structure de l’information est donc essentiellement bidimensionnelle. La conclusion à ce stade est que l’essentiel des différences régionales en matière de revenu, de mobilité et de coût acceptable du BRT peut être résumé par deux axes synthétiques, ce qui est idéal dans une optique de construction d’indicateur et de cartographie décisionnelle.

#Graphique des contributions

fviz_pca_var(acp_res, col.var = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the ggpubr package.
##   Please report the issue at <https://github.com/kassambara/ggpubr/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ 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.

Le graphique des contributions des variables sur le plan factoriel permet ensuite de comprendre le sens socio-économique de ces deux dimensions. La première dimension, qui concentre la plus grande part de l’information, est très fortement structurée par les variables Voitures_moy, Cout_fixe_moy et Cout_rabattement_moy. Ces trois variables sont proches les unes des autres, orientées dans la même direction et très contributives. Cela confirme ce que la matrice de corrélation suggérait déjà : elles portent une information très proche, traduisant une même logique sous-jacente. Cette dimension peut être interprétée comme une dimension de capacité financière et de tolérance au coût du transport structurant, fortement liée à la motorisation automobile et aux attentes tarifaires vis-à-vis du BRT.

La deuxième dimension, orthogonale à la première, est principalement portée par Revenu_moyen et Motos_moy, qui se projettent ensemble mais dans une direction opposée à celle des variables de coût et de voitures. Cette dimension capte une autre logique, davantage liée au niveau de vie global et à une forme de mobilité alternative ou intermédiaire, dans laquelle la moto joue un rôle central. Elle traduit des contextes où la mobilité est assurée autrement que par la voiture individuelle, mais reste étroitement dépendante du niveau de revenu.

La séparation nette entre ces deux groupes de variables indique qu’il existe bien deux mécanismes distincts dans la structuration de la mobilité et de l’acceptabilité du BRT : d’un côté une logique de capacité économique et de coût acceptable, de l’autre une logique de niveau de vie et de type de motorisation.

#Conclusion de l’ACP L’interprétation globale de l’ACP conduit à une conclusion méthodologique très forte. Les variables Cout_fixe_moy et Cout_rabattement_moy étant quasi parfaitement corrélées et contribuant de manière redondante à la première dimension, il n’est pas pertinent de les intégrer simultanément dans l’indicateur final. Il en va de même pour l’association très étroite entre Voitures_moy et ces variables de coût. En revanche, Revenu_moyen et Motos_moy apportent une information complémentaire, structurante et distincte, justifiant pleinement leur maintien dans l’analyse.

Sur la base de ces résultats, la décision la plus rigoureuse consiste à retenir un nombre limité de variables représentatives de chaque dimension identifiée par l’ACP. Pour la dimension « capacité économique et tolérance au coût du BRT », une seule variable synthétique suffit, par exemple le coût fixe moyen acceptable, qui résume à la fois les attentes tarifaires et la capacité financière liée à la motorisation automobile. Pour la dimension « niveau de vie et mobilité alternative », le revenu moyen régional et le nombre moyen de motos constituent des indicateurs pertinents, complémentaires et non redondants.

Ainsi, l’indicateur synthétique final peut être construit à partir de trois composantes essentielles : le revenu moyen régional, la motorisation alternative mesurée par les motos, et le coût acceptable du BRT. D’un point de vue académique, ce choix est justifié par l’ACP qui montre que ces variables résument l’essentiel de l’information sans introduire de redondance excessive. La formule de l’indicateur doit alors combiner des variables préalablement normalisées, en tenant compte de leur sens d’influence sur le potentiel d’adoption du BRT : le revenu et la mobilité alternative augmentent ce potentiel, tandis qu’un coût acceptable élevé traduit une moindre sensibilité tarifaire.

Cette démarche garantit que l’indicateur final repose sur une base statistique solide, qu’il est interprétable économiquement et qu’il peut être légitimement cartographié pour identifier les régions à fort potentiel d’adoption du BRT. À ce stade, toutes les conditions sont réunies pour passer à la construction définitive de l’indicateur synthétique et à la carte finale de synthèse, qui constituera l’aboutissement logique et méthodologiquement irréprochable de notre travail.

Constrution de l’indicateur synthétique

À l’issue de l’ACP, trois dimensions pertinentes et non redondantes ont été retenues :

le niveau de vie : Revenu_moyen

la mobilité alternative : Motos_moy

la tolérance économique au BRT : Cout_fixe_moy

library(dplyr)

tab_indicateur <- tab_region_synthese %>%
  mutate(
    revenu_norm = (Revenu_moyen - min(Revenu_moyen)) /
                  (max(Revenu_moyen) - min(Revenu_moyen)),
    
    motos_norm = (Motos_moy - min(Motos_moy)) /
                 (max(Motos_moy) - min(Motos_moy)),
    
    cout_norm = (Cout_fixe_moy - min(Cout_fixe_moy)) /
                (max(Cout_fixe_moy) - min(Cout_fixe_moy))
  )
tab_indicateur <- tab_indicateur %>%
  mutate(
    Indice_potentiel_BRT =
      (revenu_norm + motos_norm + (1 - cout_norm)) / 3
  )
library(sf)

carte_finale <- senegal %>%
  left_join(tab_indicateur, by = "Region")

Constrution de l’indicateur synthétique

library(tmap)

tmap_mode("view")
## ℹ tmap modes "plot" - "view"
tm_shape(carte_finale) +
  tm_polygons(
    "Indice_potentiel_BRT",
    palette = "viridis",
    style = "quantile",
    n = 5,
    title = "Potentiel d’adoption du BRT"
  ) +
  tm_layout(
    legend.outside = TRUE,
    main.title = "Carte synthétique du potentiel d’adoption du BRT par région",
    main.title.size = 1.1
  )
## 
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_polygons()`: instead of `style = "quantile"`, use fill.scale =
## `tm_scale_intervals()`.
## ℹ Migrate the argument(s) 'style', 'n', 'palette' (rename to 'values') to
##   'tm_scale_intervals(<HERE>)'[v3->v4] `tm_polygons()`: migrate the argument(s) related to the legend of the
## visual variable `fill` namely 'title' to 'fill.legend = tm_legend(<HERE>)'[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(main.title = )`
library(tmap)

tmap_mode("plot")

tm_shape(carte_finale) +
  tm_polygons(
    "Indice_potentiel_BRT",
    palette = "viridis",
    style = "quantile",
    n = 5,
    title = "Potentiel d’adoption du BRT"
  ) +
  tm_layout(
    legend.outside = TRUE,
    main.title = "Carte synthétique du potentiel d’adoption du BRT par région",
    main.title.size = 1.1,
    frame = FALSE
  )

L’analyse finale fondée sur l’indicateur synthétique de potentiel d’adoption du BRT met en évidence des contrastes régionaux très marqués entre Dakar, Thiès et Diourbel, révélateurs de logiques socio-économiques et de mobilité distinctes. La région de Dakar présente le revenu moyen mensuel le plus faible des trois régions considérées, associé toutefois au niveau de motorisation automobile le plus élevé et à une diversité relative des moyens de transport individuels. Cette configuration traduit un contexte métropolitain dense, caractérisé par une forte pression sur la mobilité, mais également par une sensibilité très élevée aux coûts du transport collectif. Le coût fixe moyen jugé acceptable pour le BRT y est le plus élevé, ce qui, combiné à la normalisation des variables, conduit à un indice de potentiel d’adoption relativement faible. Cela suggère que, malgré un besoin structurel important en solutions de transport de masse, l’adoption effective du BRT à Dakar reste fortement conditionnée par la contrainte tarifaire et par la concurrence avec des alternatives de mobilité déjà existantes.

La région de Thiès occupe une position intermédiaire. Son revenu moyen est légèrement supérieur à celui de Dakar, mais elle se distingue par une motorisation plus modérée, notamment en matière de motos, et par des coûts acceptables du BRT sensiblement plus faibles. Cette combinaison se traduit par un indice de potentiel d’adoption supérieur à celui de Dakar. Le profil de Thiès suggère un territoire où la dépendance à la mobilité individuelle est moins marquée et où le transport collectif structurant pourrait constituer une alternative crédible, à condition de maintenir une tarification accessible. Le potentiel observé repose donc sur un équilibre entre capacité économique modérée, moindre motorisation et attentes tarifaires réalistes, ce qui en fait une région favorable à une adoption progressive du BRT.

La région de Diourbel se distingue très nettement des deux autres. Elle présente le revenu moyen le plus élevé, une motorisation en motos particulièrement marquée et les coûts acceptables du BRT les plus faibles. Cette configuration est directement reflétée par la normalisation des variables, qui place Diourbel au maximum sur les dimensions du revenu et de la mobilité alternative, tout en minimisant l’effet contraignant du coût. L’indice de potentiel d’adoption du BRT atteint ainsi sa valeur maximale, traduisant une forte capacité théorique d’appropriation du transport collectif structurant. Ce résultat suggère que, dans un contexte où la mobilité repose déjà sur des solutions intermédiaires et où la sensibilité aux coûts est élevée, le BRT pourrait répondre efficacement aux besoins de déplacement, à condition d’être adapté aux réalités locales en termes de desserte et de tarification.

Globalement, ces résultats confirment la pertinence de l’approche adoptée, qui combine analyses statistiques, analyse factorielle et cartographie SIG pour construire un indicateur synthétique d’aide à la décision. Ils montrent que le potentiel d’adoption du BRT ne dépend pas uniquement du niveau de revenu ou de la densité urbaine, mais résulte d’une interaction complexe entre capacité économique, structure de la mobilité existante et acceptabilité des coûts. La carte finale de synthèse permet ainsi d’identifier Diourbel comme une zone à fort potentiel, Thiès comme un territoire intermédiaire favorable sous conditions, et Dakar comme une région où les enjeux de tarification et d’intégration avec les modes existants constituent des déterminants majeurs pour la réussite du BRT.