wsj.
Analyse géospatiale

Diffusion spatiale du déplacement forcé en Colombie, 2000-2022

Le mandat prévoit de répartir des enveloppes de stabilisation entre les municipalités. L'analyse suit les déplacements et les violences enregistrées dans 1 121 municipalités de 2000 à 2022, puis estime leur dépendance spatiale à partir d'un registre de 691 373 lignes.

Commanditaire
Observatoire territorial pour la stabilisation, fictif
Données
Réelles et publiques
Outils
Python, GeoPandas, PySAL, spreg, statsmodels
Code
GitHub
Sommaire

Sommaire

  1. Mandat et résultats
  2. Données et construction du panel
  3. Voisinage et préparation des variables
  4. Persistance de la structure spatiale
  5. Choix du modèle spatial
  6. Diffusion et allocation
  7. Limites de l'analyse
  8. Reproduire

Mandat et résultats

L'Observatoire territorial pour la stabilisation, centre d'analyse fictif, doit répartir les enveloppes de stabilisation entre les municipalités colombiennes. Un choc local peut déplacer des personnes vers les communes voisines et étendre ses effets au-delà de la municipalité financée.

Le modèle mesure l'association spatiale restante après prise en compte des violences locales et répartit l'estimation entre la municipalité observée et ses voisines. Les effets présentés dans cette page sont des effets marginaux du modèle. Ils n'établissent pas une relation causale.

52 %de l'effet marginal estimé correspond aux municipalités voisines
0,60 à 0,73 de la variable, stable sur les vingt-trois années
54municipalités en grappe haute sur les quatre années cartographiées
25 783observations, 1 121 municipalités sur 23 ans, panel équilibré
Décomposition des effets directs et indirects du modèle à décalage spatial pour les trois variables de violence
Figure 1 Décomposition de l'effet total des trois variables de violence entre la municipalité touchée et ses voisines.

Données et construction du panel

Sources utilisées pour construire le panel spatial
SourceJeuCouvertureLicence
UARIVRegistre unique des victimes, faits victimisants691 373 lignes, municipalité et mois, 1985 à août 2023CC BY
OCHA COD-ABLimites municipales1 122 municipalités, millésime 2020CC BY
OCHA COD-PSPopulation municipale projetée2024CC BY
SIDIH / ONUDCCultures de coca2001 à 2013, annexe seulementCC BY

Le portail national datos.gov.co refuse les requêtes automatisées. La chaîne utilise les copies publiées sur le catalogue humanitaire HDX, dont les adresses restent stables. Ces versions peuvent être antérieures à celles du portail national.

La fenêtre retenue est 2000 à 2022. Le registre remonte à 1985. Les déclarations rétrospectives déforment la chronologie antérieure à 2000, car de nombreux faits anciens ont été enregistrés lors de la reconnaissance du statut de victime. L'extraction s'arrête en août 2023 et l'analyse écarte cette année incomplète, qui créerait une chute artificielle en fin de série.

Interprétation des cellules absentes

Le registre contient une ligne uniquement lorsqu'une victime a été enregistrée. Une paire municipalité-année absente correspond à zéro victime.

Le maintien de cellules vides supprimerait des observations et limiterait les moyennes aux municipalités touchées, avec un biais à la hausse. La grille est reconstruite pour toutes les paires municipalité-année et complétée par des zéros. Les zéros représentent 16,3 % des cellules du panel, soit une observation sur six.

Les zéros initiaux des codes DIVIPOLA

Le fichier source stocke le code de municipalité en numérique. Les départements d'Antioquia et d'Atlántico, codés 05 et 08, y perdent leur zéro initial et deviennent 5 et 8. La jointure échoue lorsque ces valeurs sont rapprochées des codes textuels des limites administratives.

Antioquia compte six des cinquante-quatre municipalités en grappe persistante. Les codes sont normalisés sur cinq caractères avant la jointure pour conserver ce département dans l'analyse.

Journal des exclusions

Lignes et victimes exclues de l’analyse
MotifLignesVictimes
Hors de la fenêtre 2000-2022187 2682 365 805
Municipalité non renseignée2 16446 936
Code DIVIPOLA non conforme49175

La première ligne correspond à la fenêtre d'analyse. Les deux autres motifs sont des rebuts consignés dans outputs/tables/01_journal_nettoyage.csv. Sept codes du registre ne correspondent à aucune géométrie du millésime 2020. Mapiripana, dans le Guainía, sort du panel faute de population au dénominateur, ramenant le compte de 1 122 à 1 121.

Le panel final comprend 1 121 municipalités × 23 années = 25 783 observations, équilibré.

Effet du dénominateur constant

Le taux de déplacement rapporte les victimes à la population de 2024, utilisée comme dénominateur pour toute la période.

Dans un modèle à avec variable dépendante transformée en logarithme, un facteur constant par municipalité devient une constante additive après transformation. L'effet fixe l'absorbe intégralement et les coefficients restent inchangés. Le dénominateur constant modifie les cartes descriptives, où il est signalé.

Voisinage et préparation des variables

La définition du voisinage entre directement dans le modèle spatial et figure dans la première ligne du fichier de configuration.

La considère deux municipalités comme voisines lorsqu'elles partagent au moins un point de frontière. Cette règle isole San Andrés y Providencia, archipel des Caraïbes situé à 700 km du continent. Sa ligne vide rend la non inversible. Le exige l'inverse de (I − ρW).

Le voisinage principal retient les cinq municipalités les plus proches, calculées à partir des centroïdes projetés en MAGNA-SIRGAS, la projection officielle colombienne. Chaque municipalité possède exactement cinq voisines, y compris l'archipel. Ce nombre correspond à l'ordre de grandeur du nombre moyen de voisins contigus et maintient la comparabilité des deux définitions.

Paramètre de voisinagesrc/config.py
# Le voisinage principal est celui des k plus proches voisins : la contiguïté
# simple laisse San Andrés y Providencia sans voisin, et un îlot sans voisin
# rend la matrice de poids non inversible dans les modèles à décalage spatial.
# Les k plus proches voisins garantissent que chaque municipalité en a
# exactement k.
#
# k = 5 correspond à l'ordre de grandeur du nombre de voisins contigus d'une
# municipalité colombienne moyenne et maintient la comparabilité des définitions.
K_VOISINS = 5

La contiguïté reine sert de contrôle. La corrélation entre les deux séries annuelles d'indices de Moran atteint 0,964. Jusqu'en 2010, la matrice des plus proches voisins donne l'indice le plus élevé. Après 2011, la contiguïté reine domine, avec un écart de 0,036 en 2020. La concentration du phénomène affecte différemment un voisinage à nombre fixe et un voisinage défini par les frontières.

Transformation par sinus hyperbolique inverse

La distribution du taux de déplacement est très asymétrique. La transformation log(1 + x) dépend de l'unité choisie. Ajouter 1 à un taux pour 100 000 habitants et à un taux pour 1 000 produit des compressions différentes.

Le sinus hyperbolique inverse se comporte comme un logarithme aux valeurs élevées, reste défini en zéro et dépend beaucoup moins de l'unité. Sa définition en zéro est nécessaire puisque cette valeur concerne une observation sur six.

Décalage annuel des variables explicatives

Une menace et un déplacement enregistrés la même année dans la même municipalité décrivent souvent le même épisode. Leur utilisation simultanée confondrait co-enregistrement et relation temporelle. Les variables explicatives, violence létale, menaces, combats et engins explosifs, entrent avec un décalage d'un an.

Le décalage réduit la simultanéité. L'exogénéité reste une limite, consignée dans la configuration à côté du paramètre concerné.

Persistance de la structure spatiale

Entre 2002 et 2020, le déplacement passe de 838 276 à 108 156 victimes annuelles, divisé par 7,8, avant de remonter à 290 527 en 2022. La violence létale enregistrée est divisée par 59 entre 2002 et 2016.

Série nationale du déplacement forcé et de la violence létale en Colombie de 2000 à 2022
Figure 2 Évolution annuelle du déplacement forcé et de la violence létale, 2000 à 2022.

L'indice de Moran global reste compris entre 0,60 et 0,73 sur les vingt-trois années et demeure significatif chaque année. Il passe de 0,720 en 2015 à 0,681 en 2016, puis remonte. La structure spatiale persiste après l'accord de paix malgré la baisse du volume national.

Concentration et composition des grappes

Le nombre de municipalités touchées dans l'année tombe de 1 042 en 2002 à 717 en 2020, avant de remonter à 837. La part du déplacement survenant lors d'événements massifs passe de 11,2 % en 2000 à 27,3 % en 2021. La composition des indicateurs locaux se simplifie au cours de la période.

Composition des classes LISA pour 2002, 2008, 2013 et 2022, en nombre de municipalités
Figure 3 La répartition des 1 121 municipalités entre , sur les quatre années cartographiées.

Le nombre de municipalités en rupture avec leur voisinage passe de 31 à 12, et celui des municipalités sans signal significatif de 676 à 589. Les grappes basses gagnent 108 municipalités, de 235 à 343. Les grappes hautes comptent 179 municipalités en 2002 et 177 en 2022, avec un maximum de 207 en 2013.

La majorité des municipalités se regroupe dans les valeurs basses. Le noyau de valeurs hautes conserve une taille stable. La baisse des cas atypiques et la consolidation des grappes indiquent une concentration accrue du phénomène.

Cinquante-quatre municipalités présentes dans les quatre relevés

Municipalités en grappe haute persistante par département
DépartementMunicipalitésDépartementMunicipalités
Caquetá13Bolívar3
Antioquia6Cauca3
Chocó6Córdoba2
Meta6Guaviare2
Norte de Santander6Nariño1
Putumayo6

Ces cinquante-quatre municipalités appartiennent à une grappe haute en 2002, en 2008, en 2013 et en 2022. Elles conservent ce statut pendant le pic du conflit, la démobilisation paramilitaire, les négociations de La Havane et l'après-accord.

Carte des 54 municipalités colombiennes appartenant à une grappe haute sur les quatre années examinées
Figure 4 Localisation des 54 municipalités classées en grappe haute dans les quatre relevés.

Choix du modèle spatial

L'estimation compare trois spécifications. M1 utilise des effets fixes à deux voies. M2 ajoute le décalage spatial de la variable dépendante et M3 une erreur spatialement autocorrélée.

Retrait des effets annuels

spreg absorbe les effets fixes individuels uniquement. Les effets d'année sont retirés en amont afin d'estimer un modèle à deux voies.

La chute nationale du déplacement après 2016 touche toutes les municipalités simultanément. Le retrait des effets annuels empêche le modèle spatial d'attribuer cette tendance commune à une dépendance entre municipalités voisines.

Le retrait des effets d'annéesrc/p03_modeles_panel.py
def deux_voies(matrice: np.ndarray) -> np.ndarray:
    """
    Retire la moyenne annuelle de chaque colonne.

    Les modèles de panel de spreg absorbent les effets fixes individuels. Les
    effets d'année sont retirés en amont afin d'estimer un modèle à deux voies.
    Sans cette étape, une tendance nationale commune, par
    exemple la chute générale du déplacement après 2016, serait attribuée à la
    dépendance spatiale : toutes les municipalités baissent en même temps, donc
    chacune ressemble à ses voisines.
    """
    return matrice - matrice.mean(axis=0, keepdims=True)

Autocorrélation résiduelle du modèle non spatial

Le diagnostic utilise l'indice de Moran des résidus de M1. Les tests du multiplicateur de Lagrange pour panel construisent, dans leur implémentation spreg, une matrice pleine de 24 662 sur 24 662, soit 4,5 Go. L'indice de Moran évalue l'autocorrélation résiduelle avec un coût de calcul réduit.

Il vaut 0,294 en médiane et reste significatif à 1 ‰ dans les vingt-deux années estimées. Après retrait des effets fixes, des effets d'année et des violences locales décalées, les résidus restent fortement groupés dans l'espace.

Indice de Moran de la variable dépendante et des résidus du modèle non spatial, année par année de 2000 à 2022
Figure 5 Indice de Moran de la variable dépendante, en bleu, et des résidus du modèle non spatial, en orange, sur vingt-trois ans.

Le Moran des résidus descend de 0,289 en moyenne sur 2001-2010 à 0,213 sur 2011-2015, puis remonte à 0,340 sur 2016-2022. Il atteint son minimum en 2013, à 0,184, et son maximum en 2020, à 0,399.

La période récente, utilisée pour la programmation actuelle, présente l'autocorrélation résiduelle la plus élevée. Les violences locales expliquaient une part plus grande de la géographie du déplacement pendant le pic du conflit. Depuis l'accord, la composante résiduelle est davantage groupée dans l'espace. Un modèle non spatial estimé sur les seules années récentes accentuerait ce biais.

Réduction des coefficients après ajout du terme spatial

Coefficients des trois modèles comparés
Variable, décalée d'un anM1 effets fixesM2 décalageM3 erreurÉcart M1 à M2
Violence létale0,4470,2740,277−38,7 %
Menaces0,5100,3350,334−34,3 %
Combats et engins explosifs0,1050,0570,077−46,0 %
Paramètre spatialρ = 0,549λ = 0,586
AIC293 713294 681

Tous les coefficients sont significatifs à 1 ‰. Les écarts types de M1 sont groupés par municipalité, les observations d'une même municipalité sur vingt ans n'étant pas indépendantes.

L'ajout du terme spatial réduit les coefficients d'un tiers à près de la moitié. M1 attribuait aux violences locales une part liée à la dépendance entre voisines. À nombre de paramètres égal, le décalage spatial présente un AIC inférieur de 968 points à celui de l'erreur spatiale.

Une erreur spatialement autocorrélée correspondrait à un facteur commun non observé qui traverse les frontières, par exemple un relief, une route ou un groupe armé. Le décalage spatial indique que le déplacement dans une municipalité dépend du déplacement chez ses voisines. Cette spécification conduit à traiter les grappes de municipalités comme unités d'intervention.

Diffusion et allocation

Dans un modèle à décalage spatial, l'effet marginal intègre les interactions successives entre une municipalité et ses voisines. Une hausse affecte les communes voisines, puis rétroagit partiellement sur la municipalité initiale. La décomposition sépare les .

La décompositionsrc/p03_modeles_panel.py
n = w.n
W = w.full()[0]
inverse = np.linalg.inv(np.eye(n) - rho * W)
trace_moyenne = np.trace(inverse) / n
somme_moyenne = inverse.sum() / n

for nom, beta in zip([LIBELLES[c] for c in EXPLICATIVES], betas):
    direct = trace_moyenne * beta      # inclut la boucle de retroaction
    total = somme_moyenne * beta       # beta / (1 - rho)
    indirect = total - direct          # deversement sur les voisines
Effets directs, indirects et totaux du modèle spatial
Variable, décalée d'un anEffet directEffet indirectEffet totalPart déversée
Violence létale0,2930,3150,60851,8 %
Menaces0,3580,3860,74451,8 %
Combats et engins explosifs0,0600,0650,12551,8 %

Part déversée identique pour les trois variables

Les trois valeurs identiques de la colonne résultent de la spécification du modèle.

L'effet total vaut β / (1 − ρ) et l'effet direct s'obtient en multipliant β par la trace moyenne de l'inverse de (I − ρW). Le coefficient β est commun aux deux expressions et disparaît de leur rapport. La part déversée dépend de ρ et de la matrice de voisinage, indépendamment de la variable.

Le paramètre spatial fixe la géographie de la diffusion. Les coefficients en déterminent l'intensité. Un modèle de Durbin spatial ajouterait les variables explicatives décalées dans l'espace et autoriserait des parts distinctes par variable. Son estimation constitue la première extension proposée.

Conséquences pour l'allocation

Environ la moitié de l'effet d'un choc se diffuse vers des municipalités voisines situées hors du périmètre financé, puis rétroagit partiellement sur la municipalité initiale.

Les cinquante-quatre municipalités en grappe persistante et les grappes auxquelles elles appartiennent constituent les unités d'intervention retenues. La conception des programmes suit les grappes, avec des décaissements maintenus par municipalité.

Limites de l'analyse

Absence d'identification causale

Les faits de violence et le déplacement sont enregistrés par la même administration à partir des mêmes déclarations. Un décalage d'un an ne rend pas ces variables exogènes. L'anticipation d'une menace, la saturation des communes d'accueil et l'extension d'un contrôle territorial produiraient le même ρ. Le modèle ne permet pas de départager ces mécanismes.

Nature administrative du registre

Le registre compte les personnes reconnues victimes après leur déclaration et son traitement par l'administration. Les zones où l'État est le plus absent sont vraisemblablement les plus exposées à la sous-déclaration. Ce biais atténuerait les valeurs dans les zones où elles devraient être les plus élevées.

Vingt-trois ans traités comme un seul régime

Les coefficients sont estimés sur toute la période. La relation entre violence enregistrée et déplacement évolue au fil des années. Entre 2020 et 2022, le déplacement est multiplié par 2,7 et la violence létale enregistrée par 1,4. La remontée du Moran des résidus après 2016 va dans le même sens. Une estimation par sous-périodes permettrait de mesurer un éventuel changement de ρ.

Les frontières sont figées au millésime 2020

La Colombie a créé quelques municipalités sur la période. Sept codes du registre restent sans géométrie correspondante.

Exclusion de la coca

Le jeu SIDIH s'arrête en 2013 et ses totaux nationaux valent environ trois fois les chiffres publiés par l'ONUDC. Un facteur d'échelle constant serait absorbé par les effets fixes. Son intégration réduirait le panel de dix ans. L'arbitrage est documenté dans data/README_data.md.

Reproduire

La chaîne comprend quatre étapes. Chacune écrit ses sorties sur disque et lit celles de l'étape précédente.

Lancer la chaînerun_all.py
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt

python run_all.py                 # chaine complete
python run_all.py --depuis 2      # reprend apres la construction du panel
Étapes et sorties de la chaîne de reproduction
ÉtapeTraitementSortie principale
1Lecture du registre, nettoyage, assemblage du panelpanel.parquet
2Voisinages, Moran global et locallisa.parquet, voisinages.pkl
3Les trois modèles et la décompositionoutputs/tables/03_*.csv
4Cartes et graphiquesoutputs/figures/

Sources déjà téléchargées, l'exécution prend une vingtaine de minutes. La lecture du registre et l'assemblage du panel en demandent sept. L'étape 2 en demande six, avec 999 permutations par année pour chacune des deux définitions du voisinage.

Le fichier src/config.py centralise la fenêtre, les libellés exacts du champ HECHO, le nombre de voisins, le nombre de permutations, les quatre années cartographiées et la transformation, avec la justification de chaque paramètre. Une faute dans un libellé produirait une colonne de zéros sans lever d'erreur. Avant le filtrage, l'étape 1 vérifie la présence de chaque libellé dans le registre.

Le script docs/colombia-displacement/figures/documentation_figures.py produit les deux graphiques propres à cette page à partir des tableaux de la chaîne. Il vérifie les trois nombres cités à partir des résultats déjà calculés.

Le carnet d'analyse complet reprend les sorties intermédiaires.