EPL 19-20th March 2016

EPL 19-20th March 2016

Another week another win for Leicester and another step taken towards the premier league title. Here is the usual look at the underlying shot statistics for the weekend's matches.

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
display(HTML(league_analysis.blog_weekly_header(epl, '19/03/2016', '20/03/2016')))
Home Away
Team Chelsea West Ham
Goals 2 2
Shots 22 13
SOT 5 6
Home Away
Team Crystal Palace Leicester
Goals 0 1
Shots 12 8
SOT 4 3
Home Away
Team Everton Arsenal
Goals 0 2
Shots 8 11
SOT 2 3
Home Away
Team Swansea Aston Villa
Goals 1 0
Shots 10 12
SOT 1 2
Home Away
Team Watford Stoke
Goals 1 2
Shots 9 9
SOT 4 6
Home Away
Team West Brom Norwich
Goals 0 1
Shots 10 7
SOT 0 1
Home Away
Team Man City Man United
Goals 0 1
Shots 26 5
SOT 2 3
Home Away
Team Newcastle Sunderland
Goals 1 1
Shots 17 14
SOT 8 4
Home Away
Team Southampton Liverpool
Goals 3 2
Shots 16 18
SOT 5 9
Home Away
Team Tottenham Bournemouth
Goals 3 0
Shots 17 2
SOT 8 0
Position Team Points
1 Leicester 66
2 Tottenham 61
3 Arsenal 55
4 Man City 51
5 West Ham 50
- Man United 50
7 Southampton 47
8 Stoke 46
9 Liverpool 44
10 Chelsea 41
11 West Brom 39
12 Bournemouth 38
- Everton 38
14 Watford 37
15 Swansea 36
16 Crystal Palace 33
17 Norwich 28
18 Sunderland 26
19 Newcastle 25
20 Aston Villa 16
Position Team Team Rating
1 Tottenham 0.24710791087088907
2 Man City 0.2389774252864094
3 Liverpool 0.14474279925123518
4 Arsenal 0.11075857211421597
5 Leicester 0.06704884032040781
6 Chelsea 0.06000709018853358
7 Southampton 0.0564910678235171
8 Man United 0.04970145468954883
9 Everton 0.04134731500654405
10 West Ham 0.01702386906932641
11 Bournemouth -0.017487104921353552
12 Watford -0.044764865254164565
13 Swansea -0.07266532147459098
14 Stoke -0.07437775266011082
15 Crystal Palace -0.08166059447588073
16 Norwich -0.1320042244399923
17 West Brom -0.14293860336833414
18 Sunderland -0.144966402635897
19 Newcastle -0.1792828769890239
20 Aston Villa -0.19994132690032004
Position Team PDO
1 Leicester 0.11928904428904424
2 West Ham 0.0843942054433714
3 Man United 0.07763645998940116
4 Everton 0.0712962962962963
5 Arsenal 0.06744186046511627
6 West Brom 0.052837209302325605
7 Watford 0.05106179909329517
8 Stoke 0.050529100529100535
9 Chelsea 0.03754130112794807
10 Sunderland 0.019047619047619035
11 Southampton 0.007892606583917938
12 Tottenham -0.0008254656141979955
13 Man City -0.002348244687096379
14 Swansea -0.02093984172561103
15 Crystal Palace -0.04778243741263183
16 Norwich -0.061407440609592134
17 Bournemouth -0.10338445267054469
18 Liverpool -0.10624868504102669
19 Newcastle -0.11723565670934089
20 Aston Villa -0.14504241412877206

Chelsea 2-2 West Ham

Cracking game. A draw is probably about a fair result here. Chelsea had 9 more shots, but one fewer on target, this chimes well with the fact that Chelsea spent a good proportion of this match behind, including a late proportion of the game (which increases urgency). Since we're talking about Chelsea, this seems a good point to show the latest runs, with Chelsea unbeaten for 14 games.

In [2]:
league_analysis.display_current_runs(epl)
Position Team Winning Run
1 Leicester 3
2 Southampton 2
- Tottenham 2
4 Stoke 1
- Arsenal 1
- Norwich 1
- Swansea 1
- Man United 1
9 Aston Villa 0
- Crystal Palace 0
- Bournemouth 0
- Liverpool 0
- West Brom 0
- Everton 0
- Chelsea 0
- Newcastle 0
- West Ham 0
- Sunderland 0
- Man City 0
- Watford 0
Position Team Unbeaten Run
1 Chelsea 14
2 Leicester 5
- West Ham 5
4 Southampton 3
- Sunderland 3
- Tottenham 3
7 Arsenal 2
- Norwich 2
9 Stoke 1
- Swansea 1
- Newcastle 1
- Man United 1
13 Aston Villa 0
- Crystal Palace 0
- Bournemouth 0
- Liverpool 0
- West Brom 0
- Everton 0
- Man City 0
- Watford 0
Position Team Winless
1 Crystal Palace 13
2 Aston Villa 6
3 Newcastle 5
4 Sunderland 4
- Watford 4
6 Everton 2
- Chelsea 2
- Man City 2
9 Bournemouth 1
- Liverpool 1
- West Brom 1
- West Ham 1
13 Stoke 0
- Arsenal 0
- Leicester 0
- Southampton 0
- Norwich 0
- Swansea 0
- Man United 0
- Tottenham 0
Position Team Losing
1 Aston Villa 6
2 Watford 3
3 Crystal Palace 2
- Everton 2
5 Bournemouth 1
- Liverpool 1
- West Brom 1
- Man City 1
9 Stoke 0
- Arsenal 0
- Leicester 0
- Southampton 0
- Norwich 0
- Chelsea 0
- Swansea 0
- Newcastle 0
- West Ham 0
- Man United 0
- Sunderland 0
- Tottenham 0

However, Chelsea's important 14 game unbeaten run, should be teppered a little with the fact that they have only won 6 of those matches, including being out-shot by Norwich and a rather flattering 3-0 away win at Selhurst Park.

In [14]:
def chelsea_win(game):
    if game.HomeTeam == 'Chelsea':
        return game.FTHG > game.FTAG
    else:
        assert game.AwayTeam == 'Chelsea'
        return game.FTAG > game.FTHG
league_analysis.display_given_matches(g for g in epl.team_stats['Chelsea'].games[-14:] if chelsea_win(g))
Home Away
Team Chelsea Sunderland
Goals 3 1
Shots 17 11
SOT 7 3
Home Away
Team Crystal Palace Chelsea
Goals 0 3
Shots 8 10
SOT 4 4
Home Away
Team Arsenal Chelsea
Goals 0 1
Shots 9 12
SOT 1 6
Home Away
Team Chelsea Newcastle
Goals 5 1
Shots 15 10
SOT 5 4
Home Away
Team Southampton Chelsea
Goals 1 2
Shots 7 16
SOT 2 4
Home Away
Team Norwich Chelsea
Goals 1 2
Shots 13 10
SOT 2 2

This is why if we look at the form over the past 10 games, Chelsea are good, but Tottenham are better and Leicester have scored more points.

In [15]:
stats = league_analysis.last_x_game_stats(epl, 10)
display(HTML(league_analysis.header_stat_tables(epl, stats=stats)))
Position Team Points
1 Tottenham 25
2 Leicester 23
3 Southampton 20
4 Chelsea 18
- West Ham 18
6 Bournemouth 17
- Swansea 17
- Man United 17
9 Stoke 14
- Liverpool 14
11 Arsenal 13
- West Brom 13
13 Everton 12
- Man City 12
15 Sunderland 11
16 Newcastle 8
- Watford 8
18 Aston Villa 5
- Norwich 5
20 Crystal Palace 2
Position Team Team Rating
1 Tottenham 0.35769122037296497
2 Man City 0.2148074228227645
3 Liverpool 0.14934454714598783
4 Chelsea 0.12769303380864183
5 Leicester 0.1003351268960672
6 Everton 0.06779691954104167
7 West Ham 0.048957310546536896
8 Bournemouth 0.016068563393227375
9 Arsenal 0.015888066604995383
10 Southampton -0.011874072061767577
11 Man United -0.05287525405172468
12 Swansea -0.05837103536890509
13 Stoke -0.07017369579390914
14 Sunderland -0.0752421364932708
15 Newcastle -0.07841208183422443
16 West Brom -0.15962556306306305
17 Crystal Palace -0.1634253452739026
18 Watford -0.17095507433742735
19 Norwich -0.2018366677906411
20 Aston Villa -0.27905743894907975
Position Team PDO
1 Swansea 0.1777777777777778
2 Leicester 0.17373737373737375
3 Southampton 0.1718266253869969
4 West Ham 0.1256921373200443
5 Chelsea 0.10425531914893615
6 Man United 0.09477124183006536
7 West Brom 0.09234234234234234
8 Sunderland 0.07751196172248803
9 Bournemouth 0.05128205128205132
10 Arsenal 0.0478723404255319
11 Everton 0.023352361183186288
12 Watford -0.007692307692307693
13 Man City -0.012733446519524627
14 Tottenham -0.026606425702811243
15 Liverpool -0.028310104529616742
16 Stoke -0.0892857142857143
17 Norwich -0.13008130081300817
18 Crystal Palace -0.18210262828535667
19 Aston Villa -0.21153846153846154
20 Newcastle -0.3472222222222222

Crystal Palace 0-1 Leicester City

A collision of two teams, one currently out-performing their numbers the other currently under-performing their numbers and so it proved in the game. Last week we pointed out that Leicester beat Newcastle with their only shot on target of the game. This week was more even but it's hard not to feel some sympathy for Palace here. Okay so Palace spent quite a bit of this match behind, but still.

I really think this will be a fascinating end to the season. On paper I don't think Leicester have enough to finish the season without dropping 5 more points than Tottenham, but I would have made the same prediction about the previous 10 matches as well. Either Leicester really have found a way to beat their numbers, or winning the title will likely require their luck to continue.

To be clear, this is Newcastle and Crystal Palace we're talking about here. In the past 10 games they rate 15th and 17th for team rating.

In [16]:
league_analysis.compare_fixtures(epl, ['Leicester', 'Tottenham'])
Leicester Tottenham
Southampton (H) Liverpool (A)
Sunderland (A) Man United (H)
West Ham (H) Stoke (A)
Swansea (H) West Brom (H)
Man United (A) Chelsea (A)
Everton (H) Southampton (H)
Chelsea (A) Newcastle (A)

Southampton will be a very tough test for Leicester next week, but Liverpool then Manchester United are pretty tough asks for Tottenham. Final day of the season could be interesting, if Tottenham need to make up 3 points on Leicester, it would be tough to bet against it.

Everton 0-2 Arsenal

A good away win for Arsenal, far from dominating the game, but somewhat controlled it.

Swansea 1-0 Aston Villa

At times Villa have been abject, and at times you have had to feel a touch sorry for them. This is reflected in the fact that Villa now have the lowest PDO in the league. However, let's not forget they also have the lowest team rating. They certainly deserve to be relegated, but don't quite deserve to be 9 points adrift.

Watford 1-2 Stoke

Very good game. Stoke continue to confound analysts. They certainly seem like a better team than their 14th ranked team rating suggests. Will be interesting to see if they can remain in the top half of the league. It's hard to see them surpassing any of the teams above them, unless perhaps West Ham crumble. But Chelsea and Liverpool are hot on their tails. That would still keep Stoke in 10th, and the others are probably just a bit too far back. So I predict 10th for Stoke.

West Brom 0-1 Norwich

Norwich certainly needed that. One of those games that neither team particularly deserved to win, with just a single shot on target all game, in total.

Manchester City 0-1 Manchester United

Any hope of the title is surely gone now for Manchester City and they turn their attention more to the prospect of missing out on the Champions' League next season. They were certainly a bit unlucky to have lost this, in a similar way to failing to win at Norwich last week. In both games though, despite creating a lot of chances, they have not actually achieved many shots on target. Still, 26 shots is a fairly incredible number, here are the games this season in which a team has taken 26 or more shots and failed to win:

In [17]:
def high_shooting_losers(game):
    return (game.HS >= 26 and game.FTHG <= game.FTAG) or (game.AS >= 26 and game.FTAG <= game.FTHG)
league_analysis.display_given_matches(g for g in epl.matches if high_shooting_losers(g))
Home Away
Team Chelsea Crystal Palace
Goals 1 2
Shots 26 13
SOT 9 6
Home Away
Team Man City West Ham
Goals 1 2
Shots 27 6
SOT 8 3
Home Away
Team Southampton Leicester
Goals 2 2
Shots 14 26
SOT 6 7
Home Away
Team Liverpool West Brom
Goals 2 2
Shots 28 4
SOT 8 2
Home Away
Team Stoke Crystal Palace
Goals 1 2
Shots 26 12
SOT 5 3
Home Away
Team Everton West Brom
Goals 0 1
Shots 34 5
SOT 6 1
Home Away
Team Tottenham Arsenal
Goals 2 2
Shots 26 10
SOT 11 4
Home Away
Team Man City Man United
Goals 0 1
Shots 26 5
SOT 2 3

Just 8 games. Of those, strangely 5 of them were loses, this probably reflects the stronger team being behind and throwing more caution to the wind as the game progresses. Note, in only one of these games has the high shooting team failed to even score. Can the red Manchesters beat out the sky blue Manchesters to the 4th Champions' League spot?

In [18]:
league_analysis.compare_fixtures(epl, ['Man United', 'Man City', 'Arsenal'])
Man United Man City Arsenal
Everton (H) Bournemouth (A) Watford (H)
Tottenham (A) West Brom (H) West Ham (A)
Aston Villa (H) Chelsea (A) Crystal Palace (H)
Crystal Palace (H) Newcastle (A) West Brom (H)
Leicester (H) Stoke (H) Sunderland (A)
Norwich (A) Southampton (A) Norwich (H)
West Ham (A) Arsenal (H) Man City (A)
Bournemouth (H) Swansea (A) Aston Villa (H)

A couple of tricky games in the offing for Manchester United, but City will be wary of the Arsenal game in the penultimate match of the season. Saying that, Arsenal may well be wary of just that match themselves. Manchester City have a game in hand on Arsenal and in the last ten games Arsenal have a team rating ranked only 9th whereas City are ranked second. Fortunately for Arsenal, Manchester United are ranked even worse at 11th. My prediction, City, Arsenal, United.

Newcastle 1-1 Sunderland

Newcastle probably deserved a win here and that is somewhat emblematic of their season since the January transfer window. They are quite clearly showing improved form, but not getting much return from it. Wins for both Norwich and Swansea must have increased tension in the North East. However, as we have noted before, Swansea have a quite trecherous final four games to navigate, and Stoke, and then Chelsea, next don't look overly inviting either. Swansea now have 36 points, they may well have to hope that that is enough. Can Newcastle pick up 11 points? It's certainly possible, they will be looking for 6 points in their final two matches.

Can Crystal Palace survive? They have a bit of a better run-in than Swansea, but their current form is pretty bad. If I had to bet I'd say Norwich aren't looking good and one of Newcastle and Sunderland, probably seperated by a point or even goal difference.

In [21]:
league_analysis.compare_fixtures(epl, ['Newcastle', 'Sunderland', 'Norwich', 'Crystal Palace', 'Swansea'])
Newcastle Sunderland Norwich Crystal Palace Swansea
Norwich (A) West Brom (H) Newcastle (H) West Ham (A) Stoke (A)
Southampton (A) Leicester (H) Crystal Palace (A) Norwich (H) Chelsea (H)
Swansea (H) Norwich (A) Sunderland (H) Arsenal (A) Newcastle (A)
Man City (H) Arsenal (H) Arsenal (A) Man United (A) Leicester (A)
Liverpool (A) Stoke (A) Man United (H) Everton (H) Liverpool (H)
Crystal Palace (H) Chelsea (H) Watford (H) Newcastle (A) West Ham (A)
Aston Villa (A) Everton (H) Everton (A) Stoke (H) Man City (H)

Southampton 3-2 Liverpool

Wow, an incredible game. Not the first time we've said that about a Liverpool game this season. Liverpool should be higher up the league, and doing so with entertaining football. Things look pretty good for Liverpool for next season, and also for Southampton, if with perhaps slightly lower expectations.

Tottenham 3-0 Bournemouth

Bournemouth are generally a decent team and deserve to be in the league for next season (which they almost certainly will be). But Tottenham are a great team. When a great team gets in front early on, it can be difficult to make things happen for their opposition, and Bournemouth just did not have that in them. A team rating of greater than 0.3 for the last ten games means Tottenham are now top overall for team rating. Both very good number for Tottenham, and they should go on and win the league. There, I said it. Tottenham should win the league and Leicester should be second.

Thanks for reading.

Comments

Comments powered by Disqus