EPL 28-29 November 2015

EPL November 28-29th 2015

Another brief look at the shot statistics that were behind the results in the top flight of English football over the weekend.

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
weekend_matches = league_analysis.get_matches(epl, '28/11/2015', '29/11/2015')
league_analysis.display_given_matches(weekend_matches)
Home Away
Team Aston Villa Watford
Goals 2 3
Shots 12 14
SOT 6 6
Home Away
Team Bournemouth Everton
Goals 3 3
Shots 19 11
SOT 10 6
Home Away
Team Crystal Palace Newcastle
Goals 5 1
Shots 19 7
SOT 8 2
Home Away
Team Leicester Man United
Goals 1 1
Shots 7 10
SOT 3 2
Home Away
Team Man City Southampton
Goals 3 1
Shots 16 12
SOT 9 8
Home Away
Team Sunderland Stoke
Goals 2 0
Shots 18 7
SOT 5 3
Home Away
Team Liverpool Swansea
Goals 1 0
Shots 10 8
SOT 2 0
Home Away
Team Norwich Arsenal
Goals 1 1
Shots 7 12
SOT 2 3
Home Away
Team Tottenham Chelsea
Goals 0 0
Shots 9 5
SOT 4 1
Home Away
Team West Ham West Brom
Goals 1 1
Shots 17 7
SOT 6 3
In [2]:
league_analysis.display_match(epl, 'Aston Villa', 'Watford', '28/11/15')

Aston Villa 2 - 3 Watford

Home Away
Team Aston Villa Watford
Goals 2 3
Shots 12 14
SOT 6 6

Obviously worrying times for Aston Villa, who still have not won since the first day of the season.

In [3]:
after_game_no_dicts = league_analysis.collect_after_game_dicts(epl, '01/08/2015', '30/11/2015')
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'current_winless_run', rankings=False)

So a current winless run of 13, the next closest current is the rather unfortunate Bournemouth with 8, and even the next longest in the league at all is the 9 Sunderland accumulated before winning their 10th game.

This Game

However, on the face of it this wasn't actually that terrible a defeat. Though it says something that to look for the positive in a home game against a promoted side Villa have to suggest that they weren't dominated.

Watford though are starting to see a bit of an increase in return for what were at least acceptable performances.

In [4]:
league_analysis.display_match(epl, 'Bournemouth', 'Everton', '28/11/15')

Bournemouth 3 - 3 Everton

Home Away
Team Bournemouth Everton
Goals 3 3
Shots 19 11
SOT 10 6

Bournemouth just cannot seem to catch a break. I know they were behind for a lot of this game and may well feel pretty pleased about getting a point in the end, but the fact remains they are just not getting the rewards for their efforts.

In [5]:
pairs = [(stats.teamname, stats.pdo) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'PDO'], pairs)
Position Team PDO
1 Man United 0.16459253311922925
2 Everton 0.15298507462686567
3 West Ham 0.10745115856428894
4 Arsenal 0.06753246753246753
5 Leicester 0.05851548269581058
6 Watford 0.04583333333333334
7 Crystal Palace 0.03807418324735937
8 Stoke 0.03324808184143224
9 West Brom 0.03135888501742162
10 Tottenham 0.02460582895365504
11 Sunderland 0.009457441513190612
12 Man City 0.004678362573099393
13 Chelsea -0.021198830409356717
14 Swansea -0.06832694763729247
15 Aston Villa -0.06986301369863013
16 Southampton -0.07598784194528879
17 Newcastle -0.07870370370370366
18 Norwich -0.08705357142857145
19 Liverpool -0.09243697478991597
20 Bournemouth -0.22807017543859648
In [6]:
league_analysis.display_match(epl, 'Crystal Palace', 'Newcastle', '28/11/15')

Crystal Palace 5 - 1 Newcastle

Home Away
Team Crystal Palace Newcastle
Goals 5 1
Shots 19 7
SOT 8 2

As much as it might be bad for Aston Villa, Newcastle's fortunate wins over Bournemouth and slightly less so Norwich have masked a very worrying start to the season as a continuation of the year. James Yorke at stats bomb looked at whether or not Swansea should sack Garry Monk concluding, probably not. But he goes on to say that Steve McClaren's position is not looking great. Though it was a good point that two obvious candidates to replace him for the rest of the season in Tony Pulis and Sam Allardyce are already employed in the EPL. Newcastle are now bottom of the league for team rating, a measure that combines a team's TSR, TSOTT and PDO, weighted by how much we think is skills based.

In [7]:
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.29239331169424077
2 Arsenal 0.22431918297581915
3 Tottenham 0.19031953443599622
4 Man United 0.12735348228262694
5 Liverpool 0.12064013918772673
6 Leicester 0.08609224121172165
7 Southampton 0.06216626593476378
8 West Ham 0.00021128442561606925
9 Everton -0.002121729096430526
10 Watford -0.007960047499524472
11 Chelsea -0.008806477945233936
12 Crystal Palace -0.013656516412672935
13 Bournemouth -0.040032476975535074
14 Swansea -0.048565472932468004
15 Norwich -0.078970963500586
16 Stoke -0.15151490294853057
17 West Brom -0.1752089770842564
18 Sunderland -0.1757943713246106
19 Aston Villa -0.18250534925485665
20 Newcastle -0.25591529726823836
In [8]:
league_analysis.display_match(epl, 'Leicester', 'Man United', '28/11/15')

Leicester 1 - 1 Man United

Home Away
Team Leicester Man United
Goals 1 1
Shots 7 10
SOT 3 2

Well, Jamie Vardy made his 11th straight game in the EPL with at least one goal. More importantly for those doubting that Leicester can maintain their level this was a pretty important point at home against a team in a similar league position, and not only that but it seems like the game merited a draw, they certainly were not unequivocally out-shot.

In [9]:
pairs = [(stats.teamname, stats.sot_for / stats.shots_for) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'SOTs/All Shots'], pairs)
Position Team SOTs/All Shots
1 Tottenham 0.4117647058823529
2 Everton 0.38953488372093026
3 Man City 0.3861788617886179
4 Crystal Palace 0.3791208791208791
5 Newcastle 0.36363636363636365
6 Man United 0.363013698630137
7 Leicester 0.36
8 Southampton 0.3482587064676617
9 Arsenal 0.3442622950819672
10 West Brom 0.33064516129032256
11 Sunderland 0.3288590604026846
12 West Ham 0.328042328042328
13 Liverpool 0.3269230769230769
14 Bournemouth 0.32386363636363635
15 Norwich 0.3218390804597701
16 Stoke 0.32167832167832167
17 Swansea 0.32142857142857145
18 Chelsea 0.2923076923076923
19 Aston Villa 0.273972602739726
20 Watford 0.2727272727272727
In [10]:
pairs = [(stats.teamname, stats.tsr - stats.sotr) for stats in epl.team_stats.values()]
league_analysis.display_ranked_table(['Team', 'TSR - SOTR'], pairs)
Position Team TSR - SOTR
1 Chelsea 0.09532961752834901
2 Aston Villa 0.08314344761803827
3 Watford 0.059853549824896546
4 Bournemouth 0.051724137931034475
5 Arsenal 0.027807805569016297
6 Sunderland 0.027571449147136884
7 Man United 0.012750929368029684
8 West Ham 0.012315599124393284
9 Norwich 0.010045662100456598
10 Swansea 0.007653061224489777
11 Man City -0.0027472527472527375
12 Leicester -0.00516035396802994
13 Stoke -0.00628654970760234
14 Everton -0.012298046780805427
15 West Brom -0.013862671071259991
16 Newcastle -0.015336266499057172
17 Liverpool -0.03391215526046987
18 Southampton -0.06371613020549194
19 Crystal Palace -0.08744959677419356
20 Tottenham -0.09020760261636174

Leicester are currently 6th in the league for team rating as the table above shows. Would it be so surprising if that is where they ended up? Certainly it seems that their current position is a bit of an over-performance. But suppose they end the season in 6th place for team rating, it would not take that much luck for them to finish in the top four.

In [11]:
league_analysis.display_match(epl, 'Man City', 'Southampton', '28/11/15')

Man City 3 - 1 Southampton

Home Away
Team Man City Southampton
Goals 3 1
Shots 16 12
SOT 9 8

Fairly routine home win, but generally Southampton did pretty reasonably here. They probably didn't earmark this game for any points anyway. They allowed a little more shots than is average for Manchester City (but that is both home and away average), particularly so for shots on target. However they managed more shots and shots on target than the average team against Man City does. Meaning that they competed pretty well, on another day could have sneaked a draw.

In [12]:
epl.compare_game_against_opponents('Man City', 'Southampton', '28/11/15')
Measure Average Per Game for This game for Average Per Game against opponents
Man City Shots 17.571428571428573 16 12.5
Southampton Shots 14.357142857142858 12 8.428571428571429
Man City SOT 6.785714285714286 9 3.357142857142857
Southampton SOT 5.0 8 3.2142857142857144

Southampton in general are pretty similar at home to how they are away, they have the exact same points per game. They shoot a bit more often at home and have a slighlty better tsr, but they actually have a better sotr away from home.

In [13]:
league_analysis.compare_home_away_form(epl, 'Southampton')
Stat Home Away
points-avg 1.4285714285714286 1.4285714285714286
goals_for-avg 1.7142857142857142 1.1428571428571428
goals_against-avg 1.4285714285714286 1.0
Shots For 114 87
Shots Against 95 80
TSR 0.5454545454545454 0.5209580838323353
SOTR 0.5901639344262295 0.6071428571428571
Goals For 12 8
Goals Against 10 7
SOT For 36 34
SOT Against 25 22
SOT For Ratio 0.3157894736842105 0.39080459770114945
SOT Against Ratio 0.2631578947368421 0.275
TSOTR 0.05263157894736842 0.11580459770114943
Goals SOT For Ratio 0.3333333333333333 0.23529411764705882
Goals SOT Against Ratio 0.4 0.3181818181818182
PDO -0.06666666666666671 -0.08288770053475936
Team Rating 0.07156299840510358 0.05332824623664344
In [14]:
league_analysis.display_match(epl, 'Sunderland', 'Stoke', '28/11/15')

Sunderland 2 - 0 Stoke

Home Away
Team Sunderland Stoke
Goals 2 0
Shots 18 7
SOT 5 3

Did not see this coming, but unlike a couple of recent victories for Sunderland, they actually deserved this one, at least in as far as shot counts are concerned. Are there signs of improvement for Sunderland? Arguably. Here is team rating plotted over the course of the season for the bottom 7 teams.

In [15]:
teams = ['Sunderland', 'Newcastle', 'Aston Villa', 'Bournemouth', 'Norwich', 'Swansea', 'Chelsea' ]
league_analysis.plot_changing_stats(epl, after_game_no_dicts, 'team_rating', teams=teams)
In [16]:
league_analysis.display_match(epl, 'Liverpool', 'Swansea', '29/11/15')

Liverpool 1 - 0 Swansea

Home Away
Team Liverpool Swansea
Goals 1 0
Shots 10 8
SOT 2 0

If you don't get any of your shots on target you are not going to score often. A good victory for Liverpool, but their fans may well feel like it was not as dominant as their victory over Manchester City.

In [17]:
league_analysis.display_match(epl, 'Norwich', 'Arsenal', '29/11/15')

Norwich 1 - 1 Arsenal

Home Away
Team Norwich Arsenal
Goals 1 1
Shots 7 12
SOT 2 3

I still think Arsenal are title contenders. They were on top here, but arguably Norwich did enough to earn a draw.

In [18]:
league_analysis.display_match(epl, 'Tottenham', 'Chelsea', '29/11/15')

Tottenham 0 - 0 Chelsea

Home Away
Team Tottenham Chelsea
Goals 0 0
Shots 9 5
SOT 4 1

Interesting, Chelsea somewhat snuffed the game out here. Given that a win was probably more urgent for the champions than their hosts that somewhat tells you where the two teams currently are. Tottenham fans should be more flattered than peeved.

In [19]:
league_analysis.display_match(epl, 'West Ham', 'West Brom', '29/11/15')

West Ham 1 - 1 West Brom

Home Away
Team West Ham West Brom
Goals 1 1
Shots 17 7
SOT 6 3

I pretty much give up trying to figure out West Ham. I guess they are good enough to be in the top half of the division.

They have significantly more points per game away from home than they do at home. But they are a better team at home. For sure there are some score-effects in play here, in particular big wins away to Arsenal and Manchester City contribute here.

In [20]:
league_analysis.compare_home_away_form(epl, 'West Ham')
Stat Home Away
points-avg 1.2857142857142858 1.8571428571428572
goals_for-avg 1.7142857142857142 1.8571428571428572
goals_against-avg 1.5714285714285714 1.4285714285714286
Shots For 101 88
Shots Against 84 122
TSR 0.5459459459459459 0.41904761904761906
SOTR 0.4852941176470588 0.4461538461538462
Goals For 12 13
Goals Against 11 10
SOT For 33 29
SOT Against 35 36
SOT For Ratio 0.32673267326732675 0.32954545454545453
SOT Against Ratio 0.4166666666666667 0.29508196721311475
TSOTR -0.08993399339933994 0.03446348733233978
Goals SOT For Ratio 0.36363636363636365 0.4482758620689655
Goals SOT Against Ratio 0.3142857142857143 0.2777777777777778
PDO 0.04935064935064937 0.17049808429118773
Team Rating 0.05462131406190808 -0.04905410174587675

As always thanks for reading.

EPL 21-23 November 2015

EPL November 21st - 23rd 2015

Another brief look at some of the simple statistics underlying the weekend 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, '21/11/2015', '23/11/2015')
league_analysis.display_given_matches(weekend_matches)
Home Away
Team Chelsea Norwich
Goals 1 0
Shots 21 4
SOT 7 2
Home Away
Team Everton Aston Villa
Goals 4 0
Shots 16 10
SOT 9 3
Home Away
Team Man City Liverpool
Goals 1 4
Shots 11 14
SOT 3 9
Home Away
Team Newcastle Leicester
Goals 0 3
Shots 9 18
SOT 1 7
Home Away
Team Southampton Stoke
Goals 0 1
Shots 16 16
SOT 1 4
Home Away
Team Swansea Bournemouth
Goals 2 2
Shots 11 16
SOT 4 4
Home Away
Team Watford Man United
Goals 1 2
Shots 10 13
SOT 5 6
Home Away
Team West Brom Arsenal
Goals 2 1
Shots 4 11
SOT 1 3
Home Away
Team Tottenham West Ham
Goals 4 1
Shots 22 10
SOT 12 4
Home Away
Team Crystal Palace Sunderland
Goals 0 1
Shots 19 12
SOT 7 4
In [2]:
league_analysis.display_match(epl, 'Chelsea', 'Norwich', '21/11/15')

Chelsea 1 - 0 Norwich

Home Away
Team Chelsea Norwich
Goals 1 0
Shots 21 4
SOT 7 2

Similar to their win against Aston Villa before a poor run of results, Chelsea really needed a win here. It looks as though their 1-0 victory was if anything a little unflattering. Such a performance will be encouraging, though it is still beating teams around the relegation battle rather than those they might hope to surpass into one of the four champions' league spots.

Read more…

EPL 07-08 November 2015

EPL 07-08th of November 2015

As usual we have a quick shot-statistical look at the weekend matches 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, '07/11/2015', '08/11/2015')
league_analysis.display_given_matches(weekend_matches)
Home Away
Team Bournemouth Newcastle
Goals 0 1
Shots 20 2
SOT 5 1
Home Away
Team Leicester Watford
Goals 2 1
Shots 12 8
SOT 6 4
Home Away
Team Man United West Brom
Goals 2 0
Shots 13 4
SOT 3 0
Home Away
Team Norwich Swansea
Goals 1 0
Shots 9 8
SOT 5 0
Home Away
Team Stoke Chelsea
Goals 1 0
Shots 8 19
SOT 2 4
Home Away
Team Sunderland Southampton
Goals 0 1
Shots 9 11
SOT 3 4
Home Away
Team West Ham Everton
Goals 1 1
Shots 16 13
SOT 5 4
Home Away
Team Arsenal Tottenham
Goals 1 1
Shots 10 14
SOT 4 4
Home Away
Team Aston Villa Man City
Goals 0 0
Shots 3 13
SOT 0 3
Home Away
Team Liverpool Crystal Palace
Goals 1 2
Shots 22 9
SOT 4 4
In [2]:
league_analysis.display_match(epl, 'Bournemouth', 'Newcastle', '07/11/15')

Bournemouth 0 - 1 Newcastle

Home Away
Team Bournemouth Newcastle
Goals 0 1
Shots 20 2
SOT 5 1

As I pointed out last week Bournemouth are probably the most unlucky team in the league and that is without taking in to account the misfortune of injuries. This was a typical example, Bournemouth should have won this match and probably would have on most other days. As usual to calculate how dominating a loss this was for Bournemouth we look at games with a similar difference in TSR:

Read more…

EPL 31-02 October/November 2015

EPL 31 October - 02 November

As usual we have a quick shot-statistical look at the weekend matches 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, '31/10/2015', '03/11/2015')
league_analysis.display_given_matches(weekend_matches)
Home Away
Team Chelsea Liverpool
Goals 1 3
Shots 8 16
SOT 2 7
Home Away
Team Crystal Palace Man United
Goals 0 0
Shots 10 5
SOT 5 1
Home Away
Team Man City Norwich
Goals 2 1
Shots 21 5
SOT 5 3
Home Away
Team Newcastle Stoke
Goals 0 0
Shots 15 9
SOT 6 2
Home Away
Team Swansea Arsenal
Goals 0 3
Shots 8 15
SOT 3 5
Home Away
Team Watford West Ham
Goals 2 0
Shots 20 8
SOT 5 3
Home Away
Team West Brom Leicester
Goals 2 3
Shots 14 13
SOT 6 5
Home Away
Team Everton Sunderland
Goals 6 2
Shots 15 17
SOT 8 9
Home Away
Team Southampton Bournemouth
Goals 2 0
Shots 11 16
SOT 2 2
Home Away
Team Tottenham Aston Villa
Goals 3 1
Shots 17 13
SOT 6 2

Chelsea 1-3 Liverpool

Probably the headline of the week as Chelsea's woes continue. However, those looking at underlying numbers were likely betting on this. Chelsea have been genuinely bad, here they are out-shot at home. Liverpool are a good side, but not so good the champions would expect to be deservedly beaten at home.

Read more…

EPL 24-25 October 2015

EPL 24-25th October

Weekly look at the weekend games in the EPL:

In [1]:
%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)
Home Away
Team Arsenal Everton
Goals 2 1
Shots 20 10
SOT 5 5
Home Away
Team Aston Villa Swansea
Goals 1 2
Shots 9 11
SOT 3 4
Home Away
Team Leicester Crystal Palace
Goals 1 0
Shots 12 9
SOT 3 4
Home Away
Team Norwich West Brom
Goals 0 1
Shots 16 7
SOT 3 4
Home Away
Team Stoke Watford
Goals 0 2
Shots 12 13
SOT 1 3
Home Away
Team West Ham Chelsea
Goals 2 1
Shots 12 8
SOT 5 4
Home Away
Team Bournemouth Tottenham
Goals 1 5
Shots 11 14
SOT 3 9
Home Away
Team Liverpool Southampton
Goals 1 1
Shots 15 8
SOT 2 3
Home Away
Team Man United Man City
Goals 0 0
Shots 6 6
SOT 1 1
Home Away
Team Sunderland Newcastle
Goals 3 0
Shots 9 21
SOT 3 8

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.

Read more…

EPL 17-19 October 2015

EPL 3-4th October 2015

A brief look at the shot statistics which underlay the weekend's games. Teams of course had an extended break due to the international weekend.

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
weekend_matches = league_analysis.get_matches(epl, '17/10/2015', '19/10/2015')
league_analysis.display_given_matches(weekend_matches)
Home Away
Team Chelsea Aston Villa
Goals 2 0
Shots 9 8
SOT 3 1
Home Away
Team Crystal Palace West Ham
Goals 1 3
Shots 6 24
SOT 1 4
Home Away
Team Everton Man United
Goals 0 3
Shots 12 10
SOT 3 7
Home Away
Team Man City Bournemouth
Goals 5 1
Shots 15 5
SOT 11 1
Home Away
Team Southampton Leicester
Goals 2 2
Shots 14 26
SOT 6 7
Home Away
Team Tottenham Liverpool
Goals 0 0
Shots 13 12
SOT 4 3
Home Away
Team Watford Arsenal
Goals 0 3
Shots 8 17
SOT 1 6
Home Away
Team West Brom Sunderland
Goals 1 0
Shots 8 9
SOT 1 2
Home Away
Team Newcastle Norwich
Goals 6 2
Shots 11 18
SOT 6 6
Home Away
Team Swansea Stoke
Goals 0 1
Shots 14 9
SOT 2 2

Chelsea 2-0 Aston Villa

Chelsea sure needed this. It's not a particularly dominant home victory, particularly against Aston Villa who have not been posting stellar numbers so far.

Crystal Palace 1-3 West Ham

Something of a surprise and this no doubt now has a lot of the statistics people scratching their heads. I for one have been very bearish on West Ham, concluding that they have been very lucky and in particular away from home. But this was away from home and very well deserved victory. They had the second most total shots of the weekend after Leicester:

Read more…

EPL 3-4 October 2015

EPL 3-4th October 2015

A brief look at the shot statistics which underlay the weekend's games:

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
league_analysis.display_matches(epl, '3/10/15', '4/10/15')
Home Away
Team Aston Villa Stoke
Goals 0 1
Shots 13 12
SOT 2 5
Home Away
Team Bournemouth Watford
Goals 1 1
Shots 12 11
SOT 6 2
Home Away
Team Chelsea Southampton
Goals 1 3
Shots 10 13
SOT 3 5
Home Away
Team Crystal Palace West Brom
Goals 2 0
Shots 21 7
SOT 8 2
Home Away
Team Man City Newcastle
Goals 6 1
Shots 23 6
SOT 11 4
Home Away
Team Norwich Leicester
Goals 1 2
Shots 17 16
SOT 2 5
Home Away
Team Sunderland West Ham
Goals 2 2
Shots 12 20
SOT 3 6
Home Away
Team Arsenal Man United
Goals 3 0
Shots 12 9
SOT 5 5
Home Away
Team Everton Liverpool
Goals 1 1
Shots 14 13
SOT 4 4
Home Away
Team Swansea Tottenham
Goals 2 2
Shots 11 19
SOT 2 11

Wins for Manchester City and Southampton

These were, by shot counts at least, largely deserved victories, if perhaps a little flattering on the scoreline. Southampton have been doing fine all season and not quite being rewarded, so this win does not come as such a large surprise as it might have done at the start of the season, even disregarding Chelsea's poor form.

Southampton

Read more…

EPL 26-28 September 2015

EPL 27th-28th September 2015

Another weekend in the EPL, let's look at the basic statistics for all the games:

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
league_analysis.display_matches(epl, '26/09/15', '28/09/15')
Home Away
Team Leicester Arsenal
Goals 2 5
Shots 16 26
SOT 7 12
Home Away
Team Liverpool Aston Villa
Goals 3 2
Shots 21 10
SOT 12 4
Home Away
Team Man United Sunderland
Goals 3 0
Shots 12 9
SOT 7 4
Home Away
Team Newcastle Chelsea
Goals 2 2
Shots 11 16
SOT 5 4
Home Away
Team Southampton Swansea
Goals 3 1
Shots 18 11
SOT 7 4
Home Away
Team Stoke Bournemouth
Goals 2 1
Shots 8 11
SOT 5 6
Home Away
Team Tottenham Man City
Goals 4 1
Shots 15 22
SOT 8 8
Home Away
Team West Ham Norwich
Goals 2 2
Shots 19 16
SOT 7 7
Home Away
Team Watford Crystal Palace
Goals 0 1
Shots 15 16
SOT 2 3
Home Away
Team West Brom Everton
Goals 2 3
Shots 9 12
SOT 4 4

Leicester 2-5 Arsenal

Possibly the most entertaining game. Arsenal will be very happy with this of course, Arsenal have been posting pretty excellent numbers all season without really reaping the benefits of it. Here they did. Leicester on the other hand will obviously not be keen to lose too many games at home, but taking 16 shots, 7 of which were on target against an Arsenal side that have tended to dominate shots will be some consolation. Just how good/decent were Leicester against Arsenal? They took more shots against Arsenal than the average so far, but also let in more:

Read more…

EPL 19-20 September 2015

EPL 19th-20th September 2015

Another weekend in the EPL, let's look at the basic statistics for all the games:

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
league_analysis.display_matches(epl, '19/09/15', '20/09/15')
Home Away
Team Aston Villa West Brom
Goals 0 1
Shots 13 11
SOT 3 6
Home Away
Team Bournemouth Sunderland
Goals 2 0
Shots 15 9
SOT 5 2
Home Away
Team Chelsea Arsenal
Goals 2 0
Shots 22 9
SOT 7 2
Home Away
Team Man City West Ham
Goals 1 2
Shots 27 6
SOT 8 3
Home Away
Team Newcastle Watford
Goals 1 2
Shots 15 13
SOT 5 4
Home Away
Team Stoke Leicester
Goals 2 2
Shots 11 12
SOT 4 5
Home Away
Team Swansea Everton
Goals 0 0
Shots 12 17
SOT 3 2
Home Away
Team Liverpool Norwich
Goals 1 1
Shots 23 7
SOT 7 2
Home Away
Team Southampton Man United
Goals 2 3
Shots 15 10
SOT 8 3
Home Away
Team Tottenham Crystal Palace
Goals 1 0
Shots 22 12
SOT 6 4

Chelsea 2-0 Arsenal

The red cards, and in particular Gabriel's just before half-time, somewhat robbed us of an otherwise entertaining and interesting football match. Subsequently Costa has been given a ban for 3 matches whilst Gabriel's red card appeal was successful.

So there is certainly much debate to be had as to whether Chelsea really deserved their victory. However, this match represents the first match of the new league season in which Chelsea have really (shot) dominated their opponents. Likely a large portion of that is due to the red card just before half-time, but even before that Chelsea looked the better side (though we do not have the data here to back that statement up).

In any case, dominating shots 22-9 and shots on target 7-2 is a performance worthy of a victory, whether or not that performance was achieved through dismissals and/or gamemanship. This now makes the rest of Chelsea's season intriguing.

So too for Arsenal, who have generally dominated teams, by a significant margin. They have had some trouble converting shots into goals, but not performing against Chelsea is likely a more acute headache for the club.

Read more…

EPL 11-13 September 2015

EPL 11-13th September 2015

Another weekend in the EPL, let's look at the basic statistics for all the games:

In [1]:
%matplotlib inline
import league_analysis
from IPython.display import display, HTML
epl = league_analysis.epl
league_analysis.display_matches(epl, '12/09/15', '14/09/15')
Home Away
Team Arsenal Stoke
Goals 2 0
Shots 29 9
SOT 12 4
Home Away
Team Crystal Palace Man City
Goals 0 1
Shots 10 21
SOT 2 7
Home Away
Team Everton Chelsea
Goals 3 1
Shots 14 15
SOT 9 2
Home Away
Team Man United Liverpool
Goals 3 1
Shots 9 8
SOT 3 4
Home Away
Team Norwich Bournemouth
Goals 3 1
Shots 12 7
SOT 4 2
Home Away
Team Watford Swansea
Goals 1 0
Shots 17 8
SOT 6 3
Home Away
Team West Brom Southampton
Goals 0 0
Shots 8 14
SOT 1 4
Home Away
Team Leicester Aston Villa
Goals 3 2
Shots 21 11
SOT 6 4
Home Away
Team Sunderland Tottenham
Goals 0 1
Shots 12 15
SOT 2 4
Home Away
Team West Ham Newcastle
Goals 2 0
Shots 17 14
SOT 3 4

Everton 3-1 Chelsea

Chelsea are not having a great start to the season. As others have pointed out this is not a case of having underlying performance and getting a bunch of unlucky results. The performance for Chelsea simply is not there. In this case they have a respectable number of shots at goal, in fact out-shooting their hosts 14-15, but it is the shots on target that reveals that the score line was anything but a fluke. Everton had 9 shots on target to Chelsea's 2. If we take the average number of shots on target per goal in the premier league and multiply by 9 vs 2 we get an average score line of 2.54 vs 0.57, so 3-1 is perfectly fair scoreline given those shots on targets. I still expect Chelsea to somewhat improve, but they will have to improve their performances rather than just allow luck to regress to the mean.

Read more…