← Études

Fanal · Forensique 2026/1

Forensique électorale haïtienne 2010 – 2016

Trois méthodes statistiques (loi de Benford, election fingerprints, Random Forest) appliquées aux résultats officiels des présidentielles 2010, 2015 et 2016

AuteursReginald VictorInstitutionFanal — fanal.mediaPublié26 avril 2026
électionsforensiqueBenfordKlimekRandom Forestmachine learningHaïti

Cette étude est une note de recherche Fanal. Les conclusions sont indicatives, non probantes : la granularité départementale (n ≈ 50) ne permet pas d'atteindre la puissance statistique requise pour des affirmations conclusives. Pour aller plus loin, il faudrait accéder aux ~11 000 procès-verbaux niveau bureau de vote publiés par le CEP. Le code source complet (scripts Python reproductibles) est versé sur la branche fanal-data du dépôt fanal-articles.

Résumé

Cette étude applique trois méthodes statistiques publiées en sciences sociales (loi de Benford 1938, election fingerprints de Klimek et al. PNAS 2012, classifieur Random Forest inspiré de Levin et al. PLOS One 2019) aux résultats officiels des trois dernières élections présidentielles haïtiennes : 2010 (Manigat / Martelly), 2015 (annulée) et 2016 (Jovenel Moïse). Sur les données départementales agrégées — la seule granularité publiée — on identifie un signal statistique significatif autour des bastions du Nord (Nord, Nord-Est, Nord-Ouest), où le score du gagnant et la part de procès-verbaux quarantinés croissent ensemble. Le Nord-Est 2015 atteint le score de risque maximal du modèle Random Forest (99,9 %). L'étude documente aussi l'effondrement de la participation présidentielle de 78,3 % en 2000 à 19,2 % en 2016 — soit un mandat effectif de seulement 10,7 % des inscrits pour le président élu en 2016.

Question de recherche

Les résultats officiels des trois dernières présidentielles haïtiennes contiennent-ils des signatures statistiques d'irrégularités systémiques détectables par les outils standards de forensique électorale, et où se concentrent ces signaux ?

Résultats clés

Score de risque maximal

99,9 %

Nord-Est 2015 — Random Forest sur 4 features

Effondrement participation

78 % → 19 %

2000 → 2016 (présidentielles)

Mandat effectif 2016

10,7 %

des inscrits ont voté pour Jovenel Moïse

PV quarantinés 2016

11,5 %

concentrés dans les départements du Nord

Indicateurs de contexte

Inscrits 2016

6 189 160

Croissance constante depuis 2000 (3,67 M)

CEP Haïti / IFES

Votes valides 2016

1 120 663

−27 % vs 2015 dans un contexte post-Matthew

CEPR (2016), UE-MOE

Participation 2016

19,2 %

Record historique de basse participation

CEP Haïti

Score gagnant 2016

55,7 %

Soit 10,7 % des inscrits — équivalent à un mandat de minorité

Jovenel Moïse (PHTK)

Contexte — l'effondrement de la participation présidentielle

Entre l'élection législative de 2000 (78,3 % de participation, dans un contexte d'opposition boycottée) et la présidentielle de 2016 (19,2 %), la participation aux scrutins majeurs en Haïti a été divisée par quatre. La rupture intervient en 2010 : dix mois après le séisme, dans un climat de défiance institutionnelle, et alors que l'OEA a publiquement modifié les résultats du premier tour pour faire passer Michel Martelly devant Jude Célestin.

Les élections de 2015 — premier tour annulé en janvier 2016 par un Conseil Électoral Provisoire de transition après que la Commission Indépendante d'Évaluation et de Vérification Électorale (CIEVE) a documenté que 46 % des procès-verbaux contenaient au moins trois irrégularités — et de 2016 (organisée après le passage dévastateur de l'ouragan Matthew) confirment ce déclin. En 2016, Jovenel Moïse remporte officiellement 55,7 % au premier tour avec une participation de 19,2 % : cela représente 10,7 % des inscrits, soit le mandat le plus étroit de toute la période démocratique haïtienne.

Cette étude part de cette anomalie macro et applique trois outils statistiques publiés en sciences sociales pour interroger la qualité statistique des résultats officiels.

Courbe de la participation présidentielle haïtienne de 2000 à 2016
Trajectoire de la participation aux élections nationales en Haïti, 2000 → 2016. Les annotations marquent les chocs externes (séisme 2010, annulation 2016) et le pourcentage de procès-verbaux quarantinés.Source : Fanal — données CEPR, IFES, CEP Haïti

Trajectoire nationale agrégée

AnnéeInscritsVotes validesParticipationPV exclusGagnant
20003 668 0492 871 12478,3 %0 %Aristide (Lavalas)
20063 533 4302 093 94759,3 %0 %Préval (Lespwa)
20104 660 2591 074 05623,1 %12,7 %Manigat (RDNP) — modifié OEA
20155 838 8381 530 97026,2 %5,8 %J. Moïse — 1er tour annulé
20166 189 1601 120 66319,2 %11,5 %Jovenel Moïse (PHTK)

Sources : CEPR (Jake Johnston, 2011/2015/2016), Mission UE-MOE (2016), IFES Election Guide.

Méthodologie — trois outils, une granularité contrainte

Trois méthodes complémentaires sont appliquées sur le même jeu de données : 30 observations (10 départements × 3 années), reconstituées à partir des rapports publics du CEPR, de la mission d'observation de l'Union européenne et d'IFES.

Limite structurante : la seule granularité publiée par le CEP est départementale. Les conclusions présentées ici doivent être lues comme indicatives — pour une forensique conclusive, il faudrait les ~11 000 procès-verbaux niveau bureau de vote (11 181 en 2010, 13 725 en 2015), qui existent mais ne sont pas accessibles publiquement.

  • 1. Loi de Benford (1938) — premier chiffre significatif

    Dans des données numériques produites par un processus naturel (votes par bureau, montants comptables, populations), la fréquence du premier chiffre suit P(d) = log₁₀(1 + 1/d). Une distribution uniforme (~11 % par chiffre) trahit la fabrication humaine. Test : χ² entre fréquences observées et théoriques.

  • 2. Election fingerprints (Klimek et al., PNAS 2012)

    Dans une élection propre, la corrélation entre le taux de participation d'une unité électorale et la part du gagnant dans cette unité doit être proche de zéro. Un signal positif fort suggère une mobilisation orchestrée des bastions ; un signal négatif fort suggère une fraude ciblée dans les zones peu surveillées.

  • 3. Random Forest (Levin et al., PLOS One 2019)

    Classifieur entraîné sur 1 000 exemples synthétiques répartis en trois classes (propre, fraude légère, fraude extrême) puis appliqué aux 30 observations haïtiennes pour produire un score de risque par département. Quatre features : participation, score du gagnant, % de PV quarantinés, ratio de mandataires accrédités.

scripts/01_build_dataset.pypython
# Anomalies détectées : score gagnant élevé ET PV exclus élevé
anomalies = combined[
    (combined["pv_quarantined_pct"] > 8) &
    (combined["national_winner_pct"] > 55)
][["dept", "year", "turnout_pct",
   "national_winner_pct", "pv_quarantined_pct"]]

for _, r in anomalies.iterrows():
    print(f"⚠️  {r['dept']} {int(r['year'])} — "
          f"part gagnant {r['national_winner_pct']:.0f}% | "
          f"PV exclus {r['pv_quarantined_pct']:.1f}%")

# Sortie effective :
#   ⚠️  Nord-Est   2015 — part gagnant 63% | PV exclus 9.8%
#   ⚠️  Nippes     2016 — part gagnant 58% | PV exclus 10.5%
#   ⚠️  Nord       2016 — part gagnant 64% | PV exclus 11.5%
#   ⚠️  Nord-Est   2016 — part gagnant 72% | PV exclus 13.0%
#   ⚠️  Nord-Ouest 2016 — part gagnant 66% | PV exclus 12.0%

Détection automatique des départements où le score officiel du gagnant et le taux de PV exclus sont simultanément élevés — première anomalie macro à investiguer.

Résultats — convergence des trois méthodes sur le Nord

Les trois méthodes ne disent pas exactement la même chose, mais convergent vers les mêmes départements. La loi de Benford ne détecte aucune anomalie significative aux trois élections — ce qui est attendu sur n ≈ 50 valeurs (la méthode requiert ~500 observations pour être robuste). Les fingerprints et le Random Forest, eux, isolent un cluster cohérent de quatre départements du Nord.

Le Nord-Est 2015 est le département le plus marqué de l'ensemble : participation au-dessus de la moyenne (38,8 %), score Moïse extrême (62,6 %), et taux de PV quarantinés maximum (9,8 %). Il atteint un score de risque de 99,9 % dans le Random Forest. En 2016, ce même département voit le score Moïse passer à 72 % avec 13 % de PV exclus.

Le pattern est reproduit, à un degré moindre, dans le Nord (64 % en 2016, 11,5 % de PV exclus), le Nord-Ouest (66 %, 12 %) et marginalement les Nippes 2015. Géographiquement, ces quatre départements forment une zone contiguë centrée sur Trou-du-Nord (Nord-Est) — siège de l'entreprise Agritrans et fief politique historique de Jovenel Moïse.

À l'inverse, dans l'Ouest (qui concentre 36 % des inscrits, dont la métropole de Port-au-Prince), Moïse passe de 22 % en 2015 à 50 % en 2016 alors même que la participation s'effondre de 20,3 % à 14 %. Le CEPR qualifie ce résultat de « perhaps most surprising » dans son rapport final.

Heatmap par département et par année du score du gagnant
Score du gagnant national par département × année. La progression du Nord et du Nord-Est est nettement plus rapide que la moyenne nationale entre 2015 et 2016.Source : Fanal — calcul à partir des rapports CEPR

Anomalies macro — départements à signaler

Cinq couples (département, année) où le score du gagnant dépasse 55 % et le taux de PV exclus dépasse 8 % simultanément.

DépartementAnnéeParticipationScore gagnantPV exclus
Nord-Est201538,8 %62,6 %9,8 %
Nord-Est201625,0 %72,0 %13,0 %
Nord-Ouest201621,0 %66,0 %12,0 %
Nord201620,0 %64,0 %11,5 %
Nippes201622,0 %58,0 %10,5 %
Méthode 1 — Loi de Benford

On extrait toutes les valeurs numériques disponibles (votes valides totaux, inscrits, votes estimés par candidat) de chaque dataset départemental, puis on calcule la fréquence du premier chiffre significatif. Le test du χ² mesure l'écart à la distribution théorique de Benford.

Sur les quatre datasets testés (1 synthétique de référence + 3 années haïtiennes), aucun ne rejette H₀ (distribution conforme à Benford) au seuil de 5 %. Ce résultat n'est pas une preuve d'absence de fraude : avec n ≈ 50 valeurs, la puissance statistique du test est trop faible pour distinguer une distribution propre d'une distribution manipulée. Le résultat est conservé ici comme borne inférieure méthodologique — pour appliquer Benford de façon conclusive, il faudrait les ~11 000 PV niveau bureau de vote.

Distribution du premier chiffre significatif comparée à la loi de Benford
Distribution observée du premier chiffre significatif des volumes de votes par département (2010, 2015, 2016) vs distribution théorique de Benford. Aucune déviation significative n'est détectée — résultat attendu sur n ≈ 50.Source : Fanal — script 02_benford.py
scripts/02_benford.pypython
def benford_expected():
    """Distribution théorique de Benford pour les chiffres 1-9."""
    return {d: np.log10(1 + 1/d) * 100 for d in range(1, 10)}

def benford_test(counts, label):
    """
    Test chi-carré : H0 = distribution suit Benford.
    p > 0.05 → conforme | p < 0.05 → anomalie.
    """
    benford = benford_expected()
    digits  = [first_digit(x) for x in counts if first_digit(x)]
    n       = len(digits)
    obs_n   = [digits.count(d) for d in range(1, 10)]
    exp_n   = [benford[d] / 100 * n for d in range(1, 10)]
    chi2, pval = stats.chisquare(obs_n, exp_n)
    return {'label': label, 'n': n, 'chi2': chi2,
            'p_value': pval, 'significant': pval < 0.05}

Test du χ² entre la distribution observée du premier chiffre et la distribution théorique de Benford (P(d) = log₁₀(1+1/d)).

Résultats du test du χ² de Benford

Datasetnχ²p-valueVerdict
Synthétique (référence)9985,680,6833Conforme
Haïti 2010506,230,6215Conforme
Haïti 20156010,260,2474Conforme
Haïti 20166011,990,1515Conforme

p > 0,05 : on ne peut pas rejeter H₀ — distribution observée compatible avec Benford. Test sous-puissancé pour n < 500.

Méthode 2 — Election Fingerprints (Klimek 2012)

On corrèle, pour chaque année, le taux de participation des dix départements à la part du gagnant national dans ces mêmes départements. Dans une élection propre, cette corrélation doit être proche de zéro : un gagnant légitime mobilise des bastions à forte participation comme à faible participation.

On effectue ensuite un second test, plus discriminant : la corrélation entre le taux de procès-verbaux quarantinés et le score du gagnant. Si les irrégularités touchent indifféremment tous les candidats, cette corrélation doit aussi être proche de zéro. Une corrélation positive signifie que les départements où la machine électorale dérape sont précisément ceux où le gagnant officiel est le plus fort — signature classique d'une fraude orientée.

Sur les données haïtiennes, le second test produit un signal net : r = 0,841 (p = 0,002) en 2015 et r = 0,715 (p = 0,020) en 2016. Statistiquement significatifs malgré la petite taille de l'échantillon.

Election fingerprints — corrélations participation/score et PV exclus/score
Cinq panneaux d'analyse : participation × score gagnant pour les trois élections (panneaux 1-3), puis score gagnant × PV exclus pour 2015 et 2016 (panneaux 4-5). Les régressions linéaires sont superposées en pointillé.Source : Fanal — script 03_fingerprints.py
scripts/03_fingerprints.pypython
for df, year in [(d2010, 2010), (d2015, 2015), (d2016, 2016)]:
    x = df['turnout_pct'].values
    y = df['national_winner_pct'].values
    r, pval = stats.pearsonr(x, y)
    print(f"{year} — r = {r:.3f}, p = {pval:.4f}")

# Test discriminant : PV exclus × score gagnant
for df, year in [(d2015, 2015), (d2016, 2016)]:
    x = df['pv_quarantined_pct'].values
    y = df['national_winner_pct'].values
    r, pval = stats.pearsonr(x, y)
    signal = "⚠️  SIGNAL" if pval < 0.05 else ""
    print(f"{year} — r(PV_exclus, score_gagnant) = "
          f"{r:.3f} (p={pval:.3f}) {signal}")

# Sortie effective :
#   2015 — r(PV_exclus, score_gagnant) = 0.841 (p=0.002) ⚠️  SIGNAL
#   2016 — r(PV_exclus, score_gagnant) = 0.715 (p=0.020) ⚠️  SIGNAL

Calcul des deux corrélations (turnout × winner_share, puis pv_quarantined × winner_share) pour chaque élection avec scipy.stats.pearsonr.

Corrélations Pearson — fingerprints

TestAnnéerp-valueVerdict
Participation × score gagnant20100,2850,4244Faible (normal)
Participation × score gagnant20150,6140,0588Modérée
Participation × score gagnant20160,6200,0557Modérée
PV exclus × score gagnant20150,8410,002⚠️ SIGNAL
PV exclus × score gagnant20160,7150,020⚠️ SIGNAL

Le second test (PV exclus × score gagnant) est statistiquement significatif au seuil de 5 % pour 2015 et 2016. Lecture : les départements où la machine électorale a quarantiné le plus de procès-verbaux sont précisément ceux où Jovenel Moïse a obtenu ses meilleurs scores.

Méthode 3 — Random Forest sur features synthétiques

Quatre variables sont extraites par couple (département, année) : participation, score du gagnant national, % de procès-verbaux quarantinés, ratio mandataires accrédités / électeurs valides. On entraîne un classifieur Random Forest (300 arbres, profondeur max 6, classes équilibrées) sur 1 000 exemples synthétiques répartis en trois classes : propre (n = 600), fraude légère (n = 250), fraude extrême (n = 150). Les paramètres des distributions synthétiques sont calibrés à partir de la littérature (Klimek 2012, Levin 2019) et des moyennes haïtiennes observées.

Performance en validation croisée 5-folds : F1 pondéré = 0,997 ± 0,004 ; accuracy = 0,997 ± 0,004. Ces métriques mesurent la capacité du modèle à séparer les classes synthétiques — pas sa capacité à détecter de la fraude réelle. Le Random Forest produit ici un score de risque interprétable comme : « ce département ressemble statistiquement aux exemples étiquetés 'fraude' dans nos données synthétiques ».

Appliqué aux 30 observations haïtiennes, le modèle produit un score de risque maximal de 99,9 % pour le Nord-Est 2015. Importance des variables : participation (56,1 %), score gagnant (32,9 %), ratio mandataires (10,5 %), PV exclus (0,5 %). La très faible importance du % PV exclus s'explique mécaniquement : cette variable est presque constante par année (mêmes pratiques de quarantaine pour tous les départements d'une même élection).

Random Forest — scores de risque par département et importance des variables
Quatre panneaux : matrice de confusion (CV), importance des variables, distribution des scores de risque sur les données haïtiennes, et top-N départements à risque.Source : Fanal — script 04_random_forest.py
scripts/04_random_forest.pypython
np.random.seed(42)
N_CLEAN, N_FRAUD1, N_FRAUD2 = 600, 250, 150

# Classe 0 — propre : moyennes haïtiennes "normales"
clean = {
    'turnout':          np.clip(np.random.normal(22, 6, N_CLEAN), 5, 50),
    'winner_share':     np.clip(np.random.normal(37, 10, N_CLEAN), 10, 65),
    'pv_quarantined':   np.clip(np.random.exponential(3, N_CLEAN), 0, 15),
    'mandataire_ratio': np.clip(np.random.normal(0.38, 0.12, N_CLEAN), 0.1, 0.7),
    'label': np.zeros(N_CLEAN, dtype=int),
}
# Classe 1 — fraude légère : turnout + winner_share gonflés
fraud1 = {
    'turnout':          np.clip(np.random.normal(50, 12, N_FRAUD1), 35, 80),
    'winner_share':     np.clip(np.random.normal(72, 8, N_FRAUD1), 55, 92),
    'pv_quarantined':   np.clip(np.random.exponential(9, N_FRAUD1), 3, 35),
    'mandataire_ratio': np.clip(np.random.normal(0.68, 0.1, N_FRAUD1), 0.5, 0.95),
    'label': np.ones(N_FRAUD1, dtype=int),
}
# Classe 2 — fraude extrême : signature Klimek type 2 (~100/100)
fraud2 = {
    'turnout':          np.clip(np.random.normal(88, 7, N_FRAUD2), 75, 100),
    'winner_share':     np.clip(np.random.normal(93, 4, N_FRAUD2), 85, 100),
    'pv_quarantined':   np.clip(np.random.exponential(15, N_FRAUD2), 5, 50),
    'mandataire_ratio': np.clip(np.random.normal(0.85, 0.08, N_FRAUD2), 0.7, 1.0),
    'label': 2 * np.ones(N_FRAUD2, dtype=int),
}

Génération du dataset synthétique tri-classe (propre / fraude légère / fraude extrême) calibré sur les moyennes haïtiennes documentées par CEPR.

scripts/04_random_forest.pypython
rf = RandomForestClassifier(
    n_estimators=300,
    max_depth=6,
    min_samples_leaf=5,
    class_weight='balanced',
    random_state=42,
    n_jobs=-1,
)
rf.fit(X, y)

# Validation croisée 5-folds
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
cv_f1  = cross_val_score(rf, X, y, cv=cv, scoring='f1_weighted')
cv_acc = cross_val_score(rf, X, y, cv=cv, scoring='accuracy')
# F1 = 0.997 ± 0.004  |  Accuracy = 0.997 ± 0.004

# Application aux données haïtiennes (10 depts × 3 années)
proba = rf.predict_proba(X_real)
df_real['risk_score'] = proba[:, 1] + proba[:, 2]   # P(fraude légère ou extrême)

Entraînement du Random Forest et validation croisée 5-folds. Le modèle est ensuite appliqué aux 30 observations haïtiennes (predict_proba).

Top 8 scores de risque Random Forest

DépartementAnnéeParticipationScore gagnantPV exclusScore risque
Nord-Est201538,8 %62,6 %9,8 %99,9 %
Nippes201537,2 %38,5 %4,8 %42,6 %
Nord-Est201625,0 %72,0 %13,0 %5,4 %
Nord-Ouest201621,0 %66,0 %12,0 %5,4 %
Nord201620,0 %64,0 %11,5 %4,8 %
Nord-Ouest201530,0 %54,6 %6,4 %2,8 %
Centre201621,0 %55,0 %11,5 %1,2 %
Centre201532,0 %38,0 %5,0 %1,0 %

Le score de risque représente P(classe ≠ propre) selon le modèle entraîné sur les données synthétiques. Le contraste entre Nord-Est 2015 (99,9 %) et le reste s'explique par la combinaison rare d'une participation élevée + score gagnant élevé + PV exclus élevés simultanément.

Chronologie des chocs identifiés
  1. 12 jan. 2010

    Séisme à Port-au-Prince

    230 000 morts, 1,5 million de déplacés. La présidentielle est reportée à novembre.

  2. Nov. – Déc. 2010

    Présidentielle 2010 — modification OEA

    Participation officielle 23,1 %. L'OEA modifie publiquement le résultat du 1er tour : Célestin sort, Martelly entre. CEPR documente l'absence de justification statistique.

  3. 25 oct. 2015

    Premier tour — anomalie Nord-Est

    J. Moïse remporte 32,76 % au niveau national. Score Nord-Est : 62,6 % avec 9,8 % de PV quarantinés. CEPR : « intriguingly highest in Nord-Est ».

  4. Janv. 2016

    Annulation du 1er tour

    Sous la pression d'un mouvement civique, un CEP de transition annule le 1er tour. La CIEVE documente que 46 % des PV contiennent au moins trois irrégularités.

  5. 4 oct. 2016

    Ouragan Matthew

    Dévastation du Sud et de la Grande-Anse, 800+ morts. Logistique électorale compromise dans plusieurs départements.

  6. 20 nov. 2016

    Présidentielle 2016 — Moïse 55,7 %

    Participation 19,2 %. Mandat effectif : 10,7 % des inscrits. Cluster Nord à 64–72 %. Score Random Forest maximum sur Nord-Est 2015 : 99,9 %.

  7. Avril 2026

    Publication Fanal — code et figures versés

    Scripts Python reproductibles publiés sur la branche fanal-data. Cette page consomme directement les sorties générées (CSV + PNG).

Implications et limites

Les résultats convergent sur un constat : il existe un signal statistique cohérent autour des bastions du Nord (Nord, Nord-Est, Nord-Ouest) sur les présidentielles 2015 et 2016. La corrélation positive entre PV quarantinés et score du gagnant est, à elle seule, suffisamment marquée pour mériter une investigation indépendante au niveau bureau de vote.

Trois précautions méthodologiques cadrent ces conclusions :

  • Corrélation n'est pas causalité

    Une corrélation forte entre deux variables peut s'expliquer par une fraude, mais aussi par une variable confondante non observée — par exemple, un meilleur maillage des mandataires PHTK dans les fiefs du candidat, qui rendrait à la fois leur score plus élevé et la quarantaine de PV plus efficace dans ces zones.

  • Granularité insuffisante

    n = 30 observations (3 années × 10 départements) est insuffisant pour faire de la statistique robuste. Toutes les conclusions présentées ici devraient être répliquées sur les ~11 000 PV niveau bureau de vote (11 181 pour 2010, 13 725 pour 2015), qui existent au CEP mais n'ont jamais été publiés ouvertement.

  • Random Forest entraîné sur du synthétique

    Le score de risque est calibré sur des distributions synthétiques. Il n'a pas vu de données fraudées réelles. Sa puissance est donc bornée par la qualité du modèle de fraude qu'on lui a fourni.

Sources et documents de référence