Wednesday, December 9, 2015

2015 NFL Game Predictions: Week 14

Welcome!  I intend this to be an ongoing project of predicting NFL game outcomes, point spreads, and final scores.  My hope is that my models will improve over time as they become more sophisticated and use better data.  I will try to regularly publish predictions to keep myself accountable, and will make observations along the way about what is working and what isn't.  See below for latest updates.  Enjoy!
Previous predictions:
 _________________________________________________________________________________
 Week 14 Recap:
Well, although I was confident of predicting 10 or 11 games correctly, my predictions went 9-7.  I suppose that will happen every now and then with so many close games.  How likely is that to happen normally?  I ran a simulation to find out.

I took the probability of winning for each of the 16 games in week 14 (only using those predicted to win), and used a random uniform distribution function to assign another probability outcome to that game.  If the original probability was higher than the probability outcome, then a win was assigned, otherwise, a loss.  For example, suppose a team was predicted to win at 0.70.  Then if the probability outcome was anywhere between 0 and 0.70, that team "won" and the prediction was correct.  If it was from 0.71 to 1.0, the team lost and the prediction was incorrect.  The total number of correctly predicted wins for the 16 games was summed up (e.g., 9 correctly predicted wins of the 16 games) and recorded.  I repeated the process 100,000 times with all results recorded.

The results were approximately normally distributed, ranging from 2 correct predictions to 16 correct predictions.  The most common outcomes were: 10 (20%), 9 (19%), and 11 (17%) correct predictions.  So more than 50% of the time, my predictions (with similar probabilities) should fall between 9 and 11 correct predictions.  About 80% of the time my predictions should fall between 8 and 12 correct. This gives more substance to my use of confidence below, which upon reflect, was a bit overly confident.
Big upsets (that I got wrong): Lions/Rams, Bears/Redskins, Steelers/Bengals, Giants/Dolphins
Big surprises (that I got correct): Broncos/Raiders
_________________________________________________________________________________

Week 14: Fifth Published Predictions (Win/Lose)
My code is finally automated enough that I can regularly make predictions.  This week I focused on making sure my models generalized well (i.e., separate training, testing, and evaluation data for comparison) and were stable.  Why does this matter?  If you don't care, you can skip a few paragraphs.  If you do, read on.

Suppose that you have a model (like mine) that predicts with about 80% accuracy on the data used to create the model, but only predicts with about 64% accuracy on data it hasn't seen.  Since we care about predicting data we have not seen, what matters most is the accuracy of a model with regard to new data.  So the model should perform equally well with training data that it has seen, and test data it hasn't seen.  That way, we can be confident that it will perform well with predictions that even we haven't seen.

Also, if the model accuracy is jumping around a lot even when using the same columns of data because your random sampling of data used in training and testing significantly impacts the stability of the model, that is also bad.  You want to be confident that your model accuracy will be, say, between 65% and 67% each time and not, somewhere between 60% and 70%.  You may get a lucky prediction, but you don't want to rely on luck.  You want to be confident that your predictions will be as consistently accurate as your model claims they will be.

Having focused on generalizability and stability, the best model for predicting wins generalized to about 66% (training and testing) and stabilized to between 65% to 67%.  I used a logistic model for this.

If you skipped some paragraphs, you can now rejoin.  What does the above mean practically?  It means that since there are 16 games being played this week, I am confident that I will get 10 or 11 game predictions correct.  No more, no less.

I also added predicted score differences and predicted final scores.  But don't use them for betting yet.  Score differences have an average error of 13 and an r^2 of 0.23.  Final scores are off on average by 10 points with an r^2 of 0.17.  Since almost all predicted point differences are smaller than 13 and almost all scores are within 10 of each other, they are analytically useless.  So only use them for your enjoyment.

Notice also that the predictions do not agree with each other in many cases.  For example, the 49ers play the Browns, and are predicted to win with 55% probability.  However, they have a -1 point difference (so they should lose by 1), and the final score is predicted to be 20-20 (so they should tie).  I did round to integers and that can help explain a little, but the primary issue is that these are different models and will give slightly different results, especially since these two new models aren't very good yet.  In short, predicting wins and losses is much easier than predicting scores and point differences.  But I'll keep at it.
Here are the predictions for Week 14:
Week
Date
Team
Home Away
Opponent
Prob. Win
Pred. Team Win
Pred. Team PD
Pred. Team Score
Pred. Opp. Score
Actual Team Win
Actual Team PD
Actual Team Score
Actual Opp. Score
14
12/10/2015
Cardinals
Vikings
0.572
1
2
26
23
1
3
23
20
14
12/10/2015
Vikings
@
Cardinals
0.428
0
-2
23
26
0
-3
20
23
14
12/13/2015
49ers
@
Browns
0.552
1
-1
20
20
0
-14
10
24
14
12/13/2015
Bears
Redskins
0.699
1
3
28
24
0
-3
21
24
14
12/13/2015
Bengals
Steelers
0.596
1
2
26
24
0
-13
20
33
14
12/13/2015
Bills
@
Eagles
0.577
1
2
25
23
0
-3
20
23
14
12/13/2015
Broncos
Raiders
0.479
0
1
22
21
0
-3
12
15
14
12/13/2015
Browns
49ers
0.448
0
1
20
20
1
14
24
10
14
12/13/2015
Buccaneers
Saints
0.482
0
1
26
27
0
-7
17
24
14
12/13/2015
Chargers
@
Chiefs
0.424
0
-4
21
26
0
-7
3
10
14
12/13/2015
Chiefs
Chargers
0.576
1
4
26
21
1
7
10
3
14
12/13/2015
Colts
@
Jaguars
0.618
1
3
25
21
0
-35
16
51
14
12/13/2015
Cowboys
@
Packers
0.459
0
-1
22
24
0
-21
7
28
14
12/13/2015
Eagles
Bills
0.423
0
2
23
25
1
3
23
20
14
12/13/2015
Falcons
@
Panthers
0.433
0
-3
24
24
0
-38
0
38
14
12/13/2015
Jaguars
Colts
0.382
0
-3
21
25
1
35
51
16
14
12/13/2015
Jets
Titans
0.564
1
-3
20
21
1
22
30
8
14
12/13/2015
Lions
@
Rams
0.788
1
14
26
12
0
-7
14
21
14
12/13/2015
Packers
Cowboys
0.541
1
1
24
22
1
21
28
7
14
12/13/2015
Panthers
Falcons
0.567
1
3
24
24
1
38
38
0
14
12/13/2015
Patriots
@
Texans
0.695
1
3
25
23
1
21
27
6
14
12/13/2015
Raiders
@
Broncos
0.521
1
-1
21
22
1
3
15
12
14
12/13/2015
Rams
Lions
0.212
0
-14
12
26
1
7
21
14
14
12/13/2015
Ravens
Seahawks
0.328
0
-5
19
23
0
-29
6
35
14
12/13/2015
Redskins
@
Bears
0.301
0
-3
24
28
1
3
24
21
14
12/13/2015
Saints
@
Buccaneers
0.518
1
1
27
26
1
7
24
17
14
12/13/2015
Seahawks
@
Ravens
0.672
1
5
23
19
1
29
35
6
14
12/13/2015
Steelers
@
Bengals
0.404
0
-2
24
26
1
13
33
20
14
12/13/2015
Texans
Patriots
0.305
0
-3
23
25
0
-21
6
27
14
12/13/2015
Titans
@
Jets
0.436
0
3
21
20
0
-22
8
30
14
12/14/2015
Dolphins
Giants
0.608
1
2
26
22
0
-7
24
31
14
12/14/2015
Giants
@
Dolphins
0.392
0
-2
22
26
1
7
31
24

Tuesday, December 8, 2015

NFL 2015: Which Team is the "Best"?

Suppose every team was to play every other team once.  Which team would have the most wins and could thus claim to be the "best" NFL team in 2015? 

Using the most recent data available (so every team as it currently is), I created a matchup of every team against every other team and predicted the outcome.  Whichever of the two teams playing had the highest probability of winning, I gave it a win.  This was done with every team playing every team once (including itself, which counts automatically as a win).  Since there are 32 teams, each team "played" 32 games. 

Which team is the "best"? The tops 5 are:

1. Patriots
2. Steelers
3. Bengals
4. Panthers
5. Seahawks

Which team is the "worst"?  The worst 5 are:

32. Rams
31. Browns
30. Redskins
29. 49ers
28. Raiders


Obviously, this is not what would actually happen, just what is most likely to happen according to my model.  So the Patriots could claim to be the "best" team.  Whether that actually plays out in winning the Superbowl is, however, another matter.

Here are the full results:

Rank
Team
Wins
Losses
1
Patriots
32
0
2
Steelers
31
1
3
Bengals
30
2
4
Panthers
29
3
5
Seahawks
28
4
6
Vikings
27
5
7
Broncos
25
7
8
Packers
24
8
9
Chiefs
23
9
9
Lions
23
9
11
Giants
22
10
12
Cardinals
21
11
13
Falcons
20
12
13
Ravens
20
12
15
Cowboys
19
13
16
Bills
17
15
17
Texans
15
17
18
Jaguars
14
18
18
Titans
14
18
20
Colts
13
19
20
Dolphins
13
19
22
Buccaneers
12
20
23
Bears
9
23
23
Chargers
9
23
23
Eagles
9
23
26
Jets
8
24
27
Saints
7
25
28
Raiders
5
27
29
49ers
4
28
30
Redskins
3
29
31
Browns
2
30
32
Rams
1
31

NFL 2015: Who Will Win the Superbowl?

Supposing that my predictions for who will get to the playoffs are correct, who will win the Superbowl?  In seeded order, suppose we have the following teams (Note: I realize that this past week's results may have changed things, but supposing they don't...):

  • AFC: Patriots, Bengals, Broncos, Chiefs, Steelers, and Colts
  • NFC: Panthers, Vikings, Packers, Cardinals, Seahawks, and Falcons

I predicted the outcome of each matchup in the playoffs on the way to the Superbowl.  If the predicted team to win always won (which of course won't happen), then the playoffs would play out in the following way.

Wildcard Round:

AFC:

Broncos (3) vs. Colts (6) -> Broncos (0.581)
Chiefs (4) vs. Steelers (5) -> Steelers (0.669)

NFC:

Packers (3) vs. Falcons (6) -> Packers (0.57)
Cardinals (4) vs. Seahawks (5) -> Seahawks (0.58)


Divisional Round:

AFC:

Patriots (1) vs. Steelers (5) -> Patriots (0.585)
Bengals (2) vs. Broncos (3) -> Bengals (0.537)

NFC:

Panthers (1) vs. Seahawks (5) -> Panthers (0.52)
Vikings (2) vs. Packers (3) -> Vikings (0.567)


Conference Championships:

AFC:

Patriots (1) vs. Bengals (2) -> Patriots (0.567)

NFC:

Panthers (1) vs. Vikings (2) -> Panthers (0.565)

Superbowl:

Patriots (1) vs. Panthers (1) -> Patriots (0.559)


So the Patriots would win, again.  Take courage everyone else! This is only 19% likely to happen for the Patriots if the teams are seeded like this.  Lots of teams are still in the running.  And there is still lots of football to be played...  Good luck!