Introduction
In 2017 as faculty at Skidmore College, current Senior Director of Analytics of the NFL Michael Lopez wrote a paper with his coauthors Greg Matthews and Ben Baumer where they used gambling odds to determine how often the better team ends up winning across the four major North American sports. As a result of this paper, they estimated the individual home field advantage for each of the teams in four major sports leagues in North America. Overall the paper estimated the NFL to have the second largest home field advantage (after the NBA) of the four major professional North American sports.
While their Bayesian model ranked the home field advantage of each team, and found Denver (altitude anyone?) to have the highest posterior mean in each sport, for the NFL the 95% posterior intervals for all the teams overlapped, meaning the data was not indisputable that some teams have harder home fields than others.
I personally wrote on my blog in 2024 trying to estimate differences in college home field’s by fitting an expected points added (EPA) based power ranking with individual home field effects for each team as opposed to one overall one. This work found that the elite teams or typical “toughest” places to play as ranked by EA sport’s College Football video game franchise didn’t line up with the model because most of those toughest places to play in the video game were just the home fields of typically very good programs, not especially difficult crowds or stadiums (compared to any other college football stadium).
Such Bayesian power ranking based methods as mine or Lopez, Baumer, & Matthews 2017 paper can and will always rank a team’s home field advantage, but have a hard time finding in noisy game results posterior distributions of individual home field advantages that don’t overlap significantly.
Also in 2024 I looked at college basketball to see if you could do something similar. Like my college football work or the aforementioned “How often does the best team win?” paper, the number of teams with 95% posterior significance from an average home field advantage was right in line with what you would expect with multiple testing. But… I was able to show one specific aspect of home field advantage (free throws) were impacted in stadiums where the opposing student sections were directly behind the visiting team’s basket in the 2nd half.
Home Field Advantage by Year
The easiest way to estimate home field advantage by year is to build a model which accounts for the teams in each game, the scoring efficiences of each team, and the location of the game. This model can then be used to estimate the home field advantage for each year.
I will use expected points added (EPA) per play as the efficiency metric for each team in each game. I will use a Bayesian model to estimate the home field advantage for each year. I will ignore all QB kneels, spikes, and kickoffs in the model as these plays are not indicative of a team’s efficiency. The EPA model used is the one included with NFLFastR which is built via XGBoost. There may be better models out there, especially in edge situations, but this model is still very good and the most easy to access.
I will fit mixed model. In this format it acts like ridge regression, shrinking estimates to 0, which will be good for estimating season by season home field advantage and team effects. I will also put a spline on the difference for team rest, as I have found in the past that the effect of rest is not linear. Be sure to include separate team effects for offense and defense for each season.
# A tibble: 640 × 5
team season off def tot
<chr> <chr> <dbl> <dbl> <dbl>
1 ARI 2005 -1.25 -0.885 -2.13
2 ARI 2006 -2.76 -2.67 -5.43
3 ARI 2007 -3.32 -0.480 -3.80
4 ARI 2008 1.38 0.531 1.91
5 ARI 2009 3.67 -0.644 3.03
6 ARI 2010 -10.4 -1.98 -12.3
7 ARI 2011 -8.55 0.232 -8.32
8 ARI 2012 -9.34 2.64 -6.71
9 ARI 2013 1.20 4.46 5.66
10 ARI 2014 -2.03 3.20 1.17
# ℹ 630 more rows
Here are the model’s estimated effects for the home team for 70 plays on offense in a game by season. Remember this is the effect of playing at home vs neutral, so home vs road would be double this effect for the offensive plays, but 4 times it for home vs away for all plays in a game.
Season | EPA vs Neutral 70 Plays | EPA vs Road per Game |
---|---|---|
2005 | 1.46 | 5.84 |
2006 | 0.07 | 0.30 |
2007 | 1.00 | 4.01 |
2008 | 1.01 | 4.04 |
2009 | 0.77 | 3.08 |
2010 | −0.15 | −0.60 |
2011 | 1.89 | 7.57 |
2012 | 0.41 | 1.63 |
2013 | 1.11 | 4.44 |
2014 | 1.20 | 4.81 |
2015 | 0.39 | 1.56 |
2016 | 1.74 | 6.97 |
2017 | 1.39 | 5.56 |
2018 | 1.13 | 4.53 |
2019 | −0.96 | −3.83 |
2020 | −1.05 | −4.21 |
2021 | 0.51 | 2.05 |
2022 | 0.96 | 3.84 |
2023 | 1.44 | 5.75 |
2024 | 0.10 | 0.41 |
The nfl is really a pretty small sample size each season, so there shouldn’t be a surprise it fluctuates in estimates the way it does, but overall we can see that there is a home field advantage over the long run.
So there is a home field, but it does fluctuate year to year. There are various theories as to what causes it but one such one is that the away team gets rattled or the ref calls more penalties on them. Let’s dive in.
Causes of Home Field Advantage
Now I want to look at the different play types in the NFL. I am going to focus on penalties. I will look at the different types of plays to familiarize myself with them in order to focus penalties.
Play Type | Play Type (NFL) | n |
---|---|---|
extra_point | XP_KICK | 25266 |
field_goal | FIELD_GOAL | 20772 |
field_goal | UNSPECIFIED | 1 |
kickoff | FREE_KICK | 1 |
kickoff | KICK_OFF | 54603 |
kickoff | RUSH | 2 |
no_play | FREE_KICK | 22 |
no_play | KICK_OFF | 198 |
no_play | PENALTY | 46896 |
no_play | TIMEOUT | 38466 |
no_play | UNSPECIFIED | 2578 |
no_play | XP_KICK | 102 |
pass | FUMBLE_RECOVERED_BY_OPPONENT | 391 |
pass | INTERCEPTION | 9744 |
pass | PASS | 356662 |
pass | PAT2 | 1316 |
pass | SACK | 25052 |
pass | UNSPECIFIED | 199 |
punt | PUNT | 48408 |
punt | UNSPECIFIED | 42 |
qb_kneel | RUSH | 8127 |
qb_kneel | UNSPECIFIED | 1 |
qb_spike | PASS | 1544 |
qb_spike | UNSPECIFIED | 1 |
run | PASS | 3 |
run | PAT2 | 493 |
run | RUSH | 283682 |
run | UNSPECIFIED | 351 |
NA | COMMENT | 728 |
NA | END_GAME | 5412 |
NA | END_QUARTER | 16556 |
NA | GAME_START | 5412 |
NA | KICK_OFF | 1 |
NA | TIMEOUT | 1 |
NA | UNSPECIFIED | 179 |
It is clear that the only denotation of a penalty is in the play_type_nfl
column. First I need to make sure this isn’t only penalties accepted but also penalties given (but declined).
# A tibble: 12 × 2
play_type_nfl n
<chr> <int>
1 FIELD_GOAL 72
2 FREE_KICK 23
3 FUMBLE_RECOVERED_BY_OPPONENT 12
4 INTERCEPTION 509
5 KICK_OFF 2770
6 PASS 4815
7 PENALTY 45973
8 PUNT 4821
9 RUSH 4635
10 SACK 332
11 UNSPECIFIED 2593
12 XP_KICK 510
I know what to know what fields there are corresponding to penalties already in the dataset.
first_down_penalty | penalty | penalty_team | penalty_player_id | penalty_player_name | penalty_yards | penalty_type |
---|---|---|---|---|---|---|
0 | 1 | ARI | NA | NA | 5 | Illegal Shift |
0 | 1 | ARI | 00-0020533 | L.Davis | 5 | False Start |
0 | 1 | NYG | 00-0019276 | S.O'Hara | 10 | Offensive Holding |
0 | 1 | NYG | 00-0021265 | N.Greisen | 10 | Offensive Holding |
0 | 1 | ARI | 00-0023510 | E.Green | 5 | Offside on Free Kick |
1 | 1 | ARI | 00-0022927 | K.Dansby | 6 | Illegal Use of Hands |
0 | 1 | NYG | 00-0019276 | S.O'Hara | 5 | False Start |
0 | 1 | ARI | 00-0023443 | A.Rolle | 5 | Offside on Free Kick |
0 | 1 | ARI | 00-0012333 | C.Okeafor | 5 | Defensive Offside |
1 | 1 | NYG | 00-0020006 | A.Pierce | 2 | Defensive Pass Interference |
A really quick exploratory data analysis would be to look and see the average penalties and penalty yards per game for a team at home vs away in a season in the NFL.
season | posteam | Avg Penalties (Away) | Avg Penalties (Home) | Avg Penalty Yards (Away) | Avg Penalty Yards (Home) | Home vs Away Penalties | Home vs Away Penalty Yards | |
---|---|---|---|---|---|---|---|---|
1.0 | 2024 | CAR | 5.6 | 8.0 | 45.1 | 61.2 | 2.4 | 16.1 |
2.0 | 2024 | KC | 5.4 | 5.8 | 40.8 | 55.8 | 0.4 | 15.0 |
3.0 | 2024 | NYJ | 6.4 | 6.8 | 50.1 | 62.5 | 0.4 | 12.4 |
4.0 | 2024 | DET | 4.6 | 4.9 | 32.9 | 44.0 | 0.3 | 11.1 |
5.0 | 2024 | NYG | 7.0 | 7.6 | 48.9 | 59.6 | 0.6 | 10.7 |
6.0 | 2024 | LAC | 4.8 | 6.0 | 39.1 | 49.6 | 1.2 | 10.5 |
7.0 | 2024 | DEN | 4.6 | 5.9 | 33.0 | 42.8 | 1.3 | 9.8 |
8.0 | 2024 | WAS | 5.1 | 7.3 | 45.8 | 54.8 | 2.2 | 9.0 |
9.0 | 2024 | ATL | 6.0 | 6.3 | 48.2 | 56.6 | 0.3 | 8.3 |
10.0 | 2024 | NE | 6.6 | 7.2 | 49.4 | 57.4 | 0.6 | 8.0 |
11.0 | 2024 | SEA | 6.9 | 8.1 | 54.1 | 62.1 | 1.2 | 8.0 |
12.0 | 2024 | LA | 4.8 | 5.7 | 43.8 | 50.2 | 0.9 | 6.4 |
13.0 | 2024 | HOU | 7.1 | 6.3 | 49.2 | 54.1 | −0.8 | 4.9 |
14.0 | 2024 | LV | 5.7 | 5.8 | 44.0 | 42.5 | 0.1 | −1.5 |
15.0 | 2024 | CLE | 7.1 | 7.9 | 62.9 | 59.5 | 0.8 | −3.4 |
16.0 | 2024 | GB | 6.6 | 6.2 | 57.1 | 52.3 | −0.4 | −4.8 |
17.0 | 2024 | PHI | 5.6 | 6.4 | 47.4 | 42.5 | 0.7 | −4.8 |
18.0 | 2024 | NO | 7.0 | 5.7 | 58.5 | 52.4 | −1.3 | −6.1 |
19.0 | 2024 | SF | 7.1 | 5.8 | 50.5 | 44.3 | −1.3 | −6.2 |
20.0 | 2024 | MIN | 7.2 | 6.5 | 63.5 | 57.2 | −0.8 | −6.2 |
21.0 | 2024 | BAL | 5.9 | 6.6 | 49.9 | 43.0 | 0.7 | −6.9 |
22.0 | 2024 | TEN | 8.2 | 6.9 | 63.3 | 56.2 | −1.3 | −7.1 |
23.0 | 2024 | DAL | 8.4 | 7.7 | 65.6 | 58.0 | −0.7 | −7.6 |
24.0 | 2024 | CHI | 7.5 | 7.1 | 59.2 | 50.4 | −0.4 | −8.9 |
25.0 | 2024 | JAX | 5.2 | 4.9 | 44.6 | 35.7 | −0.4 | −8.9 |
26.0 | 2024 | BUF | 7.4 | 6.3 | 60.9 | 50.6 | −1.1 | −10.3 |
27.0 | 2024 | ARI | 7.4 | 5.3 | 57.0 | 46.7 | −2.0 | −10.3 |
28.0 | 2024 | TB | 6.2 | 6.3 | 61.2 | 50.3 | 0.0 | −11.0 |
29.0 | 2024 | PIT | 6.8 | 6.4 | 63.4 | 51.5 | −0.4 | −11.9 |
30.0 | 2024 | MIA | 8.3 | 6.0 | 70.6 | 53.5 | −2.3 | −17.1 |
31.0 | 2024 | CIN | 7.2 | 5.9 | 57.8 | 40.6 | −1.4 | −17.2 |
32.0 | 2024 | IND | 5.3 | 5.0 | 60.2 | 37.2 | −0.3 | −23.0 |
While over half the teams have more penalty yards when on the road than at home in 2024, I was quite surprised there were 13 teams that had more penalty yards per game at home than on the road. Perhaps it is variance to the sample size of 8-9 games for a team in each location per season, but over the 20 year average of this dataset the teams on average have 1.6 more penalty yards per game and 0.12 penalties per game. That goes against everything we would expect from home field advantage regarding penalties. Let’s look at this on a year by year basis:
The empirical trend to the naked eye appears to be an inverse parabola, but perhaps we need to account for more things than just the overall averages which leads us to a model.
Now I want to see if there is an impact on penalty yards per game based on the home field advantage but I want to be sure to include a team’s typical penalty rate in a game, the NFL trend for that season, the opponents penalty yards given up per game, and perhaps other factors such as the predicted score which I will derive from the betting spread and total.
So I need to take the penalty plays and aggregate them up to the game level, then add in various game specific information at the end such as the predicted spread and total.
Now I need to adjust game variables to be from the possessing team’s perspective instead of the home team’s perspective.
The last piece of information I want to include into my dataset is the number of plays excluding kneels and spikes in the game so we can normalize the number of penalties by how many “opportunities” there were for a penalty to be called.
Let’s look at the results.
Variable | Estimate | Standard Error | t-value | p-value |
---|---|---|---|---|
(Intercept) | 21.71 | 1.57 | 13.82 | 0.00 |
posteam_sitehome | 0.95 | 0.28 | 3.36 | 0.00 |
posteam_siteneutral | 1.59 | 1.11 | 1.43 | 0.15 |
bs(team_rest_effect, df = 3)1 | 2.53 | 2.66 | 0.95 | 0.34 |
bs(team_rest_effect, df = 3)2 | −1.39 | 1.70 | −0.82 | 0.41 |
bs(team_rest_effect, df = 3)3 | 0.50 | 1.38 | 0.36 | 0.72 |
indoors | −0.13 | 0.34 | −0.38 | 0.71 |
grass | −0.02 | 0.30 | −0.07 | 0.95 |
team_pred_pt_diff | 0.04 | 0.02 | 1.85 | 0.06 |
total_line | 0.09 | 0.03 | 2.95 | 0.00 |
Interestingly enough, the model suggests that teams actually get about 0.95 more penalty yards per 70 plays at home than on the road after adjusting for these other factors. But since the indoors
, team_rest
and grass
are nowhere near significant, I will remove them and refit the model.
Variable | Estimate | Standard Error | t-value | p-value |
---|---|---|---|---|
(Intercept) | 22.25 | 1.26 | 17.65 | 0.00 |
posteam_sitehome | 0.97 | 0.28 | 3.43 | 0.00 |
posteam_siteneutral | 1.62 | 1.11 | 1.46 | 0.14 |
team_pred_pt_diff | 0.04 | 0.02 | 1.90 | 0.06 |
total_line | 0.08 | 0.03 | 2.93 | 0.00 |
The result is pretty much the same. Teams get about 0.97 more penalties at home than on the road after adjusting for the predicted spread and point total. This was certainly a surprise to me.
Referees
One last thing that may be worth looking at is using the same model we just had but adding a random effect for the referee. Perhaps some referee crews call more penalties than others.
The referee model didn’t change the effect of the other variables much but it does provide us some estimates for referee effects.
Effect | Group | Variable | Estimate | Standard Error | t-value |
---|---|---|---|---|---|
fixed | NA | (Intercept) | 22.46 | 1.30 | 17.27 |
fixed | NA | posteam_sitehome | 0.97 | 0.28 | 3.47 |
fixed | NA | posteam_siteneutral | 1.53 | 1.10 | 1.39 |
fixed | NA | team_pred_pt_diff | 0.04 | 0.02 | 1.93 |
fixed | NA | total_line | 0.08 | 0.03 | 2.76 |
ran_pars | referee | sd__(Intercept) | 1.64 | NA | NA |
ran_pars | Residual | sd__Observation | 13.55 | NA | NA |
Here are the top 10 referees in more penalty yards per 100 plays called in their games.
Referee | Penalty Yards per 70 Plays | Standard Error |
---|---|---|
Jeff Triplette | 2.24 | 0.63 |
Terry McAulay | 1.65 | 0.62 |
Carl Cheffers | 1.55 | 0.55 |
Tom White | 1.55 | 1.36 |
Walt Anderson | 1.52 | 0.59 |
Bradley Rogers | 1.46 | 1.36 |
Bruce Hermansen | 1.23 | 1.57 |
Ron Winter | 1.22 | 0.73 |
Alex Kemp | 1.21 | 0.79 |
Bernie Kukar | 1.16 | 1.36 |
And here ate the bottom 10 referees in more penalty yards per 70 plays called in their games.
Referee | Penalty Yards per 70 Plays | Standard Error |
---|---|---|
Bill Vinovich | −3.03 | 0.58 |
Alberto Riveron | −2.73 | 0.92 |
Gene Steratore | −2.44 | 0.65 |
Bill Carollo | −2.28 | 0.97 |
Scott Novak | −2.14 | 0.85 |
Scott Green | −2.08 | 0.74 |
Peter Morelli | −1.56 | 0.60 |
Alan Eck | −1.27 | 1.17 |
Don Carey | −1.22 | 1.37 |
Bill Leavy | −1.09 | 0.70 |
Clearly some referee crews call more or fewer penalty yards per 70 plays than others. The overall spread of the estimates is -3.03 to 2.24 yards per 70 plays. Since a typical game is about 140 plays, the most effect, on average, we estimate a referee can have on a game is a difference of 10.54 yards penalty yards from the most to least penalizing referees.
Do Kansas City opponents get called for more penalties?
Well that one is really impossible to determine in the data. Why?
Even if the Chiefs have more penalties called on their opponents than other teams, it could be be due for a variety of causal reasons such as:
The Chiefs are usually winning so teams are more desparate, leading to more penalties.
Andy Reid has coached for decades so he knows how to avoid getting penalties called on his team.
Opponents lose their cool due to the pressure of playing the Chiefs dynasty.
… and yes, if their opponents did get more calls then it could theoretically be due to referee help.
We can’t assign a cause, but do we even know if their opponents are penalized more? Well we can fit a model for that where we try to predict penalty yards for the opponent based on
the current team,
the opponent,
the referee,
and a normalizing intercept for the season.
Now we fit the mixed effects regression but I will only use data since the 2019 season, the first of the Patrick Mahomes’ Super Bowl seasons. I estimate a random effect for all teams and opponent penalty yard effects and a random effect for the referee. I will also adjust for expected the closeness of the game by including the betting lines and totals.
Let’s look at the fixed effects:
# A tibble: 13 × 4
term estimate std.error statistic
<chr> <dbl> <dbl> <dbl>
1 (Intercept) 24.6 2.85 8.63
2 factor(season)2020 -5.01 0.84 -5.99
3 factor(season)2021 -3.18 0.81 -3.91
4 factor(season)2022 -5.52 0.82 -6.75
5 factor(season)2023 -4.87 0.83 -5.89
6 factor(season)2024 -1.95 0.82 -2.38
7 spread_line -0.45 0.43 -1.05
8 total_line 0.1 0.06 1.63
9 spread_line:total_line 0.01 0.01 0.96
10 sd__(Intercept) 1.06 NA NA
11 sd__(Intercept) 1.39 NA NA
12 sd__(Intercept) 1.26 NA NA
13 sd__Observation 13.2 NA NA
And the random effects for teams, sorted by the teams that get biggest increase in opponent penalty yards per 70 plays to the least.
# A tibble: 33 × 3
team estimate std.error
<chr> <dbl> <dbl>
1 TEN 2.01 0.961
2 OAK 1.72 1.28
3 NYJ 1.71 0.968
4 DAL 1.65 0.959
5 NO 1.39 0.962
6 CLE 1.04 0.961
7 BAL 0.742 0.952
8 LV 0.586 1.01
9 DET 0.581 0.959
10 JAX 0.540 0.964
# ℹ 23 more rows
Takeaways
The NFL has a home field advantage, but it fluctuates year to year due to the small sample size in the NFL. The cause of that home field advantage has long been studied but is hard to pin down. One theory that it is due to referee bias doesn’t appear to be the case. The average team gets about 1.2 more penalty yards per 100 plays at home than on the road after adjusting for the predicted spread and total.
We also looked at individual referees to see how much they impact the game. It turns out that on average there is only an estimated 8.6 yards from penalty difference from the most to least penalizing referees.