This is an attempt to figure out an automatic way to rank NFL teams. Just about every publication out there has a form of “NFL Power Rankings”. So far, they tend to be in two categories:
- Completely Stats-Driven: Football Outsiders, also featured at Fox Sports, has a system where they break everything down to the average performance per play, per position, per team, and then they adjust a team’s stats by who their opponent is. It’s really rather cool, and completely objective. But there are some things that bug me. For instance, Denver, at 5-1, was ranked 13th in the 2005 Week 6 rankings, behind some teams at or below .500. In other words, a team that is capable of piling up the stats without winning can easily be ranked ahead of another team that doesn’t have great stats, but pulls out wins through gut, will, and exploiting matchups.
- Completely Subjective: Seems like all the other major power ranking lists out there are in this category. A sportswriter or a committee applies their subjective judgment to all the teams and ranks them however the hell they want. You’ll see huge changes in the lineup every week because of the upsets. The main flaw with these lists is that they aren’t scientific, have huge variance in week-to-week performance, and aren’t really reflective of the overall quality of a team.
Obviously, I like the scientific approach better, although all the lists are fun. But as I said, there’s that one thing about the Football Outsiders approach that bugs me. It doesn’t really pay attention to a team’s wins.
So, I’ve been attempting to devise a rankings system that pays attention to wins. And, since I’m just one guy with no access to actual nfl statistics and no ability to actually improve on Football Outsiders’ system, I’ve decided to create a vastly inferior system by only paying attention to wins.
There’s one rule: a team is ranked ahead of another team if it has a beatpath to that team.
What do I mean by that? Well, that requires graphs. (And that’s really most of the reason I did this, so I could program in perl and play with this graph-generation package I have.) Read on for the graphs…
Technorati Tags: nfl
To explain this visually, we’ll use the first few weeks of the 2005 NFL season. Each week of the NFL season, we end up with clear wins and losses for each team, which give us clues about which teams are better and worse.
Week 1 is boring:
Week 2 is where the fun begins:
Now, obviously we’re not able to make much sense of rankings yet – we’ve got some undefeated teams very low in the graph. But this is just to get a very general, vague sense of how all the teams relate to each other in the pecking order.
Week 3 is where things start to get complicated:
Look closely. See how Denver has an arrow pointing up to Kansas City? We have a loop. Den->KC->NYJ->Mia->Den. As the season goes on and on, we are going to have more and more of these loops – we’ll even have two-team loops as division rivals split series.
But it’s the season splits that give us a clue of what we should do here. If two teams split a pair of games, it’s no longer clear which one is better. It’s a beatloop. So that means we should just rank the teams as if we don’t know who is better – in other words, as if they have never played each other at all. Then we’ll be left with unambiguous wins, or beatpaths.
So each week, I go through the graph to find all the beatloops (well, my perl program does). I find all the smallest beatloops, remove them, and then recalculate to find the next smallest batch of beatloops. In week 3, we only have one beatloop, of 4 teams. When I adjust for that, the graph looks like this:
It’s cleaner, but it still could be less cluttered. Since the full win-loss record of each team isn’t so important to us here, and since getting an idea of the overall ranking is more important, there are some redundant arrows here. Look at Seattle’s long swoopy arrow down to Arizona. Seattle already has another beatpath to Arizona, through Atlanta, Philly, SF, and STL. All the arrows really say is that Team A is better than Team B. We don’t need to be told twice. So let’s remove the redundant arrows:
That’s better, and cleaner. We’re starting to see a clearer picture of the ranking of the teams, too. Teams that are very good tend to have beatwins to other teams that are very good, which means they will have very long beatpaths. By beating San Diego (and helped out by that freak New Orleans victory over Carolina), Denver has the longest beatpath in Week 3.
Week 4 has a lot of beatloops. Don’t even try to look at this closely, it’s just to get an idea:
The system eliminates all the 3-team beatloops first, and then all the 4-team beatloops, etc, until there are no more beatloops left. Also correcting for the redundant arrows, we’re left with a much cleaner picture:
There are some interesting side effects to removing the beatloops, but so far I haven’t come across a case where it doesn’t make sense after some thought. For instance, in week 4, Denver defeated Jacksonville, but was given no credit for it. The reason is it immediately became a beatloop – Den->Jac->NYJ->Mia->Den. Denver’s loss to Miami keeps them from getting credit for beating Jacksonville. But it goes all ways. You’ll notice that Jacksonville no longer is receiving credit for defeating the Jets, like they had in week 3. Teams should get penalized for inconsistent play and developing beatloops, and this is a perfect example.
For week 5, we’ll go straight to the clean version of the graph:
You can really see the pecking order come into a bit more focus. Denver and Indy both have long beatpaths, although I would suspect that Denver’s beatpath is at higher risk of being broken apart by beatloops in the future, due to Washington’s inconsistency. On the other hand, Denver’s victory over Jacksonville might reappear in future graphs. You’ll notice that the Jets and Miami are off in bubbles by themselves. That’s because they have played so inconsistently that all of their victories are in beatloops. The system is telling us that we don’t have enough data to know where to put them in relation to any other team.
Denver isn’t above Indy for any particular reason, it’s just how the graph laid it out. But you can see that Denver and Indy are putting together good track records of beating good teams, that have in turn beaten other quality teams. Other teams are also without beatlosses, like Tampa Bay, but the teams they’ve beaten aren’t as solid.
We’ve focused on Denver in this article, so let’s take a quick look at their game against the Giants this week. What happens if the Giants win? Well, it depends on how the other games play out, but it’s quite possible that Denver could then lose credit for defeating San Diego, which would give San Diego a boost. Denver would still probably be ranked ahead of the Giants through the Washington path, though – all because the Giants lost to San Diego. Since the Giants lost to a team Denver beat, they would not have a beatpath to Denver. However, if Denver loses to San Diego later this year, then the Giants may get credit for beating Denver!
For a quick illustration on how this kind of scenario, let’s look at Week 7 right after the conclusion of the KC-Miami game.
KC beat Miami. But the graph shows the Jets getting credit for defeating Miami when they didn’t the previous week, and KC getting credit for defeating the Jets! Why is that?
The answer is because earlier in the season, the Jets were in a four-team beatloop: Jets->Miami->Denver->KC->Jets. But since KC just beat Miami, the loop shrunk: KC->Miami->Denver->KC. Miami became even more inconsistent. So by removing that beatpath from every team’s record, we see the following effects. KC’s victory over the Jets is no longer ambiguous – it was only ambiguous because the Jets beat a team (Miami) who was arguably better than KC (due to defeating Denver, who defeated KC), but since KC defeated Miami, that’s no longer in doubt. The Jets previously got no credit for defeating Miami, since they were arguably better than KC, who beat them – but KC put that to rest, so the Jets get their victory back.
You’ll notice one other side effect. Denver had been in a 4-team beatloop with Jacksonville – Den->Jac->Jets->Miami->Den . But since KC beat Miami to create a smaller 3-team loop, giving more reason to believe that Denver is actually better than Miami, this loop is blown away and Denver regains credit for defeating Jacksonville.
In review, it’s definitely true that I started looking at rewarding wins because I was dissatisfied with Denver’s low ranking in the Football Outsider’s power rankings. But I didn’t nudge this system to emphasize Denver in any way. I don’t control the placement of the bubbles (AT&T’s graphviz package does that). It appears that thus far in the season, Denver is stacking up quite a record – not just of wins, but of quality wins.
I’ll continue to create more graphs for each week of the rest of the season. Be sure to read the main site to keep tabs on the season’s developments!