library(readxl)
library(purrr)
library(sf)
library(fixest)
library(ggplot2)
library(rnaturalearth)Explorer les inégalités spatiales
Quelques librairies importantes pour ce tuto :
Télécharger les données GEcon
Téléchargez les données G-Econ depuis la page officielle du projet : → Accéder aux données et à la documentation G-Econ
Et sauvegarder les dans le dossier que vous avez créé pour ce cours.
Ca ressemble sûrement à
cours_master2 > cours_eco_geo > data
Prenez un petit temps pour regarder dans le fichier excel le nom des variables et leur définition.
Importer les données dans RStudio
Commencez par repérer le chemin d'accès au fichier contenant vos données.
Remplacez ensuite le chemin indiqué dans le code ci-dessous par le chemin correspondant à votre fichier, puis exécutez le code dans R pour importer les données.
your_path <- "G:/Mon Drive/TEACHING/MCF_Nantes/cours/M2_eco_spatiale/materiel/GEcon/Gecon40_post_final.xls"
Gecon <- read_excel(your_path)Ces données sont spatiales, mais elles ne contiennent pas encore de géométrie à proprement parler : chaque carreau est simplement identifié par les coordonnées latitude–longitude de son coin inférieur gauche.
Avant de pouvoir les exploiter comme des données géographiques, nous allons donc :
nettoyer et préparer les données ;
indiquer leur système de coordonnées de référence (CRS).
Les coordonnées étant exprimées en latitude–longitude, nous utiliserons le WGS 84 (EPSG:4326) comme système de référence.
## Construire la géométrie de la données : des carreaux
Gecon$geometry <- map2(
Gecon$LONGITUDE,
Gecon$LAT,
~ st_polygon(list(
matrix(
c(
.x, .y,
.x + 1, .y,
.x + 1, .y + 1,
.x, .y + 1,
.x, .y
),
ncol = 2,
byrow = TRUE
)
))
)
## Transformer votre objet en objet spatial (sf)
Gecon <- st_as_sf(
Gecon,
crs = 4326
)EXERCICE 1 : Explorer les disparités spatiales
1. Construire les variables d'intérêt
Calculez :
le logarithme de la population en 2005, à partir de la variable
POPGPW_2005_40;le logarithme du PIB par habitant en 2005, à partir de la variable
PPP2005_40.
Attention aux unités !
La population est exprimée en unités, tandis que le PIB est exprimé en milliards. Pensez donc à convertir les unités avant de calculer le PIB par habitant.
2. Visualiser les distributions
Visualisez ces deux variables sur une carte interactive à l'aide de la fonction mapview().
Comparez les deux cartes et décrivez brièvement les principaux motifs spatiaux que vous observez.
3. Quel rôle joue la géographie ?
Nous allons maintenant chercher à quantifier dans quelle mesure les caractéristiques géographiques permettent d’expliquer les différences de population et de PIB par habitant.
3.1 Estimer les modèles
Estimez deux modèles OLS :
un modèle expliquant le log de la population en 2005 ;
un modèle expliquant le log du PIB par habitant en 2005.
Dans les deux cas, utilisez comme variables explicatives :
le log de la distance à l’océan ;
le log de la distance à la rivière la plus proche ;
le log de la moyenne des précipitations ;
la température moyenne ;
la température moyenne au carré ;
le log de l’élévation ;
le log de l’élévation au carré ;
des effets fixes par pays.
Pour estimer les modèles, utilisez la fonction feols() du package fixest. Sa syntaxe générale est :
feols(y ~ x1 + x2 | effet_fixe, data = Gecon)
Le symbole | permet ici d’indiquer les effets fixes.
3.2 Comparer les modèles
Comparez les résultats obtenus pour les deux modèles : population et PIB par habitant.
Commencez par examiner les coefficients estimés.
Quels coefficients diffèrent le plus entre les deux modèles ?
Comment interpréter ces différences ?
Pouvez-vous proposer des mécanismes économiques ou géographiques susceptibles de les expliquer ?
Intéressez-vous ensuite aux deux mesures de qualité d'ajustement :
le R² ;
le R² within.
À retenir : le R² mesure la part de la variance totale expliquée par le modèle, tandis que le R² within mesure la part de la variance au sein des pays expliquée par les variables du modèle, une fois prise en compte l'hétérogénéité entre les pays.
Questions :
Que remarquez-vous lorsque vous comparez le R² et le R² within ?
Que nous apprend cette comparaison sur le rôle de la géographie entre les pays et au sein des pays ?
Les résultats sont-ils similaires pour la population et pour le PIB par habitant ?
Que peut-on en déduire sur l'importance relative de la géographie pour expliquer ces deux distributions ?
EXERCICE 2 : La loi de Zipf
La loi de Zipf décrit la relation entre la taille d’une ville et son rang dans la hiérarchie urbaine.
Si l’on classe les villes par population décroissante, la population de la ville de rang r est donnée par : \(P_r = P_1 r^{-q}\)
où :
- \(P_r\) est la population de la ville de rang \(r\) ;
- \(P_1\) est la population de la ville la plus peuplée ;
- \(r\) est le rang de la ville ;
- \(q\) mesure la vitesse à laquelle la population décroît lorsque le rang augmente.
La loi de Zipf correspond au cas particulier où :
\(\boxed{q \simeq 1}\)
Dans ce cas, la population est approximativement inversement proportionnelle au rang :
\(P_r \simeq \frac{P_1}{r}\)
On va tester cette relation à partir des données GEcon.
1. Construire le rang des carreaux
À partir de la population, classez les carreaux par ordre décroissant de population et attribuez un rang à chacun :
- rang 1 au carreau le plus peuplé ;
- rang 2 au deuxième carreau le plus peuplé ;
- etc.
2. Visualiser la relation
Représentez graphiquement la population $P_r$ en fonction du rang $r$.
Que constatez-vous sur la forme de la distribution ?
3. Tester la loi de Zipf
La relation \(P_r = P_1 r^{-q}\) peut être transformée en prenant le logarithme comme ceci:
\(\log(P_r) = \log(P_1) - q\log(r)\)
Estimez cette relation par MCO (OLS).
- Quel est le coefficient associé à \(\log(r)\) ?
- Que représente-t-il ?
- La valeur estimée de \(q\) est-elle proche de 1 ?
4. Vérifier la constante
Dans l’équation théorique, la constante doit être égale à \(\log(P_1)\). Comparez la constante estimée à \(\log(P_1)\). Est-elle proche de cette valeur ?
5. Imposer la constante théorique
On peut également estimer directement la pente en imposant que la constante soit égale à \(\log(P_1)\). Comment faire ?
En contraignant la valeur de la constante, quelle valeur obtenez-vous pour \(q\) ?
6. Conclusion
La distribution de la population des carreaux est-elle compatible avec une loi de Zipf ? Comparez votre estimation de \(q\) à la valeur théorique \(q=1\).
EXERCICE 3 : la \(\beta\) et la \(\sigma\) convergence
À partir des données GEcon, nous allons tester si les territoires initialement pauvres connaissent une croissance plus rapide et comment les disparités de PIB par habitant évoluent au cours du temps.
1. \(\beta\)-convergence dans le monde
Construisez :
- le logarithme du PIB par habitant au début de la période (1990) ;
- le taux de croissance du PIB par habitant entre le début et la fin de la période (2005).
Estimer :
\(\frac{1}{T}\ln\left(\frac{y_{i,T}}{y_{i,0}}\right) = \alpha+\beta\ln(y_{i,0})+\varepsilon_i\)
avec feols().
Interprétez le coefficient \(\beta\). Les données mettent-elles en évidence une \(\beta\)-convergence ?
2. \(\beta\)-convergence au sein des pays
Ré-estimez le modèle en ajoutant un effet fixe pays :
\(\frac{1}{T}\ln\left(\frac{y_{i,T}}{y_{i,0}}\right) = \alpha+\beta\ln(y_{i,0})+\gamma_c+\varepsilon_i\)
Comparez le coefficient \(\beta\) avec celui obtenu précédemment.
Que change l’introduction des effets fixes pays ?
3. \(\sigma\)-convergence
Calculez, pour chaque année, la dispersion du PIB par habitant entre les carreaux :
\(\sigma_t = SD\left(\ln y_{i,t}\right)\)
Représentez graphiquement l’évolution de \(\sigma_t\) au cours du temps. Les disparités de PIB par habitant diminuent-elles ?
4. Cartographier la convergence
Calculez, pour chaque pays :
\(\Delta\sigma_c = \sigma_{c,2005}-\sigma_{c,1990}\)
A l’aide d’un indicateur, identifiez les pays où :
- \(\Delta\sigma_c < 0\) : convergence
- \(\Delta\sigma_c > 0\) : divergence
Représentez \(\Delta\sigma_c\) ou votre indicateur binaire convergence/divergence sur une carte en utilisant le package rnaturalearth.
Grâce au package, vous pouvez importer directement depuis RStudio le contours sf des pays en exécutant ce code :
mappemonde <- ne_countries(scale = "small", returnclass = "sf")
mappemonde <- mappemonde %>%
select(admin, adm0_a3, gdp_md, pop_est, income_grp, geometry) %>% # on sélectionne certaines variables pour ne pas être submergées par des variables dont on n'a pas besoin
arrange(admin)
Petit challenge : comment merger vos indicateurs d’évolution de dispersion niveau pays de GEcon à la base mappemonde ?
Les dynamiques de convergence et de divergence présentent-elles une structure géographique ?