Error message

  • Deprecated function: Return type of Aws\HandlerList::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 32 of /var/www/html/vendor/aws/aws-sdk-php/src/HandlerList.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of & Aws\Endpoint\Partition::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Aws\Credentials\Credentials implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in include() (line 8 of /var/www/html/vendor/aws/aws-sdk-php/src/Credentials/Credentials.php).
  • Deprecated function: Return type of Aws\Command::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of & Aws\Command::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Result::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of & Aws\Result::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
×

Entertainment

It's 2022 And Goalkeeping Stats Are Still Stuck In The Dark Ages

Ever listen to a pundit or so-called football expert talk about goalkeepers? It's usually pretty evident with their first few sentences that they have no clue what they are talking about.

Their understanding of technique is minimal, and if you hear any mention of saves made, save percentage or any similar stat, you might as well stop listening (or reading).

The tweet below is a perfect example of a stat that seems useful but doesn't reveal much about the quality of a goalkeeper:

Do you know who has the highest clean sheet percentage among keepers in the "Big 5" European Leagues this season? Probably someone you have never heard of: Real Sociedad's Álex Remiro.

Does that make him the best keeper in Europe? Of course not. And as much as Chelsea stans would want you to believe, Mendy is not the best keeper in the world either. Calling him elite would even be a stretch.

Mendy is without a doubt a great keeper, you can tell that without even looking at the stats. But the stats used to define him are not necessarily reflective of his ability in goal.

Two stats frequently used to demonstrate his abilities are save percentage and clean sheets. Mendy ranks second in the EPL in the former and fourth in the latter. Of course, you want a keeper who performs well in both categories, but these stats are as much a reflection of the quality of a team's backline as they are of a goalkeeper's performance.

Keepers playing behind solid defenses will face fewer shots and thus will be expected to concede fewer goals. Mendy is facing 2.8 shots on target per match this season — only Alisson and Ederson face fewer shots. It's no coincidence Manchester City, Liverpool and Chelsea have allowed the fewest expected goals in the EPL.

Embed from Getty Images

The quality of Chelsea's defense is especially on display when Kepa Arrizabalaga is in goal. In the four Premier League matches this year that Arrizabalaga has replaced Mendy, the Spaniard earned two shutouts and has faced 3.3 shots on target per match — still only surpassed by Alisson and Ederson.

Sample size is important here, but no one would argue Kepa is better than Mendy. The takeaway is still the same though: goalkeepers look good and perform well when they play behind good defenses. 

Not only does Mendy face few shots, but he also encounters the second-easiest shots of any keeper in the Premier League. His Post-Shot Expected Goals per Shot on Target (PSxG/SoT) is 0.21 — meaning the shots on frame Mendy faces have, on average, a 21 percent chance of resulting in a goal. Note that this stat is based on the probability of that shot going in independent of the keeper's ability.

By comparison, Newcastle's Martin Dúbravka has a PSxG/SoT of 0.39, meaning the shots on target he faces have a 39 percent chance of finding the back of the net. Dúbravka faces shots that are twice as difficult as the shots Mendy faces, plus he also faces more shots on target per game, so it's no wonder his save percentage and clean sheet rate are much lower than those of Mendy.

Looking at save percentage (82.1 percent for Mendy, 68.3 percent for Dúbravka) and clean sheet percentage (45.8 percent for Mendy, 25 percent for Dúbravka) would suggest Mendy is a much better keeper. Thankfully, we have advanced stats that provide less arbitrary evaluations of goalkeepers. 

Embed from Getty Images

Post-Shot Expected Goals minus Goals Allowed (PSxG+/-) calculates a goalkeeper's performance relative to the shots they face. It takes the expected goals allowed by a keeper and subtracts the number of goals allowed.

A positive PSxG+/- value means a keeper has prevented more goals (or, allowed fewer goals) than expected, a negative value indicates more goals allowed (fewer goals prevented). PSxG+/- isolates a goalkeeper's pure shot-stopping ability in a way that saves and clean sheet percentage simply cannot. 

When applied to Mendy and Dúbravka, PSxG+/- paint a much different picture than more basic stats. Since the start of the 2020-21 EPL season, Mendy has prevented 0.04 more goals than expected per match. During this same period, Dúbravka has prevented 0.21 more goals than expected per match.

The difference is even more pronounced this year. Dúbravka's shot-stopping is saving Newcastle an extra three goals every 10 matches (PSxG+/- of +0.29 per 90 min); Mendy is worth one goal every 12.5 matches (PSxG+/- of +0.08 per 90 min). 

A dive into other advanced statistics helps reveal more about these keepers' true abilities. While Dúbravka is the superior shot-stopper, Mendy is better as a sweeper (2.5 times more actions outside of his penalty area per match plus further average distance of these actions) and when it comes to claiming crosses (Dúbravka claims eight percent of crosses, Mendy claims 9.5 percent).

Mendy and Dúbravka are about even in terms of performance and ability — something experts and self-proclaimed internet stats gurus won't admit and can't seem to grasp.

These stats are not hidden in some obscure corner of the internet, nor do they require any user calculations. Go to Martin Dúbravka's FBref page, scroll past his basic stats, and you have a treasure trove of information. 

Player Advanced Goalkeeping 2021-2022 Premier League Table
Expe Expe Expe Expe Cros Cros Cros Swee Swee Swee
Rk Player Squad 90s GA PSxG PSxG/SoT PSxG+/- /90 Opp Stp Stp% #OPA #OPA/90 AvgDist
9 Martin Dúbravka Newcastle Utd 16.0 21 24.7 0.39 +4.7 +0.29 138 11 8.0 4 0.25 11.9
26 Edouard Mendy Chelsea 24.0 17 18.0 0.21 +2.0 +0.08 189 18 9.5 15 0.63 13.8
Provided by FBref.com: View Original Table
Generated 3/14/2022.

Advanced statistics are not a replacement for understanding a goalkeeper's technique or decision-making, nor is it useful to appraise a keeper based on one statistic, but when various categories of advanced stats are used in tandem with a more technical understanding of a goalkeeper's play, only then can we begin to fairly evaluate a goalkeeper's ability.

On every other part of the pitch, advanced stats are employed to evaluate players. We use expected goals to calculate the quality of a team's attacking chances and the finishing ability of their strikers. Even stats like key passes and progressive carries are cutting-edge compared to the stats used a decade ago — and they are relatively simple compared to other calculations.

Yet while soccer is accepting the computational power of the modern age, goalkeeping stats are still waiting for their Industrial Revolution. Good data is there; it is just being overlooked. Until then, goalkeepers will continue to be an under-evaluated position.

Videos you might like