My system went 3-0-1 last weekend (Or 3-1 if you consider my prediction in the Bengals – Chargers game a loss, as opposed to “too close to pick”), so time to present playoff odds for the second round of the playoffs.

Divisional Round Playoff Odds
Home Team Visiting Team Score Diff Win Prob Est. Point Spread
Seattle Seahawks New Orleans Saints 0.676 0.663 5.0
Carolina Panthers SF 49ers -0.157 0.461 -1.2
Denver Broncos San Diego Chargers 0.411 0.601 3.0
New England Patriots Indianapolis Colts -0.060 0.485 -0.4

 

Odds that differ by less than a point in estimated point spread are probably not significant, and from my POV, a suggestion that you don’t bet that particular game.

The regular season has ended and the playoffs have begun. It would be useful to have a set of playoff grade data to do playoff probabilities, and though I’ve been down and out this season (no job at times, foot stress fracture at times, and a bad right shoulder), I currently have some time off my new job, a new laptop, and enough time to grind through some playoff numbers.

NFL stats at the end of the regular season:

week_17_2013_stats

To explain the columns above, Median is a median point spread, and can be used to get a feel for how good a team is without overly weighting a blowout win or blowout loss. HS is Brian Burke’s Homemade Sagarin, as implemented in Maggie Xiong’s PDL::Stats. Pred is the predicted Pythagorean expectation. The exponent for this measure is fitted to the data set itself. SOS, SRS, and MOV are the simple ranking components, analyzed via this Perl implementation. MOV is margin of victory, or point spread divided by games played. SOS is strength of schedule. SRS is the simple ranking.

Playoff Odds are calculated according to this model:

logit P  =  0.668 + 0.348*(delta SOS) + 0.434*(delta Playoff Experience)

The results are given below, as a “score” in logits:

2013 NFL Playoff Teams, C&F Playoff Model Worksheet.
NFC
Rank Name Home Field Advantage Prev. Playoff Experience Strength of Schedule Total Score
1 Seattle Seahawks 0.406 0.434 0.494 1.334
2 Carolina Panthers 0.406 0.0 0.484 0.889
3 Philadelphia Eagles 0.406 0.0 -0.661 -0.256
4 Green Bay Packers 0.406 0.434 -0.842 -0.003
5 San Francisco 49ers 0.0 0.434 0.612 1.046
6 New Orleans Saints 0.0 0.0 0.658 0.658
AFC
1 Denver Broncos 0.406 0.434 -0.546 0.293
2 NE Patriots 0.406 0.434 -0.258 0.582
3 Cancinnati Bengals 0.406 0.434 -0.856 -0.017
4 Indianapolis Colts 0.406 0.434 0.209 1.048
5 Kansas City Chiefs 0.0 0.0 -0.602 -0.602
6 San Diego Chargers 0.0 0.0 -0.118 -0.118

 

The total score of a particular team is used as a base. Subtract the score of the opponent and the result is the logit of the win probability for that game. You can use the inverse logit (see Wolfram Alpha to do this easily) to get the probability, and you can multiply the logit of the win probability by 7.4 to get the estimated point spread.

For the first week of the playoffs, I’ve done all this for you, in the table below. Odds are presented from the home team’s point of view.

First Round Playoff Odds
Home Team Visiting Team Score Diff Win Prob Est. Point Spread
Philadelphia Eagles New Orleans Saints -0.914 0.286 -6.8
Green Bay Packers SF 49ers -1.049 0.259 -7.8
Cincinnati Bengals San Diego Chargers 0.101 0.525 0.7
Indianapolis Colts Kansas City Chiefs 1.650 0.839 12.2

 

Some general conclusions from the data above: the teams my model favors most are the Seattle Seahawks, the Indianapolis Colts, the 49ers, the Carolina Panthers, and then the New Orleans Saints, mostly NFC teams. Since the Super Bowl itself does not have a home team, the odds change once you actually reach the Super Bowl. The sum of the SOS column and the Previous Playoff Experience column can be used to estimate odds of winning “the big one”. The strongest team in a Super Bowl setting would be the San Francisco 49ers, with a total score, less HFA, of 1.049. The Indianapolis Colts, with a total score of 0.643 less HFA, would be the strongest possible AFC contender.

A point I’d like the reader to consider is this question: should the New Orleans Saints be granted an exception to the previous playoff experience rule of “last year only counts” and given the 0.434 advantage of a playoff team? 2012 was an aberration as the coach was suspended. I’m not calculating this variation into the formula at this point, but I’ll note that this is an issue that you, the reader, need to resolve for yourself.

The road to the playoffs is not easy, a topic that can be studied by trying to calculate the path to the playoffs of the Indianapolis colts, a team that would be favored in every matchup along the way. Let’s calculate the odds of Indianapolis actually winning all three games.

Odds of Indianapolis reaching the Super Bowl
WP versus Kansas City WP versus Denver Broncos WP versus NE Pats Cume Probability
0.839 0.586 0.515 0.253

 

Three teams from the NFC would be favored over any possible AFC contender. Those are San Francisco, Seattle, and the New Orleans Saints. Carolina would be favored over any AFC contender except the Indianapolis Colts.

Sorry about any delays in publication. I was between jobs at the time.

Week 13 NFL Stats:

2013_stats_week_13

To explain the columns above, Median is a median point spread, and can be used to get a feel for how good a team is without overly weighting a blowout win or blowout loss. HS is Brian Burke’s Homemade Sagarin, as implemented in Maggie Xiong’s PDL::Stats. Pred is the predicted Pythagorean expectation. The exponent for this measure is fitted to the data set itself. SOS, SRS, and MOV are the simple ranking components, analyzed via this Perl implementation. MOV is margin of victory, or point spread divided by games played. SOS is strength of schedule. SRS is the simple ranking.

OSRS and DSRS stats look like this:

2013_stats_week_13_srs

The two most impressive teams so far, IMO, are Seattle and Carolina. New Orleans may win the division but right now Carolina is something of a statistical darling.

Conversation around Atlanta is that the Falcons are effectively out of the playoff hunt, as they would need to go 8-1 to be back in it. Personally, I don’t see how they can become a better team than Carolina at this point, much less New Orleans.

Week 8 NFL Stats:

2013_stats_week_8

To explain the columns above, Median is a median point spread, and can be used to get a feel for how good a team is without overly weighting a blowout win or blowout loss. HS is Brian Burke’s Homemade Sagarin, as implemented in Maggie Xiong’s PDL::Stats. Pred is the predicted Pythagorean expectation. The exponent for this measure is fitted to the data set itself. SOS, SRS, and MOV are the simple ranking components, analyzed via this Perl implementation. MOV is margin of victory, or point spread divided by games played. SOS is strength of schedule. SRS is the simple ranking.

OSRS and DSRS stats look like this:

2013_stats_week_8_srs

I’m very tempted to start figuring out who would win playoffs if results were frozen and teams were to go into rounds of games at this time. That’s something for a future post, though.

As #1 teams go, Kansas City has had an exceptionally weak set of opponents and as a #1, Kansas City looks to be had. The schedule doesn’t give them very many hard opponents. Denver looms in week 11 and 13, and Indianapolis in week 16, but otherwise the schedule favors this team — until the playoffs.

Week 7 NFL Stats:

2013_stats_week_7

To explain the columns above, Median is a median point spread, and can be used to get a feel for how good a team is without overly weighting a blowout win or blowout loss. HS is Brian Burke’s Homemade Sagarin, as implemented in Maggie Xiong’s PDL::Stats. Pred is the predicted Pythagorean expectation. The exponent for this measure is fitted to the data set itself. SOS, SRS, and MOV are the simple ranking components, analyzed via this Perl implementation. MOV is margin of victory, or point spread divided by games played. SOS is strength of schedule. SRS is the simple ranking.

OSRS and DSRS stats look like this:

2013_stats_week_7_srs

The OSRS and SDSR stats are calculated as described here. The top 5 teams in OSRS turn out to be Denver, Chicago, Indianapolis, Dallas, and Green Bay. The top 5 teams in DSRS are Carolina, Kansas City, Seattle, San Francisco, and New Orleans. Carolina’s stats in general are notable, as they have the second best Pythagorean in the league.

Week 6 stats:

2013_stats_week_6

To explain the columns above, Median is a median point spread, and can be used to get a feel for how good a team is without overly weighting a blowout win or blowout loss. HS is Brian Burke’s Homemade Sagarin, as implemented in Maggie Xiong’s PDL::Stats. Pred is the predicted Pythagorean expectation. The exponent for this measure is fitted to the data set itself. SOS, SRS, and MOV are the simple ranking components, analyzed via this Perl implementation. MOV is margin of victory, or point spread divided by games played. SOS is strength of schedule. SRS is the simple ranking.

Week 6 OSRS and DSRS stats:

2013_stats_week_6_srs

It’s interesting that while the #1 DSRS is Kansas City (expected), the #2 is Carolina (not so expected). The #1 OSRS is Denver, and the #2 for now appears to be Dallas. Dallas’s offense SRS can’t be assigned entirely to the offense. Monte Kiffin’s defense emphasizes turnovers and the Dallas special teams are scoring as well.

It was yesterday that Nathan Oyler asked me on Twitter if I could rewrite my Perl code to calculate offensive SRS and defensive SRS. Nathan, I believe, is working on a game or a simulation and wanted to be able to calculate these values. I replied, “Do you know how to calculate these?” and, after playing around a little, I can only conclude that the best way to handle this calculation is going to be a matter of debate.

That said, I have a way to calculate these numbers, but first we need a little theory. It starts with Chase Stuart’s comment on the Smart Football blog that these values are related to points for and points against. Given that, and the definition of margin of victory:

MOV(team) = ( “points for” – “points against” ) / games_played(team) = point spread/games_played(team)

We now need to define an average score. This works:

AVG_SCORE = points_for(all teams)/ games_played(all teams)

From these definitions and the hint Chase dropped, we define offensive MOV and defensive MOV this way.

OMOV(team) = ( points_for(team) – games_played(team)*AVG_SCORE ) / games_played(team)

DMOV(team) = ( games_played(team)*AVG_SCORE – points_against(team) ) / games_played(team)

So, rather than plugging in MOV to a SRS linear equation solver, you can plug in offensive MOV and defensive MOV and then you can get numbers that will help you calculate an OSRS and a DSRS.

I say will get you numbers because there a  gotcha, in that whenever you have OSOS and DSOS and they are of opposite sign, then there is no unique solution to the equation

SOS = OSOS + DSOS

as I can choose any constant c and the result

SOS = (OSOS + c) + (DSOS – c)

is also a solution. This kind of linear wandering around, the solver adding arbitrary constants to OSOS and DSOS, happens when you attempt to solve for these equations. The issue is, there is no one obvious solution to this problem, unlike regular SRS where the constraint “sum of all SRS must equal zero” applies.  Now if someone uncovers a constraint, let me know and I’ll be happy to code it. In the absence of such a rule so far, I’ve used this folk rule.

Reduce the magnitude of the OSOS and DSOS terms until the smaller of the two, in terms of absolute magnitude, is zero.

This is straightforward to code. That my solution is not the same as the one in Pro Football  Reference is easy enough to show. If I go to this page, I get these values for the 2007 New England Patriots. If I calculate OMOV and DMOV using my code, we can extract the DSOS and OSOS values for this calculation.

2007 New England Patriots
SRS OSRS DSRS OMOV DMOV OSOS DSOS
20.1 15.9 4.2 15.1 4.6 0.8 -0.4

 

and while my code uses 0.4 and 0 for OSOS and DSOS respectively, the evident values that Pro Football Reference uses are 0.8 and -0.4. All that clear now?

I’m pretty sure my SOS calculation isn’t the same as PFR’s either, as I seen differences in OSRS/DSRS that amount to a point or two. In some cases this occurs when my calc yields same signed OSOS and DSOS values, and in that case, I don’t modify them at all.

The source code I’ve used to do these calculations is given here, as a Perl module. A “snapshot” of the code fragment I use to feed the Perl module source is:

calc_osrs_and_dsrs

typical output is, for the 2007 season:

OSRS-DSRS-2007-First-Cut

And yes, there are plenty of unknowns at this point. PFR has never really given any details of their OSOS/DSOS calculations, or the normalization routines they use. DSRS and OSRS as implemented by them is a “black box”. This implementation may not, in the long run, be the best of them, but it is reasonably well documented.

Update: corrected DMOV definition. Rewritten slightly for clarity.

Follow

Get every new post delivered to your Inbox.

Join 245 other followers