Mitroglou et la régression (1)

Préambule : le titre de cet article est une référence à un excellent article du même nom rédigé par Sébastien Chapuis sur Bielsa.

Kostantinos Mitroglou connaît des débuts plus que difficiles sous le maillot olympien. Difficiles à tel point qu’un départ a même été évoqué lors du mercato hivernal. Sa production de buteur en Ligue 1 est relativement quelconque avec 3 buts pour 30 tirs tentés en 611 minutes, ce qui donne un taux de conversion de 10% et 0.44 buts par 90 minutes.

Avant sa blessure, le Grec semblait commencer à retrouver confiance en ses qualités, en témoigne son excellent match en Coupe de France même si on pourra toujours arguer qu’il ne s’agissait que d’une Ligue 2 et qu’il a ensuite raté “l’immanquable” contre Saint-Etienne.

Pourtant, Mitroglou a brillé quasiment partout où il est passé :

Championnat Minutes jouées Buts marqués Buts par 90min
Super League (Grèce) 10319 82 0.72
Liga NOS (Portugal) 4434 35 0.71
Champions League 2938 16 0.49

Nous n’avons a priori pas de raisons de douter de son rendement à moyen terme, malgré des débuts mitigés.

Partant de là, 3 questions me viennent naturellement à l’esprit :

  1. Par rapport à ses pairs, ses prestations sous le maillot de l’OM sont-elles réellement mauvaises et si oui, à quel point ?
  2. A partir de sa production sous ses nouvelles couleurs, quel niveau de certitude avons-nous quant à son niveau réel ?
  3. A quoi peut-on s’attendre pour l’avenir ?

Quelques points de référence

3 buts en 30 tirs qu’est-ce que cela vaut ? Que font les joueurs qui évoluent au même poste ?

Notre dataset contient les minutes jouées, les tirs et les buts (hors penalty) des attaquants titularisés lors des 5 dernières saisons des 5 grands championnats, ce qui nous donne 750 points de référence :

## # A tibble: 750 x 7
##    season    league        player      team      minutes np_goals np_shots
##    <chr>     <chr>         <chr>       <chr>       <int>    <int>    <int>
##  1 2015/2016 SerieA        Gonzalo Hi… Napoli       2978       33      179
##  2 2012/2013 PremierLeague Luis Suárez Liverpool    2337       18      158
##  3 2013/2014 PremierLeague Luis Suárez Liverpool    2609       30      157
##  4 2016/2017 SerieA        Edin Dzeko  Roma         2909       25      157
##  5 2015/2016 PremierLeague Harry Kane  Tottenham    3370       20      154
##  6 2015/2016 Ligue1        Zlatan Ibr… Paris Sa…    2506       33      146
##  7 2012/2013 SerieA        Edinson Ca… Napoli       2956       20      143
##  8 2013/2014 SerieA        Mario Balo… AC Milan     2166       11      139
##  9 2014/2015 PremierLeague Sergio Agü… Manchest…    2488       19      136
## 10 2015/2016 Bundesliga    Robert Lew… Bayern M…    2570       21      135
## # ... with 740 more rows

Plutôt que d’étudier le rendement d’un joueur saison par saison, il est préférable pour cet exercice d’agréger les données d’un joueur sur plusieurs années lorsque c’est possible. Nous cherchons à extraire de ces données ce qui relève du talent, par-delà les périodes de réussites (ou d’échec) conjoncturelles. En consolidant les données, nous obtenons un volume de tirs plus significatif par joueur et donc plus représentatif de son niveau intrinsèque.

library(tidyverse)
set.seed(13)
strikers12_17_grouped <- strikers12_17 %>%
  group_by(player) %>%
  summarise(tot_shots = sum(np_shots),
            tot_goals = sum(np_goals)) %>%
  mutate(conv_rate = tot_goals / tot_shots) 

Cela nous donne désormais 401 joueurs uniques, mais on constate hélas que la moitié d’entre eux a pris moins de 64 tirs dont un qui n’en n’a pris que 5 et pire encore, qu’un joueur n’a marqué aucun but.

summary(strikers12_17_grouped)
##     player            tot_shots        tot_goals        conv_rate     
##  Length:401         Min.   :  5.00   Min.   :  0.00   Min.   :0.0000  
##  Class :character   1st Qu.: 34.00   1st Qu.:  5.00   1st Qu.:0.1064  
##  Mode  :character   Median : 64.00   Median :  9.00   Median :0.1429  
##                     Mean   : 98.04   Mean   : 14.64   Mean   :0.1440  
##                     3rd Qu.:129.00   3rd Qu.: 18.00   3rd Qu.:0.1771  
##                     Max.   :631.00   Max.   :129.00   Max.   :0.3824

Une des raisons pour lesquelles il est préférable d’utiliser un échantillon composé de joueurs ayant pris un grand nombre de tirs est le phénomène de régression vers la moyenne. Ce phénomène s’illustre de façon très simple via le nuage de points ci-dessous : plus un joueur tire plus son taux de conversion se rapproche de la moyenne de l’échantillon 1.

On le voit, la barre des 30% n’est franchie ici que par des joueurs ayant moins de 50 tirs :

strikers12_17_grouped %>%
  filter(conv_rate >= .3)
## # A tibble: 8 x 4
##   player              tot_shots tot_goals conv_rate
##   <chr>                   <int>     <int>     <dbl>
## 1 Adalberto Peñaranda        16         5     0.312
## 2 Eden Ben Basat             16         6     0.375
## 3 Javier Saviola             22         7     0.318
## 4 Kylian Mbappe              34        13     0.382
## 5 Luc Castaignos             13         4     0.308
## 6 Marcus Rashford            16         5     0.312
## 7 Marouane Chamakh           12         4     0.333
## 8 Mohammed Abdellaoue        15         5     0.333

Après une réduction relativement arbitraire de notre échantillon aux joueurs à 100 tirs ou plus et un tri descendant sur le taux de conversion nous obtenons les finisseurs suivants :

strikers_100 <- strikers12_17_grouped %>%
  filter(tot_shots >= 100)
## # A tibble: 137 x 4
##   player            tot_shots tot_goals conv_rate
##   <chr>                 <int>     <int>     <dbl>
## 1 Bas Dost                104        29     0.279
## 2 Miroslav Klose          135        37     0.274
## 3 Chicharito              105        26     0.248
## 4 Lionel Messi            300        71     0.237
## 5 Fernando Llorente       150        35     0.233
## # ... with 132 more rows
##     player            tot_shots       tot_goals        conv_rate      
##  Length:137         Min.   :100.0   Min.   :  8.00   Min.   :0.05128  
##  Class :character   1st Qu.:129.0   1st Qu.: 17.00   1st Qu.:0.11905  
##  Mode  :character   Median :162.0   Median : 23.00   Median :0.14595  
##                     Mean   :199.4   Mean   : 30.71   Mean   :0.14967  
##                     3rd Qu.:242.0   3rd Qu.: 38.00   3rd Qu.:0.17365  
##                     Max.   :631.0   Max.   :129.00   Max.   :0.27885

La moitié des attaquants à 100 tirs ou plus se situe entre 11.9% et 17.4% de tirs convertis en but ou, pour le représenter sous forme d’histogramme :

Mitroglou, avec ses 10% de taux de conversion, ne serait pas vraiment dans le bon wagon. Pour être précis, si nous devions le positionner sur cette distribution il serait situé sur le percentile suivant :

ecdf_fun <- function(x,perc) ecdf(x)(perc)

scales::percent(ecdf_fun(strikers_100$conv_rate, 0.10))
## [1] "8.03%"

Prises de manière brute, les performances de Mitroglou le mettraient parmi les 8% des attaquants les moins adroits de mon échantillon, parmi lesquels nous retrouvons :

## # A tibble: 137 x 4
##    player              tot_shots tot_goals conv_rate
##    <chr>                   <int>     <int>     <dbl>
##  1 Riccardo Meggiorini       156         8    0.0513
##  2 Papiss Demba Cissé        138         9    0.0652
##  3 Andy Delort               170        12    0.0706
##  4 Amauri                    143        11    0.0769
##  5 Fabio Quagliarella        318        25    0.0786
##  6 Haris Seferovic           134        11    0.0821
##  7 Martin Braithwaite        233        21    0.0901
##  8 Jordan Ayew               129        12    0.0930
##  9 Rickie Lambert            175        17    0.0971
## 10 Dimitar Berbatov          142        14    0.0986
## 11 Luis Muriel               140        14    0.100 
## # ... with 126 more rows

Si notre buteur s’en tenait là, on aurait en effet de quoi se montrer insatisfaits. Mais nous retrouvons ici notre question de départ : quel niveau de certitude avons nous après 30 tirs d’un attaquant de pointe ?

Pour se faire une idée sur la question, nous allons nous appuyer sur cette population de joueurs à plus de 100 tirs et les caractéristiques de l’attaquant moyen.

Mitroglou et les 100 000 buteurs

Afin de nous aider dans l’évaluation d’un Mitroglou à 3 buts en 30 tirs, il est possible de donner virtuellement 30 tirs à un attaquant de pointe moyen (sur la base des caractéristiques de notre échantillon) et de voir combien il marquerait de buts. L’objectif est de comprendre combien de buts cet attaquant moyen peut marquer en 30 tirs et surtout avec quelle probabilité, l’idée étant de comprendre si ces 3 buts relèvent d’une vraie sous-performance ou si c’est au contraire quelque chose de relativement fréquent.

Avec le langage de programmation R, la fonction rbinom rempli exactement cet office : elle nous permet de simuler des tirages aléatoires avec une probabilité de succès pour chacun des tirages. Idéal pour modéliser un attaquant et ses tirs. Pour illustrer son fonctionnement, et avant de répondre à la question initiale, générons plusieurs fois 10 tirs d’un attaquant de haut niveau, qui aurait un taux de conversion intrinsèque de 20% et regardons le nombre de buts :

rbinom(10, 1, 0.20)
##  [1] 0 0 0 0 1 0 0 0 1 0
rbinom(10, 1, 0.20)
##  [1] 0 1 1 0 0 0 0 0 1 0
rbinom(10, 1, 0.20)
##  [1] 0 0 0 0 0 0 0 0 0 0

En 10 tirs, le premier a marqué deux buts, le deuxième trois et le dernier zéro. C’est le football, des périodes de réussite et de doute. Mais au bout de 100 tirs que voit-on2 ?

rbinom(1, 100, 0.20)
## [1] 19
rbinom(1, 100, 0.20)
## [1] 19
rbinom(1, 100, 0.20)
## [1] 26

Même des attaquants ayant théoriquement un niveau identique ne marquent pas le même nombre de buts au bout de 100 tirs. Les footballeurs ne sont pas des machines… Pour faire encore mieux toucher du doigt cette réalité, on peut simuler 100 000 attaquants qui prendraient 100 tirs chacun et voir comment serait distribué le nombre de buts marqués :

La majorité de nos attaquants se situe autour des 20 buts mais avec des variations.

Revenons à notre buteur lambda et à Mitroglou et ses 30 tirs. De la même façon, on peut chercher à savoir comment se situe la performance réelle du phocéen au sein d’une population virtuelle de 100 000 attaquants lambda. Pour ce faire, on va simplement indiquer comme taux de conversion de référence le taux de conversion median des attaquants du Top 5.

median(strikers_100$conv_rate)
## [1] 0.1459459
strikers_30_s <- rbinom(100000, 30, median(strikers_100$conv_rate))

Visuellement, 3 buts en 30 tirs ne semble pas être un cas particulièrement rare pour un buteur moyen et on note même que c’est la troisième valeur la plus fréquente.

mean(strikers_30_s == 3)
## [1] 0.17876
mean(strikers_30_s <= 3)
## [1] 0.34336

Pour être exact, marquer 3 buts arrive dans environ 18% des cas après 30 tirs et marquer 3 buts ou moins dans environ 34% des cas. C’est loin d’être un phénomène rare après 30 tirs, y compris pour un buteur moyen.

On peut aussi s’amuser à regarder, à l’inverse, comment évolue le taux de conversion de 26 joueurs moyens (14.6%), à partir d’une simulation de 500 tirs.

avg_strikers <- purrr::map_dfr(
  letters,
  ~ tibble(player = .,
           shots = 1:500,
           goals = cumsum(rbinom(500 , 1, median(strikers_100$conv_rate))),
           conv_rate = goals / shots))
## # A tibble: 13,000 x 4
##    player shots goals conv_rate
##    <chr>  <int> <int>     <dbl>
##  1 a          1     0    0.    
##  2 a          2     0    0.    
##  3 a          3     0    0.    
##  4 a          4     0    0.    
##  5 a          5     0    0.    
##  6 a          6     0    0.    
##  7 a          7     0    0.    
##  8 a          8     0    0.    
##  9 a          9     0    0.    
## 10 a         10     0    0.    
## 11 a         11     0    0.    
## 12 a         12     0    0.    
## 13 a         13     0    0.    
## 14 a         14     1    0.0714
## 15 a         15     2    0.133 
## # ... with 1.298e+04 more rows

Le joueur fictif “a” vendange ici ses 13 premiers tirs et marque ensuite deux buts coup sur coup, faisant évoluer son taux de conversion en conséquence : 7% puis 13%. Comme on le voit sur le graphique, il faut du temps pour que nos buteurs révèlent leur vrai niveau : entre 0 et 100 tirs, les résultats sont encore un peu flous. Vous me direz donc, pourquoi avoir sélectionné les buteurs à plus de 100 tirs et non à plus de 200 ? Ces buteurs sont rares dans mon dataset et la taille de l’échantillon deviendrait alors trop faible.

Premier modèle

Nous nous sommes fait une première opinion sur ce que l’on est en droit d’attendre d’un buteur du Top 5 en termes de taux de conversion cible d’une part et d’un buteur à 30 tirs d’autre part. On peut désormais approfondir le sujet et faire une première évaluation du niveau réel de Mitroglou en tenant compte de tout ceci3.

Pour commencer, il va falloir estimer la distribution ou loi de probabilité que suit le taux de conversion de notre échantillon de buteurs du Top 5, c’est-à-dire identifier ses paramètres caractéristiques. Je ne rentrerai pas ici dans les détails méthodologiques au-delà du nécessaire pour comprendre le cheminement. Si vous êtes curieux, je vous renvoie à la dernière note de bas de page.

Pour estimer une distribution, il existe plusieurs façons de procéder mais nous retiendrons ici ce qu’on appelle la méthode des moments, relativement intuitive puisqu’elle s’appuie sur la moyenne et la variance de l’échantillon pour ce type de loi.

mean_conv_rate <- mean(strikers_100$conv_rate)
var_conv_rate <- var(strikers_100$conv_rate)

mean_conv_rate
## [1] 0.1496749
var_conv_rate
## [1] 0.001699468

alpha0 <- ((1 - mean_conv_rate) / var_conv_rate - 1 / mean_conv_rate) * mean_conv_rate ^ 2
beta0 <- alpha0 * (1 / mean_conv_rate - 1)

alpha0
## [1] 11.05941
beta0 
## [1] 62.8301

Afin de tester la validité de notre modèle, traçons la distribution (ou courbe de densité) que nous donnent ces paramètres :

Les paramètres \(\alpha\) et \(\beta\) sont convenables ici et l’on peut donc en conclure que le taux de conversion d’un attaquant de pointe suit une distribution \(Beta\) : \[Taux de Conversion\sim\mbox{Beta}(\alpha_0,\beta_0)\] avec \(\alpha_0=11.06\) et \(\beta_0=62.83\).

En utilisant les propriétés de ce type de distribution, il est possible d’obtenir plusieurs informations intéressantes tout en quantifiant notre degré de certitude sur les performances de notre joueur.

Une bonne façon de comprendre comment utiliser cette modélisation est de comparer les performances de Mitroglou avec un joueur fictif qui, au soir de sa carrière, aurait marqué 50 buts en 500 tirs soit le même taux de conversion que le Grec. Pour obtenir l’estimation de la distribution de nos deux joueurs, il faut actualiser le paramètre \(\alpha\) du nombre de buts et \(\beta\) du nombre de tirs ratés.

alpha_km <- alpha0 + 3
beta_km <- beta0 + 30 - 3 

alpha_jf <- alpha0 + 50
beta_jf <- beta0 + 500 - 50

Comment interpréter ce graphique ?

En pointillé, on retrouve la distribution de notre échantillon de buteurs du Top 5, avec une valeur médiane un peu sous les 15%. Cette distribution est actualisée pour obtenir celle de Kostas Mitroglou. Sa courbe représente la distribution de probabilité de ce que le taux de conversion du joueur pourrait être, après mise à jour sur la base de ses performances. Encore, une fois, plus la courbe est haute, plus la valeur est probable. Et plus elle est étroite plus le niveau de certitude sur le niveau du joueur est élevé.

Le principe sous-jacent est de partir du principe que lorsqu’on ne connaît pas un joueur, son niveau est semblable à celui de l’échantillon. Ensuite, cette distribution de probabilité est actualisée à chaque tir et nous donne un supplément d’information sur ce que pourrait être le véritable niveau du joueur.

Visuellement, il est clair que pour un taux de conversion similaire, notre niveau de certitude sur le niveau réel de ces joueurs est bien plus élevé pour notre joueur fictif que pour Kostas Mitroglou et ses 30 tirs. On peut calculer grâce à ces distributions :

  1. Un taux de conversion estimé
  2. Des intervalles de crédibilités qui nous permettent d’affirmer : “il y a 95% de chance que son vrai niveau se situe entre X% et Y%”
#Taux de conversion estimé de Mitroglou après 30 tirs et 3 buts
alpha_km / (alpha_km + beta_km)
## [1] 0.1353304

Il est ajusté à la baisse par rapport à la moyenne des buteurs du Top 5, en raison de performances médiocres.

alpha0 / (alpha0 + beta0)
## [1] 0.1496749
Joueur Tirs Buts Conv. réelle Conv. estimée Borne basse Borne haute
Kostas Mitroglou 30 3 0.1 0.135 0.077 0.207
Joueur Fictif 500 50 0.1 0.106 0.083 0.133

On ne perd pas espoir de voir un Kostas Mitroglou se rapprocher d’une borne haute tout à fait honorable. On remarque au passage que les bornes de notre joueur fictif sont beaucoup plus resserrées autour de son niveau estimé, cela car nous avons eu 500 tirs pour nous faire une idée.

Mais quelles sont les chances qu’en réalité Mitroglou ne s’améliore pas et reste à se niveau, ou pire encore, régresse ?

Pour répondre, une façon de faire est de calculer la fonction de répartition de la distribution du taux de conversion estimé de Mitroglou entre 0 et 10%.

Cette fonction de répartition, qui revient à calculer l’aire de la surface rouge sur le graphique ci-dessus, va nous indiquer la probabilité que son taux de conversion “intrinsèque”, autrement dit son vrai niveau, soit inférieur ou égal à son niveau observé.

pbeta(.10, alpha_km, beta_km)
## [1] 0.1419387

Les chances que Mitroglou soit à son niveau ou régresse sont seulement de 14.2%. A l’inverse, les chances que l’on voit le taux de conversion de Mitroglou s’améliorer sont donc de 85.8%.

Conclusion de la première partie et ouverture

J’espère avoir donné au lecteur de quoi alimenter sa réflexion sur Mitroglou et de façon plus large sur le difficile métier d’attaquant. Cette analyse, relativement basique mais qui a le mérite de la clarté, n’est toutefois pas sans certaines limites :

  • Une première limite concerne le volume de tirs. Bien que cet indicateur dépende davantage du collectif que la conversion, on note toutefois que certains attaquants se procurent structurellement moins de tirs que d’autres, indépendamment de l’équipe dans laquelle ils évoluent.
  • Une deuxième, est probablement la plus importante pour le problème qui est le nôtre est que notre analyse considère tous les tirs comme égaux. Or, on le sait (a fortiori depuis les expected goals) tous les tirs ne se valent pas.

C’est pourquoi lors de la deuxième partie de l’article, j’aborderai la question de la finition en tenant compte de la qualité des occasions créées. Les expected goals me donneront un bon point de départ.


  1. Nous verrons toutefois plus tard qu’un autre phénomène vient s’immiscer ici, celui nommé biais du survivant.

  2. Afin de voir le nombre de buts en lecture directe on va inverser les 2 premiers arguments, ce qui reviendrait à sommer les premiers exemples.

  3. Je vais m’appuyer très très largement sur l’exceptionnel travail de David Robinson.