Site icon R-bloggers

Building a statistical model for field goal kicker accuracy

[This article was first published on R on Jacob Long, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
This is the methodological companion to my post on my proposed method for evaluating NFL kickers. To get all the results and some extra info about the data, check it out.

When you have a hammer, everything looks like a nail, right? Well I’m a big fan of multilevel models and especially the ability of MCMC estimation to fit these models with many, often sparse, groups. Great software implementations like Stan and my favorite R interface to it, brms make doing applied work pretty straightforward and even fun.

As I spent time lamenting the disappointing season my Chicago Bears have been having, I tried to think about how seriously I should take the shakiness of their new kicker, Eddy Pineiro. Just watching casually, it can be hard to really know whether a kicker has had a very difficult set of kicks or not and what an acceptable FG% would be. This got me thinking about how I could use what I know to satisfy my curiosity.

Previous efforts

Of course, I’m not exactly the first person to want to do something to account for those differences. Chase Stuart over at Football Perspectives used field goal distance to adjust FG% for difficulty (as well as comparing kickers across eras by factoring in generational differences in kicking success). Football Outsiders does something similar — adjusting for distance — when grading kickers. Generally speaking, the evidence suggests that just dealing with kick distance gets you very far along the path to identifying the best kickers.

Chris Clement at the Passes and Patterns blog provides a nice review of the statistical and theoretical approaches to the issue. There are several things that are clear from previous efforts, besides the centrality of kick distance. Statistically, methods based on the logistic regression model are appropriate and the most popular — logistic regression is a statistical method designed to predict binary events (e.g., making/missing a field goal) using multiple sources of information. And besides kick distance, there are certainly elements of the environment that matter — wind, temperature, elevation among them — although just how much and how easily they can be measured is a matter of debate.

There has also been a lot of interest in game situations, especially clutch kicking. Do kickers perform worse under pressure, like when their kicks will tie the game or give their team the lead late in the game? Does “icing” the kicker, by calling a timeout before the kick, make the kicker less likely to be successful? Do they perform worse in playoff games?

On icing, Moskowitz and Wertheim (2011), Stats, Inc., Clark, Johnson, and Stimpson (2013), and LeDoux (2016) do not find compelling evidence that icing the kicker is effective. On the other hand, Berry and Wood (2004) Goldschmied, Nankin, and Cafri (2010), and Carney (2016) do find some evidence that icing hurts the kicker. All these have some limitations, including which situations qualify as “icing” and whether we can identify those situations in archival data. In general, to the extent there may be an effect, it looks quite small.

Most important in this prior work is the establishment of a few approaches to quantification. A useful way to think about comparing kickers is to know what their expected FG% (eFG%) is. That is, given the difficulty of their kicks, how would some hypothetical average kicker have fared? Once we have an expected FG%, we can more sensibly look at the kicker’s actual FG%. If we have two kickers with an actual FG% of 80%, and kicker A had an eFG% of 75% while kicker B had an eFG% of 80%, we can say kicker A is doing better because he clearly had a more difficult set of kicks and still made them at the same rate.

Likewise, once we have eFG%, we can compute points above average (PAA). This is fairly straightforward since we’re basically just going to take the eFG% and FG% and weight them by the number of kicks. This allows us to appreciate the kickers who accumulate the most impressive (or unimpressive) kicks over the long haul. And since coaches generally won’t try kicks they expect to be missed, it rewards kickers who win the trust of their coaches and get more opportunities to kick.

Extensions of these include replacement FG% and points above replacement, which use replacement level as a reference point rather than average. This is useful because if you want to know whether a kicker is playing badly enough to be fired, you need some idea of who the competition is. PAA and eFG% are more useful when you’re talking about greatness and who deserves a pay raise.

Statistical innovations

The most important — in my view — entries into the “evaluating kickers with statistical models” literature are papers by Pasteur and Cunningham-Rhoads (2014) as well as Osborne and Levine (2017).

Pasteur and Cunningham-Rhoads — I’ll refer to them as PC-R for short — gathered more data than most predecessors, particularly in terms of auxiliary environmental info. They have wind, temperature, and presence/absence of precipitation. They show fairly convincingly that while modeling kick distance is the most important thing, these other factors are important as well. PC-R also find the cardinal direction of every NFL stadium (i.e., does it run north-south, east-west, etc.) and use this information along with wind direction data to assess the presence of cross-winds, which are perhaps the trickiest for kickers to deal with. They can’t know about headwinds/tailwinds because as far as they (and I) can tell, nobody bothers to record which end zone teams defend at the game’s coin toss, so we don’t know without looking at video which direction the kick is going. They ultimately combine the total wind and the cross wind, suggesting they have some meaningful measurement error that makes them not accurately capture all the cross-winds. Using their logistic regressions that factor for these several factors, they calculate an eFG% and use it and its derivatives to rank the kickers.

PC-R include some predictors that, while empirically justifiable based on their results, I don’t care to include. These are especially indicators of defense quality, because I don’t think this should logically effect the success of a kick and is probably related to the selection bias inherent to the coach’s decision to try a kick or not. They also include a “kicker fatigue” variable that appears to show that kickers attempting 5+ kicks in a game are less successful than expected. I don’t think this makes sense and so I’m not going to include it for my purposes.

They put some effort into defining a “replacement-level” kicker which I think is sensible in spite of some limitations they acknowledge. In my own efforts, I decided to do something fairly similar by using circumstantial evidence to classify a given kicker in a given situation as a replacement or not.

PC-R note that their model seems to overestimate the probability of very long kicks, which is not surprising from a statistical standpoint given that there are rather few such kicks, they are especially likely to only be taken by those with an above-average likelihood of making them, and the statistical assumption of linearity is most likely to break down on the fringes like this. They also mention it would be nice to be able to account for kickers having different leg strengths and not just differing in their accuracy.

Osborne and Levine (I’ll call them OL) take an important step in trying to improve upon some of these limitations. Although they don’t use this phrasing, they are basically proposing to use multilevel models, which treat each kicker as his own group and thereby accounting for the possibility — I’d say it’s a certainty — that kickers differ from one another in skill.

A multilevel model has several positive attributes, especially that it not only adjusts for the apparent differences in kickers but also that it looks skeptically upon small sample sizes. A guy who makes a 55-yard kick in his first career attempt won’t be dubbed the presumptive best kicker of all time because the model will by design account for the fact that a single kick isn’t very informative. This means we can simultaneously improve the prediction accuracy on kicks, but also use the model’s estimates of kicker ability without over-interpreting small sample sizes. They also attempt to use a quadratic term for kick distance, which could better capture the extent to which the marginal difference of a few extra yards of distance is a lot different when you’re at 30 vs. 40 vs. 50 yards. OL are unsure about whether the model justifies including the quadratic term but I think on theoretical grounds it makes a lot of sense.

OL also discuss using a clog-log link rather than the logistic link, showing that it has better predictive accuracy under some conditions. I am going to ignore that advice for a few reasons, most importantly because the advantage is small and also because the clog-log link is computationally intractable with the software I’m using.

Model

Code and data for reproducing these analyses can be found on Github

My tool is a multilevel logistic regression fit via MCMC using the wonderful brms R package. I actually considered several models for model selection.

In all cases, I have random intercepts for kicker and stadium. I also use random slopes for both kick distance and wind at the stadium level. Using random wind slopes at the stadium level will hopefully capture the prevailing winds at that stadium. If they tend to be helpful, it’ll have a larger absolute slope. Some stadiums may have swirling winds and this helps capture that as well. The random slope for distance hopefully captures some other things, like elevation. I also include interaction terms for wind and kick distance as well as temperature and kick distance, since the elements may only affect longer kicks.

There are indicators for whether the kick was “clutch” — game-tying or go-ahead in the 4th quarter — whether the kicker was “iced,” and whether the kick occurred in the playoffs. There is an interaction term between clutch kicks and icing to capture the ideal icing situation as well.

I have a binary variable indicating whether the kicker was, at the time, a replacement. In the main post, I describe the decision rules involved in that. I have interaction terms for replacement kickers and kick distance as well as replacement kickers and clutch kicks.

I have two random slopes at the kicker level:

Season is modeled with a quadratic term so that kickers can decline over time — it also helps with the over-time ebb and flow of NFL FG%. It would probably be better to use a GAM for this to be more flexible, but they are a pain.

All I’ve disclosed so far is enough to have one model. But I also explore the form of kick distance using polynomials. OL used a quadratic term, but I’m not sure even that is enough. I compare 2nd, 3rd, and 4th degree polynomials for kick distance to try to improve the prediction of long kicks in particular. Of course, going down the road of polynomials can put you on a glide path towards the land of overfitting.

I fit several models, with combinations of the following:

That last category is one that I suspected — and later confirmed — could cause some weird results. Allowing all these things to interact with a 3rd and 4th degree polynomial term made for some odd predictions on the fringes, like replacement-level kickers having a predicted FG% of 70% at 70 yards out.

Model selection

I looked at several criteria to compare models.

A major one was approximate leave-one-out cross-validation. I will show the LOOIC, which is interpreted like AIC/BIC/DIC/WAIC in terms of lower numbers being better. This produces the same ordering as the ELPD, which has the opposite interpretation in that higher numbers are better. Another thing I looked at was generating prediction weights for the models via Bayesian model stacking. I also calculated Brier scores, which are a standard tool for looking at prediction accuracy for binary outcomes and are simply the mean squared prediction error. Last among the quantitative measures is the AUC (area under the curve), which is another standard tool in the evaluation of binary prediction models.

Beyond these, I also plotted predictions in areas of interest where I’d like the model to perform well (like on long kicks) and checked certain cases where external information not shown directly to the model gives me a relatively strong prior. Chief among these was whether it separated the strong-legged kickers well.

Below I’ve summarized the model comparison results. I shade the metrics darker wherever the number is better — sometimes lower numbers are better, sometimes higher numbers are. The bolded, red-colored row is the model I used.

Model specification
Model fit metrics
Polynomial degree Interaction degree Priors LOOIC Model weight Brier score AUC
3 2 Proper 8030.265 0.5083 0.1165 0.7786
4 2 Proper 8032.332 0.1533 0.1164 0.7792
3 2 Improper 8032.726 0.0763 0.1160 0.7811
3 3 Proper 8033.879 0.0001 0.1165 0.7787
3 3 Improper 8035.616 0.2042 0.1158 0.7815
4 2 Improper 8036.614 0.0001 0.1158 0.7816
4 4 Proper 8038.266 0.0000 0.1163 0.7793
2 2 Proper 8043.221 0.0000 0.1169 0.7778
2 2 Improper 8043.450 0.0577 0.1165 0.7798
4 4 Improper 8043.741 0.0000 0.1156 0.7825

So why did I choose that model? The approximate LOO-CV procedure picks it as the third model, although there’s enough uncertainty around those estimates that it could easily be the best — or not as good as some ranked below it. It’s not clear that the 4th degree polynomial does a lot of good in the models that have it and it increases the risk of overfitting. It seems to reduce the predicted probability of very long kicks, but as I’ve thought about it more I’m not sure it’s a virtue.

Compared to the top two models, which distinguish themselves from the chosen model by their use of proper priors, the model I chose does better on the in-sample prediction accuracy metrics without looking much different on the approximate out-of-sample ones. It doesn’t get much weight because it doesn’t have much unique information compared to the slightly-preferred version with proper priors. But as I looked at the models’ predictions, it appeared to me that the regularization with the normal priors was a little too aggressive and wasn’t picking up on the differences among kickers in leg strength.

That being said, the choices among these top few models are not very important at all when it comes to the basics of who are the top and bottom ranked kickers.

Notes on predicted success

I initially resisted including things like replacement status and anything else that is a fixed characteristic of a kicker (at least within a season) or kicker-specific slopes in the model because I planned to extract the random intercepts and use that as my metric. Adding those things would make the random intercepts less interpretable; if a kicker is bad and there’s no “replacement” variable, then the intercept will be negative, but with the “replacement” variable the kicker may not have a negative intercept after the adjustment for replacement status.

Instead, I decided to focus on model predictions. Generating the expected FG% and replacement FG% was pretty straightforward. For eFG%, take all kicks attempted and set replacement = 0. For rFG%, take all kicks and set replacement = 1.

To generate kicker-specific probabilities, though, I had to decide how to incorporate this information. I’d clearly overrate new, replacement-level kickers. My solution to this was to, before generating predictions on hypothetical data, set each kicker’s replacement variable to his career average.

For season, on the other hand, I could eliminate the kicker-specific aspect of this by intentionally zeroing these effects out in the predictions. If I wanted to predict success in a specific season, of course, I could include this.

To leave a comment for the author, please follow the link and comment on their blog: R on Jacob Long.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.