EPL 5-7th December 2015

EPL 5th-7th December

Our weekly brief look into the statistics that have been behind the weekend's games in the English Premier League.

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
weekend_matches = league_analysis.get_matches(epl, '05/12/2015', '07/12/2015')
league_analysis.display_given_matches(weekend_matches)
pairs = [(stats.teamname, stats.points) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'Points'], pairs)
Home Away
Team Arsenal Sunderland
Goals 3 1
Shots 16 11
SOT 7 4
Home Away
Team Chelsea Bournemouth
Goals 0 1
Shots 19 15
SOT 6 5
Home Away
Team Man United West Ham
Goals 0 0
Shots 21 9
SOT 1 2
Home Away
Team Southampton Aston Villa
Goals 1 1
Shots 23 9
SOT 5 2
Home Away
Team Stoke Man City
Goals 2 0
Shots 7 11
SOT 4 4
Home Away
Team Swansea Leicester
Goals 0 3
Shots 10 16
SOT 2 5
Home Away
Team Watford Norwich
Goals 2 0
Shots 14 6
SOT 7 1
Home Away
Team West Brom Tottenham
Goals 1 1
Shots 11 9
SOT 4 3
Home Away
Team Newcastle Liverpool
Goals 2 0
Shots 6 10
SOT 1 1
Home Away
Team Everton Crystal Palace
Goals 1 1
Shots 19 14
SOT 4 5
Position Team Points
1 Leicester 32
2 Arsenal 30
3 Man City 29
- Man United 29
5 Tottenham 26
6 Crystal Palace 23
- West Ham 23
- Liverpool 23
9 Everton 22
- Stoke 22
- Watford 22
12 Southampton 21
13 West Brom 19
14 Chelsea 15
15 Swansea 14
16 Norwich 13
- Newcastle 13
- Bournemouth 13
19 Sunderland 12
20 Aston Villa 6

Arsenal 3-1 Sunderland

So we have a relatively straightforward win for Arsenal. Sunderland though are showing signs of improvement. Here is how Sunderland's team rating has changed over the course of the season:

In [2]:
after_game_no_dicts = league_analysis.collect_after_game_dicts(epl, '01/08/2015', '09/12/2015')
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'team_rating', rankings=False, 
                                    teams=['Sunderland', 'Aston Villa', 'Newcastle', 'West Brom', 'Stoke'])

That's after playing Arsenal, one of the better teams in the league, hence the dip after game 14. Here we can see how well relative to the average team Sunderland managed against Arsenal:

In [3]:
epl.compare_game_against_opponents('Arsenal', 'Sunderland', '05/12/15')
Measure Average Per Game for This game for Average Per Game against opponents
Arsenal Shots 17.333333333333332 16 15.866666666666667
Sunderland Shots 10.666666666666666 11 10.2
Arsenal SOT 6.066666666666666 7 5.933333333333334
Sunderland SOT 3.533333333333333 4 3.933333333333333

So basically Sunderland performed about as well as the average team does against Arsenal, which is not great but better than you might expect for a team second from bottom. Don't forget that is the average team in all of Arsenal's games, both home and away, you might expect them to be a bit better at home than on average, but you'd be wrong:

In [4]:
'Home {0} vs {1} Away'.format(epl.home_team_stats['Arsenal'].team_rating, epl.away_team_stats['Arsenal'].team_rating)
Out[4]:
'Home 0.2035677889576883 vs 0.23808306307354452 Away'

Still though, I think that represents a decent performance from Sunderland and for about the first time in the season relegation is not looking like a foregone conclusion.

Chelsea 0-1 Bournemouth

Strange one, you kind of feel that Chelsea did not deserve to lose here, but Bournemouth deserved a win for all the unlucky dropped points they have had. Probably what is more important here, is that whilst Bournemouth had something of a snatched victory here, they certainly competed well with the champions at home. That is pretty remarkable, both for Bournemouth and for understanding how poor relative to expectations Chelsea have been this season.

Manchester United 0-0 West Ham

Well for all that has been written about Manchester United this season it is quite incredible that they managed 21 shots here. That only 1 of them was on target is also somewhat incredible. Manchester United have been noted for their efficiency this season, but it was not so here. Very difficult to understand what was going on in this game.

Southampton 1-1 Aston Villa

This has to go down as a great away point for Aston Villa. However their underlying numbers continue to be dreadful. It is hard to see how they will manage to pull themselves out of the relegation zone. Certainly we would expect their form to have to change in order to allow for any chance to avoid relegation. They are now second last to Newcastle for team rating, with Sunderland just above, but seemingly improving. Whereas Aston Villa's appears to be getting worse. You would probably prefer to be Sunderland than Aston Villa at this point, but the more interesting question is; would you prefer to be Newcastle?

In [5]:
pairs = [(stats.teamname, stats.team_rating) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'Team Rating'], pairs)
Position Team Team Rating
1 Man City 0.2708969651564217
2 Arsenal 0.22696183427738761
3 Tottenham 0.17708261832159455
4 Man United 0.14096564465097577
5 Leicester 0.10621861565239474
6 Liverpool 0.10406540203163975
7 Southampton 0.0762860676879448
8 Watford 0.020073977881397153
9 Everton 0.0038201775210852593
10 Chelsea -0.009576216819628145
11 West Ham -0.013646339921631445
12 Crystal Palace -0.01810932152429528
13 Bournemouth -0.035908420695322144
14 Swansea -0.07542771423529113
15 Norwich -0.09941484222564156
16 Stoke -0.13508939014202173
17 West Brom -0.16158097148234946
18 Sunderland -0.18195352037154197
19 Aston Villa -0.18965992768404283
20 Newcastle -0.23841568887835188

Stoke 2-0 Manchester City

Obviously a great win for Stoke. Like Sunderland, their team rating so far is poor, but also improving. Similar to the Bournemouth win against Chelsea I think it's more interesting that Stoke were not dominated by City in the way that City have against many other teams. In other words, this was not like the West Ham win against City.

Swansea 0-3 Leicester

It's not like Leicester did not deserve this. Perhaps one could make the case that 0-3 is a little flattering but it certainly seems like the better team won. Much has been written about Leicester and how they will likely regress. Still, they now have a team rating which is 5th in the league. If they keep that up, top 4 is certainly not out of the question. But that is a rather large "if", we might expect injuries to hit Leicester hard, because of a possible lack of depth in the squad. Perhaps, but that is pure speculation. Anyway, it seems likely they will have a great season, just remains to be seen exactly how great.

Swansea on the other hand are probably not in as much trouble as is perceived. Garry Monk, as others have written, was probably a little unfortunate to lose his job. Swansea probably have designs to be better than 14th in the league, but so do at least 13 other teams. They do not look in relegation form to me, just temporary duldrums (but see the team rating graph in the following section).

Watford 2-0 Norwich

Good deserved win for Watford. This gives me a chance to plot the "team rating" fortunes of the lower-mid-table teams. These are teams in the bottom half of the league that are currently avoiding relagation spats. Well the teams I've gone for here are a bit creative licence since I consider Newcastle to be in the relegation battle and Southampton to be more of a top half of the table team despite their current positions. Also suspect Watford will dip into the lower half.

In [6]:
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'team_rating', rankings=False, 
                                    teams=['Norwich', 'Swansea', 'Chelsea', 'Bournemouth', 'Watford'])

Despite what I said above that is a pretty ominous decline for Swansea. Chelsea and Watford seem to be on the way up. Bournemouth a bit more difficult to pin down. Norwich certainly starting to get worrying. Draw your own conclusions but to me relegation seems to be 3 from Aston Villa, Newcastle, Sunderland, Norwich and Swansea in that order of likilhood to be relegated. West Brom and Bournemouth will also likely be looking over their shoulders for much of the season, meaning that I don't expect them to end in the top half. Chelsea and Watford, I suspect will have a good shout at making the top half.

West Brom 1-1 Tottenham

Perhaps one of West Brom's better games of the season:

In [7]:
epl.compare_game_against_opponents('West Brom', 'Tottenham', '05/12/15')
Measure Average Per Game for This game for Average Per Game against opponents
West Brom Shots 9.0 11 11.666666666666666
Tottenham Shots 15.333333333333334 9 14.066666666666666
West Brom SOT 3.0 4 3.3333333333333335
Tottenham SOT 6.266666666666667 3 4.4

Restricting Tottenham's shots, more than the average team. Tottenham of course will look at this as two points dropped, although it has now extended their unbeaten run to 14 games.

Newcastle 2-0 Liverpool

Others have pointed out the lack of intelligent analysis of this game in the mainstream media. Nice piece, fully agree with @jair1970 there. Still, it was a very good result for what has so far been a pretty awful Newcastle side. This game was probably pretty much a coin-flip, but that is better than they could reasonably have been expecting.

Everton 1-1 Crystal Palace

Seems like it might have been an exciting game. Two teams that will likely end up quite near each other in the league. But this game probably represents a slice of the league at the moment, in that Everton were slightly the better team, but the results is perhaps better for Palace. I think come the end of the season Everton will be disappointed if they remain in 9th equal whilst Crystal Palace will be delighted to remain in 6th equal. Note though, that they are only separated by a point. In fact 6th placed on 23 points are only 2 points ahead of Southampton on 21 points in 12th. Pretty tight around this upper-middle part of the table. How do they compare via team rating:

In [8]:
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'team_rating', rankings=False, 
                                    teams=['Liverpool', 'West Ham', 'Crystal Palace', 'Everton',
                                           'Watford', 'Stoke', 'Southampton'])

So Stoke the outlier here, but on an upwards trend. Otherwise Liverpool and Southampton look like they are a level above the others. Note that Watford are 3rd in this group, so they probably at least deserve their current 9th equal place.

Home Form vs Away Form

The surprising result that Arsenal have performed better away than at home this season leads me to plot the difference in team ratings for home and away for each club. Now of course this may well be heavily influenced by which teams you have played home and away this season, but still it is interesting reading, with the league leaders performing best away from home relative to their home form:

In [9]:
pairs = [(team, epl.home_team_stats[team].team_rating - epl.away_team_stats[team].team_rating)
         for team in epl.teams]
league_analysis.display_ranked_table(['Team', 'Home TR - Away TR'], pairs)
Position Team Home TR - Away TR
1 Norwich 0.32485679850791954
2 Man United 0.32377206150270266
3 Newcastle 0.294843649548333
4 Bournemouth 0.16790672123700587
5 Aston Villa 0.15803606738633486
6 Chelsea 0.15077247016397757
7 Sunderland 0.13353432089654724
8 Crystal Palace 0.12958062558321382
9 West Ham 0.1247732867966876
10 Man City 0.11251565047595963
11 Everton 0.10974138754709882
12 Watford 0.10642284801216836
13 West Brom 0.09542955665991376
14 Stoke 0.07974233776645967
15 Liverpool 0.07400986539439441
16 Tottenham 0.061018260631198085
17 Southampton 0.04066482653921731
18 Arsenal -0.034515274115856226
19 Swansea -0.037686079369583715
20 Leicester -0.1309142682326184

West Ham are also right in the middle of the table despite results suggesting some pretty encouraging away form, but of course we know to look deeper than results and a few of those away results looked, misleading at best. Still, only three teams actually have a better away team rating than their home team rating.

Thanks for reading again.

Comments

Comments powered by Disqus