EPL 24-25 October 2015
EPL 24-25th October
Weekly look at the weekend games in the EPL:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
weekend_matches = league_analysis.get_matches(epl, '24/10/2015', '25/10/2015')
league_analysis.display_given_matches(weekend_matches)
Manchester United 0-0 Manchester City
A very even game, neither side giving up much. Manchester United typically have not shown much ambition to get a lot of shots, prefering to cultivate excellent chances whilst restricting their opponents. Manchester City on the other hand have tended to bombard their opponents. In this sense United will be pretty happy with how they restricted their Manchester neighbours.
Having watched the game I felt City had the better of the first half and United the second. The best save of the match was Joe Hart to his left near the post and United also managed to hit the bar with a clever attempt at a lob. But overall, a game that could be easily forgotten.
Sunderland 3-0 Newcastle
Something of a bottom of the table clash. These two teams have been amoung the worst in the premier league. In terms of the score line a pretty convincing home victory will appease many Sunderland fans, and may well have Steve McClaren wondering how much longer he will be Newcastle manager. A look at the shot numbers though would result in a very different conclusion. There may be some score-line effects here but even still Newcastle demonstrate that they can produce shots/chances when behind, at least against fellow strugglers.
These two teams both currently look on course for relegation, one derby result is not going to change that, what is required is a longer term change in their underlying numbers, and currently Newcastle look a bit more likely to do that.
Similar Games:
There have so far been 16 (of 100) games that have resulted in one team winning by 3 or more goals:
matches_so_far = league_analysis.get_matches(epl, '01/08/2015', '25/10/2015')
high_result_matches = [m for m in matches_so_far if abs(m.FTHG - m.FTAG) >= 3]
league_analysis.display_given_matches(high_result_matches)
display(HTML('There have been {0} matches in total'.format(len(matches_so_far))))
There have only been 6 games in which a team has won by 3 or more goals despite taking few shots:
def lower_shots_wins(match):
return ((match.HS > match.AS and match.FTAG > match.FTHG) or
(match.HS < match.AS and match.FTAG < match.FTHG))
win_shots = [m for m in high_result_matches if lower_shots_wins(m)]
league_analysis.display_given_matches(win_shots)
Of these:
- Sunderland were outshot by 12 shots, the next highest were outshot by 7 shots, Everton, Tottenham, and Newcastle.
- All were equal or better via shots on target, so Sunderland are the only team to have won by 3 or more goals despite having fewer shots on target, and 3-8 is not even close.
In fact, only 13 matches, including Sunderland vs Newcastle have had the side with fewer shots on target winning, of these, Only 4 had a goal difference of more than 1. The other three matches with a goal difference of more than had a SOT difference of exactly 1 or 2.
def lower_sots_wins(match):
return ((match.HST > match.AST and match.FTAG > match.FTHG) or
(match.HST < match.AST and match.FTAG < match.FTHG))
win_shots = [m for m in matches_so_far if lower_sots_wins(m)]
league_analysis.display_given_matches(win_shots)
Overall then, if I were a Sunderland fan I would enjoy the derby victory for what it is, rather than for what it may signal in the future.
Aston Villa 1-2 Swansea
This turned out to be the last game in charge for Tim Sherwood. From the stats Swansea had the better of the play and whilst they may not have dominated their hosts, it can hardly be said to have been an undeserved victory.
Swansea are a decent club, but to lose at home to Swansea in such a routine manner is probably the most disheartening element for Villa fans. Swansea are good enough that, on their day, they could pick up a surprising away victory at the Etihad, but it would be something of a shock, and likely involve beating the shot numbers (that is winning despite having fewer shots/shots on target). The fact that Swansea were likely favourites going in to the match, suggests Villa are in deep trouble. Whoever takes over from Tim Sherwood will have their work cut out.
A small non-fact-based comment. To me, it seems unlikely that Sunderland's woes are much attributable to Dick Advocaat, so I'm skeptical that a change in manager will have much effect for Sunderland. At Villa, it seems more plausible to me that a change in manager will indeed usher in a change of fortune, but they aren't going to be hitting the top half of the table, this is about avoiding relegation.
Bournemouth 1-5 Tottenham
I'll admit to a bit of a soft spot for Bournemouth. They took something of a beating here this week. However, the shot statistics show that this was probably unflattering to Bournemouth who took a very early lead, only to then give up 5 goals. But it was 5 goals from 14 shots, 9 of which were on target. Tottenham have started to pick up and we'll see below their PDO has improved of late. Only two matches this season have produced 5 or more goals from 14 or fewer shots:
def five_goals_from_fourteen_shots(match):
return ((match.HS <= 14 and match.FTHG >= 5) or (match.AS <= 14 and match.FTAG >= 5))
relevant_matches = [m for m in matches_so_far if five_goals_from_fourteen_shots(m)]
league_analysis.display_given_matches(relevant_matches)
Which is not that surprising since of course 5 goals are not scored that often no matter how many shots. However, for all league data I have (top 4 English leagues plus Scottish Premiership, since season 2010-2011), it has occured just 138 times in 12003, or about one percent of the time.
league_analysis.get_fraction_of_matches(five_goals_from_fourteen_shots)
Having said that, when teams do score five goals or more, it's not that rare that they do so with 14 shots or fewer. Here we see that only 336 games have involved either team scoring five or more goals. So in 138 of the 336 matches, or a bit over a third of the time, that a team scores 5 or more goals they do so with 14 or fewer shots. This suggests that a 5 goal game is quite often the result of a good conversion rate rather than a complete dominance. When a team creates a 3 goal advantage they may well have less offensive ambition and hence only score additional goals from very good chances, but that's a bit speculative.
def five_goals(match):
return match.FTHG >= 5 or match.FTAG >= 5
five_goal_matches = league_analysis.get_all_matches(filter_fun=five_goals)
league_analysis.get_fraction_of_matches(five_goals_from_fourteen_shots, five_goal_matches)
Small aside, there were 2 games in which both teams scored 5 or more goals, both of which were 5-5 draws and both of which had one team with fewer than 14 shots. In the above these would have been counted in the 138, but should really be counted twice in the 336, so it should really be 138 from 338.
def both_five_goals(match):
return match.FTHG >= 5 and match.FTAG >= 5
league_analysis.display_given_matches(league_analysis.get_all_matches(filter_fun=both_five_goals))
Arsenal 2-1 Everton
Arsenal like Tottenham have started to see their fruits of the labour more in recent weeks. Generally speaking Arsenal have been very good, but have lost/drawn the odd game that they have dominated, meaning that their points total and league position weren't quite reflective of how good they were. However their luck, or conversion, has begun to pick up, a bit like Tottenham, in the following chart we depict rank in PDO in the league. Remember, we take PDO has some measure of the amount of luck a team has received, so a higher PDO means more good luck. Of course it's not flawless but it can help show teams that are artificially high or low in the league. Both Tottenham and Arsenal start pretty low but have started to pick up of late.
after_game_no_dicts = league_analysis.collect_after_game_dicts(epl, '01/08/2015', '26/10/2015')
teams = ['Tottenham', 'Arsenal', 'Watford', 'Liverpool',
'Southampton', 'Sunderland', 'Chelsea', 'Bournemouth']
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'pdo', rankings=True, teams=teams)
In contrast Sunderland, who get a big rise in PDO this week after their (arguably lucky) win against Newcastle, can't really blame their league position on bad luck. Even before this week they have been steadily mid-table or above in terms of PDO. Similarly Chelsea have been above mid-table for PDO for most of the season, albeit on a steadily decreasing path (which is likely just a statistical quirk). Finally note also Liverpool and Southampton, both have had pretty rotten 'luck' all season, so don't be surprised to see them improve, a fact which will no doubt be attributed to Klopp's arrival. Which isn't to say he won't have some positive effect outside of what is observable in PDO. Bournemouth have just now overtaken Southampton has the team with the lowest PDO.
Leicester 1-0 Crystal Palace, Norwich 0-1 West Brom
Interesting matches, both quite evenly matched. Both home teams had a higher shot count, but a lower shots on target count (albeit only 3 to 4).
Leicester continuing a good run and arguably deserved this, although of course were helped by an early second half red card for Crystal Palace.
Norwich will feel pretty agrieved to have lost such a game at home, but West Brom are typically out-performing their shot numbers, having a points-to-shots ratio behind only Manchester United in the league. Note that this ratio is typically low for teams with few points, because they lose a lot of games in which they gain zero points, but typically have more than zero shots.
pairs = [(stats.teamname, stats.points / float(stats.shots_for))
for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'Points/Shots'], pairs)
West Ham 2-1 Chelsea
Not sure what more to write about these two teams. West Ham do seem to be riding some kind of wave. Charitably we might call this a wave of efficiency, uncharitably we would call it a wave of luck. Personally think the latter, and that by the end of season West Ham will be in the bottom half of the league, but, similar to last season, they have probably amassed enough points so far to avoid much of a relegation battle, unless their efficiency seriously drops off. In addition, their underlying numbers might be better if they hadn't spent as much time in the lead of matches as they have.
Chelsea are just not performing well. It seems strange to talk of West Ham riding their luck when they have beaten the champions and done so with better shot counts for both total shots and shots on target. If we didn't know that Chelsea were the champions, and employers of some of the most expensive and best talent in the league, we would not be particularly surprised that West Ham out shot Chelsea at home.
Stoke 0-2 Watford
Nice and timely away victory for Watford. They deserved it too. Stoke have brought in some talented players but they are yet to reap much benefit. I'd be worried if I were a Stoke fan, here I rank the teams on the addition of their total shot ratios and their shots on target ratios, Stoke are behind even Aston Villa:
pairs = [(stats.teamname, stats.tsr + stats.sotr)
for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'TSR+SOTR'], pairs)
Liverpool 1-1 Southampton
That same table shows why Liverpool fans needn't be quite as upset as they probably are. Southampton are also doing perfectly fine. Both could do with a bit of an uptick in luck/efficiency.
That's all for this week. Thanks for reading this far.
Comments
Comments powered by Disqus