The NFL season begins tonight, and there are predictions flying everywhere. I thought I’d take a basic analytical approach and produce a baseline projection. If your predictions can’t beat this (dumb) system, you aren’t very good at predictions!
What got me started down this trail was Bill Barnwell’s article on Grantland breaking down some good basic predictive NFL statistics. He discussed Pythagorean Wins, record in close games, the Plexiglass principle, and team turnover margin, and how those stats help in predictions.
So, I thought I’d throw together a quick projection system that includes those principles to churn out baseline NFL predictions.
Evaluating NFL Pythagorean Wins
First, I looked at whether there is any persistence to winning more games than expected from point differential. This is also tied into the close game fact–if you win a bunch of close games, you will win more games than your point differential would indicate likely.
I took all NFL team season since 1990 (thanks, Pro-Football-Reference!) and calculated each team’s Pythagorean Winning percentage for each season. I then compared the difference between actual win% and expected win% in year Y to year Y+1. The correlation was only 0.014, indicating that if you out perform your Pythagorean Win% one year, you aren’t more likely to do so the next year. Thus the “regression to the mean” effect of looking at Pythagorean Win % and close game win%.
So, in my projection, I will project point differential and calculate wins based off of that (and SoS).
Effect of Turnover Margin
Teams that have excellent turnover margins are somewhat more likely to have good turnover margins again; the correlation of turnover margin from 1 year to the next is 0.13. However, there is a strong “regression to the mean” component.
I ran a regression to predict turnover margin for Year Y from the previous 6 years. The weights came out as follows:
Year | Weight |
---|---|
NFL Average (=0.0) | 5.76 |
Y-1 | 1.00 |
Y-2 | 0.47 |
Y-3 | 0.22 |
Y-4 | 0.10 |
Y-5 | 0.05 |
Y-6 | 0.02 |
So most of the weight is on NFL average–there is a very strong regression to the mean.
The Projections
To create my actual projections, I used a 3-step process:
- Adjust team point differential to remove turnover margin effect
- Predict point differential this year (using last 6 years plus regression to the mean)
- Convert point differential to wins based on strength of schedule and the Pythagorean equation
I ran a regression on the last 22 years of data (since 1990) to concurrently adjust for turnover margin and find the weights for predicting point differential.
The regression found that for every turnover-per-game-margin, the team’s point differential should be discounted by 2.4 points/game. So if a team (San Fransisco last year) had a point differential of +9.44, with at turnover margin per game of +1.75, their adjusted point differential for predictive purposes would be 9.4 – (2.4*1.75) = 5.24.
Okay, now I have adjusted point differentials for every historical season. On to the projections!
I ran the regression to predict point differential just like I did for turnover margins above. The resulting weights:
Year | Weight |
---|---|
NFL Average (=0.0) | 0.83 |
Y-1 | 1.00 |
Y-2 | 0.38 |
Y-3 | 0.15 |
Y-4 | 0.06 |
Y-5 | 0.02 |
Y-6 | 0.01 |
Notice: not nearly as strong of a regression to the NFL mean, nor a very strong reversion to the team’s historical past. Last year is a better predictor of this year than NFL average or the team’s total history before last year.
Okay, on to part 3: converting to wins.
I took the NFL schedule for next year, and based on the predicted team strengths I just calculated, I generated a strength of schedule for each team.
So, taking the team’s strength + SoS, and predicted team pace (I won’t bore you with those calcs) I generated Points For and Points Against and thus the team’s Pythagorean Win%, and Wins and Losses.
Note: I made 2 manual tweaks to account for 2 changes for this season: I added 5 points to the Broncos historical seasons and removed 5 points from the Colts for the seasons Peyton Manning played there, and I removed 5 points from the Saints for the coaching/suspension issues.
Here are the results:
AFC Predictions
Team | W | L | Pythag | Pts | PtsO | PtDif | MoV | SoS | SRS | Seed |
---|---|---|---|---|---|---|---|---|---|---|
AFC East | ||||||||||
New England Patriots | 10 | 6 | 0.648 | 436 | 338 | 98 | 6.1 | -0.7 | 5.5 | 1 |
New York Jets | 9 | 7 | 0.537 | 366 | 344 | 21 | 1.3 | 0.1 | 1.4 | 6 |
Miami Dolphins | 8 | 8 | 0.523 | 349 | 337 | 12 | 0.8 | -0.4 | 0.3 | |
Buffalo Bills | 7 | 9 | 0.435 | 344 | 385 | -41 | -2.6 | -0.3 | -2.9 | |
AFC North | ||||||||||
Pittsburgh Steelers | 10 | 6 | 0.632 | 364 | 291 | 73 | 4.6 | 0.2 | 4.7 | 2 |
Baltimore Ravens | 10 | 6 | 0.594 | 367 | 313 | 54 | 3.4 | 0.6 | 4.0 | 5 |
Cincinnati Bengals | 8 | 8 | 0.484 | 342 | 353 | -10 | -0.6 | 0.5 | -0.2 | |
Cleveland Browns | 6 | 10 | 0.383 | 290 | 355 | -66 | -4.1 | 0.6 | -3.5 | |
AFC South | ||||||||||
Houston Texans | 9 | 7 | 0.557 | 378 | 344 | 34 | 2.1 | -0.1 | 2.0 | 4 |
Tennessee Titans | 8 | 8 | 0.503 | 348 | 347 | 1 | 0.1 | 0.3 | 0.4 | |
Jacksonville Jaguars | 7 | 9 | 0.411 | 316 | 369 | -53 | -3.3 | 0.1 | -3.2 | |
Indianapolis Colts | 6 | 10 | 0.394 | 329 | 395 | -67 | -4.2 | 0.0 | -4.2 | |
AFC West | ||||||||||
San Diego Chargers | 9 | 7 | 0.587 | 403 | 349 | 54 | 3.4 | -0.3 | 3.1 | 3 |
Denver Broncos | 8 | 8 | 0.511 | 367 | 361 | 6 | 0.4 | 0.4 | 0.7 | |
Oakland Raiders | 7 | 9 | 0.448 | 350 | 384 | -33 | -2.1 | 0.0 | -2.0 | |
Kansas City Chiefs | 6 | 10 | 0.399 | 307 | 365 | -59 | -3.7 | 0.0 | -3.7 |
NFC Predictions
Team | W | L | Pythag | Pts | PtsO | PtDif | MoV | SoS | SRS | Seed |
---|---|---|---|---|---|---|---|---|---|---|
NFC East | ||||||||||
Philadelphia Eagles | 9 | 7 | 0.589 | 397 | 341 | 55 | 3.5 | 0.0 | 3.4 | 3 |
Dallas Cowboys | 8 | 8 | 0.504 | 366 | 365 | 1 | 0.1 | 0.3 | 0.4 | |
New York Giants | 8 | 8 | 0.482 | 370 | 383 | -13 | -0.8 | 0.9 | 0.1 | |
Washington Redskins | 7 | 9 | 0.443 | 325 | 359 | -34 | -2.1 | 0.1 | -2.0 | |
NFC North | ||||||||||
Green Bay Packers | 10 | 6 | 0.649 | 432 | 334 | 98 | 6.1 | -0.8 | 5.4 | 1 |
Chicago Bears | 8 | 8 | 0.528 | 358 | 342 | 16 | 1.0 | -0.5 | 0.5 | 6 |
Detroit Lions | 8 | 8 | 0.509 | 386 | 381 | 5 | 0.3 | 0.0 | 0.3 | |
Minnesota Vikings | 7 | 9 | 0.452 | 350 | 380 | -31 | -1.9 | -0.5 | -2.4 | |
NFC South | ||||||||||
New Orleans Saints | 10 | 6 | 0.598 | 421 | 356 | 64 | 4.0 | -0.2 | 3.8 | 2 |
Atlanta Falcons | 9 | 7 | 0.563 | 381 | 343 | 38 | 2.4 | -0.5 | 1.9 | 5 |
Carolina Panthers | 7 | 9 | 0.435 | 343 | 384 | -41 | -2.6 | 0.0 | -2.5 | |
Tampa Bay Buccaneers | 6 | 10 | 0.382 | 323 | 397 | -74 | -4.6 | -0.2 | -4.8 | |
NFC West | ||||||||||
San Francisco 49ers | 9 | 7 | 0.564 | 355 | 319 | 36 | 2.2 | -0.5 | 1.8 | 4 |
Seattle Seahawks | 8 | 8 | 0.472 | 339 | 356 | -17 | -1.1 | -0.4 | -1.5 | |
Arizona Cardinals | 8 | 8 | 0.470 | 347 | 366 | -19 | -1.2 | 0.0 | -1.2 | |
St. Louis Rams | 5 | 11 | 0.314 | 279 | 390 | -111 | -6.9 | 0.0 | -6.9 |
Obviously, by pundit standards, these projections seem conservative. They represent, however, a maximum likelihood estimate for each team–we should give each team about a 50% chance of doing better than or worse than their prediction here.
The standard deviation on the projection is 5.4 points, so there is a 68% chance that each team will be within 5.4 points of the predicted margin per game.
Put another way–there is about a 50% chance that a team over performs its expected point differential by 10 or more points. If that team is yours–you could be the San Fransisco 49ers of this season (+10.4 above last year) or the Lions or Saints (about +8.5 above expectation for each last year).
EvanZ
Hey, Daniel. Glad I caught this, as I had just done a model in BUGS/JAGS and was thinking about estimating turnover weights from the model itself (e.g. as another parameter). Have you found the work by Ed Kambour who also does Bayesian NFL ratings? He’s got a lot of good ideas in some old PPT slides.
DanielM
What is BUGS/JAGS? Okay, read up on it… Still have no clue 🙂
I’ve done quite a bit with football ratings over the years (I think I started in that before working with basketball), so I had a background with many if the issues in football.
I haven’t seen Ed Kambour’s work.
I have (though not updated for this year) developed some more intricate NCAA football ratings based on the inter-year correlation of various stats (within-season out-of-sample stability). I used that to generate projected point and yards-per-play differential.
Here are those correlations, for the NCAA again:
In Season Correlation:
Off YPP 65.6%
Off Int% 20.1%
Off Fum% 7.8%
Def YPP 68.2%
Def Int% 20.1%
Def Fum% 1.3%
EvanZ
Ok, well I’ll post my model in the next couple of days. It will just include point differential. Maybe you’ll have suggestions for me about adding turnovers to improve it.
DanielM
If you’re doing a model for prediction out of sample, absolutely adjust for turnovers. Just not stable, particularly fumbles. Fumbles are pretty nearly random.