Hello footballguys,
I thought some of you might be interested in my lil' ole' method of generating power rankings separated by offense and defense.
First, a little explanation:
My assumption here is that my rankings are zero-sum when offense and defense are combined. That is, every (adjusted) point counted towards an offense is counted precisely the same against the opposing defense. The rankings are determined as follows:
start by ranking offenses and defenses by adding up points for and points against. Normalize to a 0-100 scale, with 100 being most points for and least points against.
given the above rankings, normalize the points scored: pnorm = pscore * (1 - (offensive_rating - opposing_defensive_rating)). Note that this is still zero-sum, since the defensive rating for the team on defense is used against the offensive rating of the team on offense
repeat the above, but this time use the rankings returned in the last step. Continue iterating until the algorithm converges on a set of rankings that is both perfectly self-consistent (that is, using the rankings to normalize the score yields exactly the same rankings) and zero-sum (all points counted for a defense are also counted against an offense).Note that this is very much a discrete feedback system, and as such is subject to instability. To ameliorate this problem, we add a "gain" term as such: pnorm = pscore * (1 - gain*(offensive_rating - opposing_defensive_rating)), where gain<1. While monitoring the state variables, we experiment with gain until we get close to the largest value that yields a stable system, in this case 1/4.
So now we have a mess of numbers. What are they? Well, in one sentence, they are offensive and defensive ratings adjusted for relative strength of schedule. How, relative? Well, we look at the difference between the opposing defense and our offense (or vice-versa), not our defense versus the league average or some such. Think of it this way: if the worst team in the league had to play a bunch of mediocre teams, those would be hard-fought wins; conversely, the best team in the league should have little trouble with those same teams. Relative strength of schedule takes this into account.
Finally, then, the numbers. First, offense:
NWE 100.000DAL 83.321IND 72.842CLE 67.917PIT 64.065GNB 58.556DET 54.766CIN 54.511NYG 53.387SDG 51.525HOU 49.478NOR 48.993ARI 41.471PHI 40.369JAC 38.916SEA 37.553TEN 36.275WAS 34.992MIA 34.039MIN 32.003CHI 29.441TAM 29.306DEN 28.936NYJ 26.355OAK 23.123CAR 21.660BUF 17.196KAN 15.675ATL 15.238BAL 14.313STL 14.185SFO 0.000Defense:
Finally, using approximately the same algorithm but considering the team as a whole (taking into account wins, defensive performance, and offensive performance), the win/loss power rankings come out as follows:
I haven't provided full details about the "holistic" power rankings, mostly because those are more contentious and I don't want to debate the trifling details too much. Perhaps I'll re-code this all in something more Web2.0 friendly (can't help but think I should make jazz hands as I type that... ugh) and let people play with it on their own if I find some time.Enjoy!
-=kwantam
I thought some of you might be interested in my lil' ole' method of generating power rankings separated by offense and defense.
First, a little explanation:
My assumption here is that my rankings are zero-sum when offense and defense are combined. That is, every (adjusted) point counted towards an offense is counted precisely the same against the opposing defense. The rankings are determined as follows:
start by ranking offenses and defenses by adding up points for and points against. Normalize to a 0-100 scale, with 100 being most points for and least points against.
given the above rankings, normalize the points scored: pnorm = pscore * (1 - (offensive_rating - opposing_defensive_rating)). Note that this is still zero-sum, since the defensive rating for the team on defense is used against the offensive rating of the team on offense
repeat the above, but this time use the rankings returned in the last step. Continue iterating until the algorithm converges on a set of rankings that is both perfectly self-consistent (that is, using the rankings to normalize the score yields exactly the same rankings) and zero-sum (all points counted for a defense are also counted against an offense).Note that this is very much a discrete feedback system, and as such is subject to instability. To ameliorate this problem, we add a "gain" term as such: pnorm = pscore * (1 - gain*(offensive_rating - opposing_defensive_rating)), where gain<1. While monitoring the state variables, we experiment with gain until we get close to the largest value that yields a stable system, in this case 1/4.
So now we have a mess of numbers. What are they? Well, in one sentence, they are offensive and defensive ratings adjusted for relative strength of schedule. How, relative? Well, we look at the difference between the opposing defense and our offense (or vice-versa), not our defense versus the league average or some such. Think of it this way: if the worst team in the league had to play a bunch of mediocre teams, those would be hard-fought wins; conversely, the best team in the league should have little trouble with those same teams. Relative strength of schedule takes this into account.
Finally, then, the numbers. First, offense:
NWE 100.000DAL 83.321IND 72.842CLE 67.917PIT 64.065GNB 58.556DET 54.766CIN 54.511NYG 53.387SDG 51.525HOU 49.478NOR 48.993ARI 41.471PHI 40.369JAC 38.916SEA 37.553TEN 36.275WAS 34.992MIA 34.039MIN 32.003CHI 29.441TAM 29.306DEN 28.936NYJ 26.355OAK 23.123CAR 21.660BUF 17.196KAN 15.675ATL 15.238BAL 14.313STL 14.185SFO 0.000Defense:
Code:
PIT 100.000SEA 89.290TAM 85.638NWE 84.650GNB 83.451IND 81.508TEN 76.748BUF 70.769JAC 66.878KAN 59.164BAL 56.930PHI 56.024SDG 53.106CAR 51.544CHI 51.263MIN 49.928NYG 49.785ATL 49.339WAS 49.119DAL 45.858OAK 43.484ARI 36.620SFO 30.923DET 23.899NYJ 21.136NOR 19.135HOU 18.749DEN 15.649MIA 7.479STL 6.008CIN 5.766CLE 0.000
Code:
NWE 100.000GNB 88.877DAL 85.341IND 83.189PIT 80.843JAC 66.579TEN 66.043DET 64.926NYG 63.272SDG 56.904TAM 53.994SEA 53.481WAS 52.787CLE 51.385BUF 50.391PHI 43.508CHI 41.806HOU 40.583ARI 40.051DEN 39.732NOR 39.701KAN 38.975CAR 38.408BAL 36.894MIN 32.504CIN 31.475ATL 26.070OAK 15.436SFO 13.263NYJ 6.447STL 3.783MIA 0.000
-=kwantam