retour au portfolio
kayou ba · sports analytics · 2025
étude de cas · football analytics

Si tu ne marques pas,
tu encaisses.
vraiment ?

Test empirique de l'adage le plus célèbre du football, à travers 70 000 tirs et 10 compétitions, de 1958 à 2024. Spoiler : c'est un mythe.

70 399
tirs analysés
2 796
matchs
10
compétitions
66 ans
de données
verdict après analyse
Mythe.
p > 0.05 · null model bernoulli

Une croyance universelle, jamais vérifiée.

L'adage « si tu ne marques pas, tu encaisses » vit partout dans le football. On l'entend sur les plateaux TV, dans les vestiaires, dans les commentaires de matchs et dans les discussions entre supporters. C'est une phrase qui semble vraie parce qu'elle colle parfaitement au récit émotionnel du sport.

Le scénario est connu : une équipe domine, se crée deux ou trois énormes occasions, ne marque pas, puis concède sur la première transition adverse. Le commentateur n'a même pas besoin de réfléchir : la phrase est déjà prête. Le problème, c'est qu'un récit marquant n'est pas une preuve.

En réalité, notre cerveau retient surtout les séquences douloureuses, spectaculaires, presque morales. Le football adore ces histoires de punition immédiate : tu gâches devant, tu paies derrière. Elles sont simples, mémorables, et elles donnent l'impression d'expliquer le match.

J'ai voulu traiter cette phrase comme une vraie hypothèse de recherche. Pas comme une intuition, pas comme une opinion de consultant, mais comme une question mesurable : rater une grosse occasion augmente-t-il réellement le risque de concéder dans les minutes qui suivent ?

Pour y répondre, j'ai construit un pipeline complet à partir des données ouvertes de StatsBomb, couvrant 70 399 tirs, 2 796 matchs et 10 compétitions. L'idée n'était pas seulement de regarder si l'adage semble faux ou vrai à première vue, mais de le tester contre plusieurs explications alternatives : score du match, dynamique, variance, régression vers la moyenne, et simple hasard.

Ce projet n'est pas seulement une analyse football. C'est aussi une démonstration de méthode : comment passer d'un cliché largement accepté à une conclusion défendable, reproductible et statistiquement robuste.

Quand tu ne marques pas ces occasions-là, tu sais ce qui se passe derrière…

— tous les commentateurs, tous les matchs

Le xG, ou comment transformer un tir en probabilité.

Pour tester l'adage sérieusement, il fallait d'abord définir ce qu'est une grosse occasion. C'est là qu'intervient le xG, pour expected goals, l'une des métriques les plus utiles — et aussi les plus mal comprises — de l'analytics football.

C'est quoi, concrètement ?

Le xG attribue à chaque tir une probabilité de finir en but. Un tir à 0.40 xG signifie qu'un tir de ce type est converti environ 40 % du temps dans une grande base historique de tirs comparables.

Dit autrement : le xG ne prédit pas si ce tir précis va rentrer. Il mesure la qualité moyenne de la situation.

Comment c'est calculé ?

Les modèles de xG utilisent des milliers de tirs historiques pour estimer la probabilité de marquer selon plusieurs variables observables :

  • distance au but
  • angle de tir
  • partie du corps utilisée
  • type de passe précédent
  • type d'action (jeu ouvert, coup de pied arrêté, penalty)
  • pression défensive ou configuration de la séquence, selon les fournisseurs

Pourquoi c'est utile ici ?

Parce que toutes les occasions ratées ne se valent pas. Rater une frappe de 30 mètres n'a pas le même sens que rater un face-à-face à six mètres. Le xG permet de distinguer les occasions banales des vraies opportunités qui, dans le langage courant, alimentent le récit de la « punition ».

Dans ce projet, je traite comme grosses occasions les tirs avec xG ≥ 0.4.

Ses limites

Le xG n'est pas une vérité parfaite. Il simplifie le réel. Deux tirs avec le même xG peuvent ne pas se ressembler totalement à l'œil nu. Il capture très bien la structure moyenne d'une occasion, mais moins bien certains détails fins : qualité exacte du contrôle, vitesse d'exécution, talent exceptionnel du finisseur, placement du gardien au centimètre près.

C'est précisément pour cela qu'il faut rester prudent : le xG est un excellent outil d'analyse agrégée, pas un juge absolu sur une action isolée.

En résumé : le xG ne dit pas qu'un joueur devait marquer. Il dit qu'une équipe s'est créée une occasion qui, historiquement, se transforme souvent en but. C'est exactement le bon langage pour passer du commentaire subjectif à l'évaluation probabiliste.

Sept couches de vérification.

Une approche multi-couches pour garantir la robustesse de la conclusion. Chaque méthode contrôle un type de biais différent — du plus simple test descriptif au null model Bernoulli, qui est la pièce maîtresse du projet.

01

Event study

Comparaison traité (équipes qui gaspillent) vs contrôle, sur des fenêtres futures de 5, 10 et 15 minutes.

02

Stratification

Test refait séparément selon le score (mène, égalité, perd) pour éliminer le confounding du contexte.

03

Test de permutation

10 000 itérations non-paramétriques pour valider sans hypothèse distributionnelle.

04

Tests multiples

Correction Benjamini-Hochberg pour éviter les faux positifs sur les seuils testés.

05

Régression logistique

Avec clustered standard errors par match pour contrôler l'autocorrélation au sein d'un même jeu.

06

Cross-validation

GroupKFold par match pour mesurer le vrai pouvoir prédictif (AUC, Brier score) sans data leakage.

Cinq découvertes contre-intuitives.

01

La « malédiction » de l'occasion ratée n'existe pas.

Après une grosse occasion ratée (xG ≥ 0.4), l'équipe ne devient pas plus vulnérable. La différence avec une occasion marquée est statistiquement nulle.

9.9% après occasion ratée
9.3% après occasion marquée
02

Rater un penalty te protège.

La stat la plus contre-intuitive du projet. Sur 658 penalties analysés, l'équipe qui rate concède presque deux fois moins que celle qui marque. La raison : marquer force l'adversaire à pousser et à se découvrir.

5.2% après penalty raté
8.7% après penalty marqué
03

Le « siège » ne casse pas les défenses.

Que l'équipe ait tiré 0 ou 10+ fois sans marquer d'affilée, son risque de concéder reste plat autour de la moyenne (~14 %). Le récit du « siège qui finit en contre fatal » ne tient pas face aux données.

04

Le résultat tient partout.

Forest plot sur 10 compétitions, de 1958 à 2024 : 7 montrent un effet négatif (gaspiller protège même légèrement), aucune ne montre d'effet positif significatif. La Liga, Premier League, Serie A, Bundesliga, Ligue 1, Coupe du Monde — l'adage est faux partout.

05

Un cas d'école du paradoxe de Simpson.

Au niveau équipe, on observe une corrélation positive (r = 0.31) entre gaspillage et concession. Mais elle disparaît dès qu'on analyse minute par minute au sein d'un même match. La corrélation au niveau global reflète la force globale de l'équipe — pas un mécanisme causal.

Le piège statistique le plus élégant du foot, et la raison principale pour laquelle l'adage semble vrai à l'œil nu.

Six compétences en action.

Pour un scan rapide : voici les compétences mises en évidence et où les retrouver dans le repo GitHub.

01

Pipeline end-to-end

De la collecte d'API à la figure publication-ready, en passant par le nettoyage, le feature engineering et la modélisation.

02

Rigueur statistique

Correction pour tests multiples, clustered standard errors, GroupKFold cross-validation, tests non-paramétriques.

03

Pensée causale

Stratification, conscience du paradoxe de Simpson, null models, distinction entre corrélation et causalité.

04

Qualité du code

Code modulaire orienté objet, type hints, logging structuré, tests unitaires, configuration centralisée via YAML.

05

Communication

Visualisations publication-ready, narration data-driven, capacité à transformer une analyse complexe en histoire claire.

06

Connaissance métier

Sémantique du xG, compréhension des confounders propres au football, raisonnement tactique.

Python scientifique, pipeline reproductible.

Python 3.9+
pandas
numpy
scipy
statsmodels
scikit-learn
lifelines
matplotlib
seaborn
statsbombpy
jupyter
git

Voir le projet en détail.

7 notebooks Jupyter, 15 figures, et tout le code source en open source.