Football Skills with Wyatt
Wyatt teaches his dad football. An exploration of what football skill is, and how a Bayesian model measures it
Interactive explorer for a four-skill version of the Soccer Factor Model (Andorra & Göbel, 2024), fitted to ten seasons of Understat data from Europe’s top five leagues.
1. Pick a player
Type a name. Each player gets stars for four football skills. The stars compare him with the other 592 forwards.
2. Who’s better? Play 100 pretend matches
Pick two players. The computer plays 100 pretend matches, with both players in equally good teams. Each dot is one match: a blue dot means the first player scored more, an orange dot means the second player did, and a grey dot means a tie.
Why are the results different every time you press the button? Because football is full of luck, and because the model isn’t 100% sure exactly how good each player is.
3. Is the team helping?
Good players on great teams get more chances. The model works out how many goals a player would score on an average team, and how many it expects with his real teams.
4. When are forwards at their best?
The line shows the usual pattern of goal scoring across a forward’s seasons, for all 593 players. The thin lines are other possible answers the model thinks could be true.
Forwards tend to score a little more in their first few seasons in our data, then slowly a bit less. The change is small, only a few percent. “Season 1” means a player’s first season in our data, which starts in 2014, so for older players like Messi it isn’t really their first season.
5. The question jar
Pick a question, and the model answers with its top 10.
6. Wyatt’s guesses vs the model
Before looking at the model, choose up to five players and put them in order, from the best goal scorer (1) down. Then see what the model thinks.
What is being estimated
Each forward \(p\) has four correlated effects, \(\alpha_p = (\alpha^{\text{shoot}}, \alpha^{\text{fox}}, \alpha^{\text{sniper}}, \alpha^{\text{create}}) \sim \text{MVN}(0, \Sigma)\), with an LKJ prior on the correlations. For each player-season \(r\), every skill \(k\) gets its own linear predictor:
\[\eta_{k,r} = \mu_k + \lambda_{k,\text{league}(r)} + \beta_k\,\text{TS}_r + \gamma_k\,\overline{\text{TS}}_{p(r)} + h_k(N^S_r) + \alpha_{p(r),k}\]
TS is the paper’s team factor, measured before kickoff: the team’s points-per-game gap to each opponent, averaged over its season. \(\overline{\text{TS}}_p\) is the player’s average TS across his seasons, a Mundlak term. Better forwards tend to play for better teams, and this term absorbs that link, so \(\beta_k\) measures the effect of a stronger team on the same player. A player’s skill is \(\theta_{p,k} = \alpha_{p,k} + \gamma_k \overline{\text{TS}}_p\). \(h_k\) is a Matérn-5/2 HSGP maturity curve over seasons observed. The likelihoods are:
| Skill | Data | Likelihood |
|---|---|---|
| Shooting | non-penalty shots | NegBin\((\tfrac{\text{min}}{90} e^{\eta_\text{shoot}})\) |
| Fox | npxG per shot | \(\log(\text{npxG}/\text{shot}) \sim N(\eta_\text{fox}, \sigma/\sqrt{\text{shots}})\) |
| Sniper | each non-penalty shot | Bernoulli\((\text{logit}^{-1}(\text{logit}\,\text{xG}_i + \eta_\text{sniper}))\), fitted through a second-order approximation |
| Creating | key passes | NegBin\((\tfrac{\text{min}}{90} e^{\eta_\text{create}})\) |
Shots/90 × xG/shot × goals/xG = goals/90, so the first three skills multiply into expected non-penalty goals per 90. SAR is that rate with the team factor set to zero (a level field), minus the replacement pool’s rate. PAR keeps each player’s real team strength. PAR − SAR is his team lift relative to the pool’s. All intervals are 83%, as in the paper.
Ranking ladder
Cross-cutting two skills
Grey dots are posterior means for all 593 forwards. Highlighted players also show their 83% intervals in both directions. The dashed lines mark a typical forward (×1) or the replacement level (0).
Head to head
How the skills go together
These are posterior correlations between the skills, with 83% intervals; an LKJ distribution is their prior. The most precisely estimated pattern is that players who get very good chances tend to create less. Finishing varies about half as much as the other skills and is the hardest to estimate for any one player, so Sniper stars only move away from 3 when the 83% interval excludes zero.
Maturity curves
Population HSGP curves, with the multiplier shown relative to the average player-season. Across their seasons in the window, forwards shoot a little less but take better chances. “Seasons observed” counts from 2014/15, so it is left-censored for veterans.