EPL August 14-17

EPL Second Round

The English Premier league has now gotten through a second round of matches and as everyone predicted Leicester are five points clear of the champions Chelsea. Here are the important statistics from all of the weekend's games:

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

Man City 3 - 0 Chelsea

The biggest game was undoubtedly between 1st and 2nd in the league last season. There is little doubt that Man City outplayed their guests and deserved their win, although if you really wanted to argue the case you would point to the potential sending off of Ferdandinho just prior to half time. Whether you agree that it deserved a red-card there was certainly the potential for the referee to see it that way.

Anyway, the shots indicate that City were indeed the better team, but 3-0 likely overstates the case. In particular Chelsea had some very decent opportunities. It's the sort of game that Chelsea could have undeservedly won/drawn.

Sunderland 1-3 Norwich

Sunderland losing their second game of the campaign and once again deservedly so. Norwich were well worthy of their 1-3 away victory, black cats fans should be getting a little worried. Although, again, this is the second game of the season and currently Sunderland are only a point of last season's champions.

Aston Villa 0-1 Manchester United

For the second week in succession Man United win 1-0 whilst far from dominating their opposition. I'm sure you could spin this as positive or negative as it pleases you.

Watford 0-0 West Brom

Watford seem to have at least settled into the Premier League in terms of competing well with the league's more established teams. They have out-shot both their opponents so far. But they still only have two points to show for it. Again I would imagine that both Watford fans and enemies will read into this what they wish.

Leicester, Stoke, and Arsenal

All worthy of their away points. Stoke even could have nicked the game at White Hart Lane.

Southampton 0-3 Everton

Okay hands up my bet for this game was a straightforward 2-0 victory for the home side. When in fact we have a convincing win for Everton. However, the shots totals show that this was probably at least a little lucky for Everton. Southampton have out-shot their visitors and the shots on target were 4 a piece. So for Southampton then it's the second weekend in succession they have out-shot their opponents and not been fully rewarded. This is currently a statistical blip, the question is, will it prove to be in the coming weeks. I think it will, but then I thought Southampton would win this game.

Liverpool vs Bournemouth

Okay Liverpool probably just about deserved their win, but 1-0 seems fair. Only two shots on target from 18.

TSR Week 1 vs TSR Week 2

Now for a bit of fun, I'm going to graph the TSR of a team in the first week against their TSR in the second week.

In [3]:
teams = epl.teams
def get_tsr_match(league, team, match_index):
    def tsr_in_game(game):
        shots_for = league_analysis.shots_for_in_game(team, game)
        shots_against = league_analysis.shots_against_in_game(team, game)
        total_shots = shots_for + shots_against
        return league_analysis.clean_ratio(shots_for, total_shots, default=0.5)
    stats = league.team_stats[team]
    return tsr_in_game(stats.games[match_index])
def get_x_stat(league, team):
    return get_tsr_match(league, team, 0)
def get_y_stat(league, team):
    try:
        return get_tsr_match(league, team, 1)
    except IndexError:
        print(team)
    
league_analysis.scatter_stats(epl, teams=teams, xlabel='1st Game TSR', ylabel='2nd Game TSR',
                              title='1st and 2nd game TSR comparisons',
                              get_x_stat=get_x_stat, get_y_stat=get_y_stat)
line of best fit: 0.972 x + 0.014

So there is a pretty strong correlation then as you would expect. Those teams deviating from the line of best fit have played two teams perceived to be quite different in strength as you would expect. For example Swansea have played Chelsea away followed by Newcastle at home. Meanwhile West Ham have faced Arsenal away followed by Leicester at home.

Comments

Comments powered by Disqus