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!
_________________________________________________________________________________
Week 4 Recap:
7 - 8. Brutal. And the ensemble predictions would have done worse: 6 - 9. The probabilities I gave estimated 9.57 correct predictions, so this was definitely disappointing. The running totals are now 27 - 20, or 57% correct.
This week upset a lot of predictions. What happened? These were the surprising results according to my model:
- The Bills beat the Patriots
- The Rams beat the Cardinals
- The Raiders beat the Ravens
Once again, each of these teams (Bills, Rams, and Raiders) hasn't been to the playoffs in a long time. The Rams haven't been to the playoffs since 2004. The Bills haven't been since 1999. The Raiders haven't been since 2002. I worry that these teams will continue to be over penalized by this variable in the model, and maybe that is partly why these predictions were off. I'll work on adjusting this variable in the model so that it remains helpful while not hurtful.
We'll try again in Week 5.
_________________________________________________________________________________
Week 4:
First improvement: add a picture. The above is generated in R using the basic plotting methods (plot, lines, polygon).
Second, I tried to use area under the curve from an ROC curve instead of using accuracy to assess my outcome model. It doesn't really improve. This is to be expected as the confusion matrix is pretty symmetrical since I am really making two predictions for the same game: one for the home team and one for the away team. Plus, the attributes doing the predicting are fairly balanced in that if I have one metric for the home team, I also have the same metric for the away team. This would matter if I was only making one prediction or if my attributes focused on different aspects for each team. But they don't, so the model still is generalizing to about 65% correct predictions of outcome.
Third, I reanalyzed the attributes in my score difference and final score models. Some attributes were discarded and others were added. The score difference model increased from an r-squared value of .22 to .29. The score final model increased from an r-squared value of .17 to .23. However, the number of attributes for both models increased greatly, so I worry that these are overfitted. In future weeks, I hope to do some pairing down of the attributes using a way to penalize the increased complexity. So we are making progress, however slowly it may be. I hope.
Second, I tried to use area under the curve from an ROC curve instead of using accuracy to assess my outcome model. It doesn't really improve. This is to be expected as the confusion matrix is pretty symmetrical since I am really making two predictions for the same game: one for the home team and one for the away team. Plus, the attributes doing the predicting are fairly balanced in that if I have one metric for the home team, I also have the same metric for the away team. This would matter if I was only making one prediction or if my attributes focused on different aspects for each team. But they don't, so the model still is generalizing to about 65% correct predictions of outcome.
Third, I reanalyzed the attributes in my score difference and final score models. Some attributes were discarded and others were added. The score difference model increased from an r-squared value of .22 to .29. The score final model increased from an r-squared value of .17 to .23. However, the number of attributes for both models increased greatly, so I worry that these are overfitted. In future weeks, I hope to do some pairing down of the attributes using a way to penalize the increased complexity. So we are making progress, however slowly it may be. I hope.
Oddities and Bold Predictions:
- Broncos vs. Buccaneers
- Broncos are heavily favored by my outcome model, but slightly edged out in the point difference and final score models. So the ensemble favors the Buccaneers. I'd still go with the Broncos.
- Cardinals vs. Rams
- I still think the Cardinals are going to win, as all three models agree. The models do rely heavily on the number of years since the playoffs, which is why the Rams always look so bad. This game is surely overestimated and will likely be a tough match for the Cardinals. The Rams always play well in divisional games.
- Falcons vs. Panthers
- My outcome model favors the Falcons, but the other two models favor the Panthers. I would have said the Panthers, but they are 1-2, so maybe things have changed since last season.
- Giants vs. Vikings
- The outcome model is exactly a tie. You have to go out to the fourth decimal in order to see a difference, which gives the Giants the victory. Point difference is also 0, while the final scores give the game to the Giants. So I guess I'll go with the Giants, even though the Vikings are 3-0.
Good luck in Week 4!
Here are the predictions for Week 4
Week
|
Date
|
Team
|
Home Away
|
Opponent
|
Prob. Win
|
Pred. Team Win
|
Actual Team Win
|
Pred. Team PD
|
Actual Team PD
|
Pred. Team
Score
|
Pred. Opp.
Score
|
Actual Team
Score
|
Actual Opp.
Score
|
Ensemble Prediction Win
|
4
|
9/29/2016
|
Bengals
|
Dolphins
|
0.51
|
1
|
1
|
9
|
15
|
23
|
19
|
22
|
7
|
1
| |
4
|
9/29/2016
|
Dolphins
|
@
|
Bengals
|
0.49
|
0
|
0
|
-9
|
-15
|
19
|
23
|
7
|
22
|
0
|
4
|
10/2/2016
|
49ers
|
Cowboys
|
0.427
|
0
|
0
|
2
|
-7
|
16
|
17
|
17
|
24
|
0.333333
| |
4
|
10/2/2016
|
Bears
|
Lions
|
0.314
|
0
|
1
|
-8
|
3
|
27
|
33
|
17
|
14
|
0
| |
4
|
10/2/2016
|
Bills
|
@
|
Patriots
|
0.311
|
0
|
1
|
-11
|
16
|
21
|
28
|
16
|
0
|
0
|
4
|
10/2/2016
|
Broncos
|
@
|
Buccaneers
|
0.626
|
1
|
1
|
-1
|
20
|
26
|
28
|
27
|
7
|
0.333333
|
4
|
10/2/2016
|
Browns
|
@
|
Redskins
|
0.364
|
0
|
0
|
-9
|
-11
|
17
|
29
|
20
|
31
|
0
|
4
|
10/2/2016
|
Buccaneers
|
Broncos
|
0.374
|
0
|
0
|
1
|
-20
|
28
|
26
|
7
|
27
|
0.666667
| |
4
|
10/2/2016
|
Cardinals
|
Rams
|
0.836
|
1
|
0
|
14
|
-4
|
34
|
20
|
13
|
17
|
1
| |
4
|
10/2/2016
|
Chargers
|
Saints
|
0.546
|
1
|
0
|
-1
|
-1
|
28
|
25
|
34
|
35
|
0.666667
| |
4
|
10/2/2016
|
Chiefs
|
@
|
Steelers
|
0.437
|
0
|
0
|
-3
|
-29
|
18
|
20
|
14
|
43
|
0
|
4
|
10/2/2016
|
Colts
|
@
|
Jaguars
|
0.662
|
1
|
0
|
2
|
-3
|
23
|
18
|
27
|
30
|
1
|
4
|
10/2/2016
|
Cowboys
|
@
|
49ers
|
0.573
|
1
|
1
|
-2
|
7
|
17
|
16
|
24
|
17
|
0.666667
|
4
|
10/2/2016
|
Falcons
|
Panthers
|
0.533
|
1
|
1
|
-4
|
15
|
22
|
24
|
48
|
33
|
0.333333
| |
4
|
10/2/2016
|
Jaguars
|
Colts
|
0.338
|
0
|
1
|
-2
|
3
|
18
|
23
|
30
|
27
|
0
| |
4
|
10/2/2016
|
Jets
|
Seahawks
|
0.398
|
0
|
0
|
3
|
-10
|
25
|
19
|
17
|
27
|
0.666667
| |
4
|
10/2/2016
|
Lions
|
@
|
Bears
|
0.686
|
1
|
0
|
8
|
-3
|
33
|
27
|
14
|
17
|
1
|
4
|
10/2/2016
|
Panthers
|
@
|
Falcons
|
0.467
|
0
|
0
|
4
|
-15
|
24
|
22
|
33
|
48
|
0.666667
|
4
|
10/2/2016
|
Patriots
|
Bills
|
0.689
|
1
|
0
|
11
|
-16
|
28
|
21
|
0
|
16
|
1
| |
4
|
10/2/2016
|
Raiders
|
@
|
Ravens
|
0.434
|
0
|
1
|
3
|
1
|
22
|
20
|
28
|
27
|
0.666667
|
4
|
10/2/2016
|
Rams
|
@
|
Cardinals
|
0.164
|
0
|
1
|
-14
|
4
|
20
|
34
|
17
|
13
|
0
|
4
|
10/2/2016
|
Ravens
|
Raiders
|
0.566
|
1
|
0
|
-3
|
-1
|
20
|
22
|
27
|
28
|
0.333333
| |
4
|
10/2/2016
|
Redskins
|
Browns
|
0.636
|
1
|
1
|
9
|
11
|
29
|
17
|
31
|
20
|
1
| |
4
|
10/2/2016
|
Saints
|
@
|
Chargers
|
0.454
|
0
|
1
|
1
|
1
|
25
|
28
|
35
|
34
|
0.333333
|
4
|
10/2/2016
|
Seahawks
|
@
|
Jets
|
0.602
|
1
|
1
|
-3
|
10
|
19
|
25
|
27
|
17
|
0.333333
|
4
|
10/2/2016
|
Steelers
|
Chiefs
|
0.563
|
1
|
1
|
3
|
29
|
20
|
18
|
43
|
14
|
1
| |
4
|
10/2/2016
|
Texans
|
Titans
|
0.45
|
0
|
1
|
5
|
7
|
21
|
18
|
27
|
20
|
0.666667
| |
4
|
10/2/2016
|
Titans
|
@
|
Texans
|
0.55
|
1
|
0
|
-5
|
-7
|
18
|
21
|
20
|
27
|
0.333333
|
4
|
10/3/2016
|
Giants
|
@
|
Vikings
|
0.5
|
1
|
0
|
0
|
-14
|
32
|
26
|
10
|
24
|
0.833333
|
4
|
10/3/2016
|
Vikings
|
Giants
|
0.5
|
0
|
1
|
0
|
14
|
26
|
32
|
24
|
10
|
0.166667
|
No comments:
Post a Comment