RobZombie
Premium Platinum
North Melbourne - 2024 Hugh Greenwood Player Sponsor
Veteran
North Melbourne - 2023 Ailish Considine and Bella Eddy Player Sponsor
North Melbourne - Bella Eddey and Vicki Wall Player Sponsor - Season 7
North Melbourne - 2023 Aaron Hall and Flynn Perez Player Sponsor
North Melbourne - 2022 Aaron Hall and Flynn Perez Player Sponsor
North Melbourne - 2022 Kaitlyn Ashmore and Aileen Gilroy Player Sponsor
North Melbourne AFLW - 2021 Aileen Gilroy and Kaitlyn Ashmore Player Sponsor
- May 18, 2012
- 8,271
- 24,095
- AFL Club
- North Melbourne
- Other Teams
- Jays, Leafs, Blackpool FC
Great work Pykie,
I was inspired by this to have a bit of a similar look. I weighted goals by actual points conceded rather than rankings, so with Geelong conceding 1462 points for the year and Gold Coast 2232, it was about 1.5 times easier to kick a goal against the top side than the bottom - or, a goal against CG was worth 2/3 of a goal against Geelong. Applying that to the entire ladder, I came out with this:
Brown: goals: 64, adj: 65.42
Cameron: goals: 67, adj: 65.56
Hawkins: goals: 52, adj: 51.80
Darling: goals: 52, adj: 52.42
Lynch: goals 54, adj: 54.54
So Cameron beating up on bad teams did account for the differences between his and BBB's final tallies, but probably not more than that. Brown was the only one of the top 5 to be more than a goal better than expected for quality of opposition.
Here is some python code that works that out.
#!/usr/bin/env python
from decimal import Decimal
from statistics import mean
import json
scores_against = {'GEE': 1462, 'COL': 1601, 'HAW': 1602,
'RIC': 1664, 'GWS': 1669, 'WCE': 1691,
'BRI': 1694, 'PTA': 1714, 'FRE': 1718,
'SYD': 1746, 'ADE': 1761, 'ESS': 1784,
'WBD': 1810, 'NME': 1834, 'CAR': 1905,
'STK': 1961, 'MEL': 1995, 'GCS': 2232}
m = mean(scores_against.values())
relative_value = {}
for k in scores_against:
rel = m/scores_against[k]
relative_value[k] = rel
players = {
'Brown': ['FRE 2', 'BRI 3', 'HAW 1', 'ADE 4', 'ESS 2', 'CAR 4', 'GEE 5',
'SYD 1', 'WBD 3', 'RIC 5', 'GCS 2', 'GWS 2', 'STK 3', 'ESS 6',
'BRI 3', 'WCE 2', 'HAW 4', 'PTA 10', 'MEL 2'],
'Cameron': ['ESS 4', 'WCE 3', 'RIC 7', 'GEE 3', 'FRE 4', 'SYD 3', 'STK 6',
'MEL 3', 'GCS 5', 'ADE 1', 'NME 1', 'ESS 3', 'BRI 2', 'RIC 3',
'COL 6', 'PTA 3', 'HAW 1', 'GCS 9'],
'Hawkins': ['COL 2', 'MEL 2', 'ADE 2', 'GWS 3', 'HAW 1', 'WCE 3', 'ESS 2',
'NME 4', 'WBD 4', 'GCS 4', 'SYD 4', 'RIC 4', 'ADE 2', 'WBD 2',
'HAW 2', 'STK 1', 'SYD 5', 'FRE 3', 'NME 2'],
'Darling': ['BRI 2', 'GWS 4', 'COL 1', 'FRE 3', 'GCS 2', 'STK 1', 'MEL 1',
'ADE 3', 'WBD 6', 'SYD 1', 'ESS 1', 'HAW 5', 'FRE 4', 'COL 3',
'MEL 4', 'NME 2', 'CAR 2', 'ADE 3', 'RIC 2', 'HAW 2'],
'Lynch': ['CAR 3', 'COL 3', 'GWS 4', 'PTA 6', 'MEL 1', 'FRE 2', 'HAW 3',
'ESS 2', 'NME 1', 'GEE 1', 'ADE 2', 'STK 3', 'GCS 3', 'GWS 3',
'PTA 3', 'COL 5', 'MEL 3', 'CAR 2', 'WCE 3', 'BRI 1']
}
goals = {}
for player, hauls in players.items():
goals[player] = {'raw': 0, 'adj': 0.0}
for haul in hauls:
(opp, gg) = haul.split()
goals[player]['raw'] += int(gg)
goals[player]['adj'] += int(gg) * float(relative_value[opp])
print(json.dumps(goals, indent=2))
from decimal import Decimal
from statistics import mean
import json
scores_against = {'GEE': 1462, 'COL': 1601, 'HAW': 1602,
'RIC': 1664, 'GWS': 1669, 'WCE': 1691,
'BRI': 1694, 'PTA': 1714, 'FRE': 1718,
'SYD': 1746, 'ADE': 1761, 'ESS': 1784,
'WBD': 1810, 'NME': 1834, 'CAR': 1905,
'STK': 1961, 'MEL': 1995, 'GCS': 2232}
m = mean(scores_against.values())
relative_value = {}
for k in scores_against:
rel = m/scores_against[k]
relative_value[k] = rel
players = {
'Brown': ['FRE 2', 'BRI 3', 'HAW 1', 'ADE 4', 'ESS 2', 'CAR 4', 'GEE 5',
'SYD 1', 'WBD 3', 'RIC 5', 'GCS 2', 'GWS 2', 'STK 3', 'ESS 6',
'BRI 3', 'WCE 2', 'HAW 4', 'PTA 10', 'MEL 2'],
'Cameron': ['ESS 4', 'WCE 3', 'RIC 7', 'GEE 3', 'FRE 4', 'SYD 3', 'STK 6',
'MEL 3', 'GCS 5', 'ADE 1', 'NME 1', 'ESS 3', 'BRI 2', 'RIC 3',
'COL 6', 'PTA 3', 'HAW 1', 'GCS 9'],
'Hawkins': ['COL 2', 'MEL 2', 'ADE 2', 'GWS 3', 'HAW 1', 'WCE 3', 'ESS 2',
'NME 4', 'WBD 4', 'GCS 4', 'SYD 4', 'RIC 4', 'ADE 2', 'WBD 2',
'HAW 2', 'STK 1', 'SYD 5', 'FRE 3', 'NME 2'],
'Darling': ['BRI 2', 'GWS 4', 'COL 1', 'FRE 3', 'GCS 2', 'STK 1', 'MEL 1',
'ADE 3', 'WBD 6', 'SYD 1', 'ESS 1', 'HAW 5', 'FRE 4', 'COL 3',
'MEL 4', 'NME 2', 'CAR 2', 'ADE 3', 'RIC 2', 'HAW 2'],
'Lynch': ['CAR 3', 'COL 3', 'GWS 4', 'PTA 6', 'MEL 1', 'FRE 2', 'HAW 3',
'ESS 2', 'NME 1', 'GEE 1', 'ADE 2', 'STK 3', 'GCS 3', 'GWS 3',
'PTA 3', 'COL 5', 'MEL 3', 'CAR 2', 'WCE 3', 'BRI 1']
}
goals = {}
for player, hauls in players.items():
goals[player] = {'raw': 0, 'adj': 0.0}
for haul in hauls:
(opp, gg) = haul.split()
goals[player]['raw'] += int(gg)
goals[player]['adj'] += int(gg) * float(relative_value[opp])
print(json.dumps(goals, indent=2))