| Title: | Functions to Calculate Optimal Fourth Down Decisions in the National Football League | 
| Version: | 1.0.4 | 
| Description: | A set of functions to estimate outcomes of fourth down plays in the National Football League and obtain fourth down plays from https://www.nfl.com/ and https://www.espn.com/. | 
| License: | MIT + file LICENSE | 
| URL: | https://www.nfl4th.com/, https://github.com/nflverse/nfl4th/, https://github.com/nflverse/nfl4th | 
| BugReports: | https://github.com/nflverse/nfl4th/issues | 
| Depends: | R (≥ 3.6) | 
| Imports: | backports (≥ 1.1.6), curl, dplyr, glue, httr, janitor, jsonlite, magrittr, mgcv, nflfastR (≥ 4.0.0), nflreadr, purrr, rlang, stringr, tibble, tidyr, tidyselect, xgboost | 
| Suggests: | data.table, future, gt, nflplotR, rmarkdown, tictoc, testthat (≥ 2.0.0), withr | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.2.3 | 
| Config/testthat/edition: | 2 | 
| NeedsCompilation: | no | 
| Packaged: | 2023-08-18 14:05:05 UTC; carl | 
| Author: | Ben Baldwin [aut, cre, cph], Sebastian Carl [ctb] | 
| Maintainer: | Ben Baldwin <bbaldwin206@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2023-08-21 09:32:33 UTC | 
nfl4th: Functions to Calculate Optimal Fourth Down Decisions in the National Football League
Description
 
A set of functions to estimate outcomes of fourth down plays in the National Football League and obtain fourth down plays from https://www.nfl.com/ and https://www.espn.com/.
Author(s)
Maintainer: Ben Baldwin bbaldwin206@gmail.com [copyright holder]
Other contributors:
- Sebastian Carl mrcaseb@gmail.com [contributor] 
See Also
Useful links:
- Report bugs at https://github.com/nflverse/nfl4th/issues 
Get 2pt decision probabilities
Description
Get various probabilities associated with each option on PATs (go for it, kick PAT).
Usage
add_2pt_probs(df)
Arguments
| df | A data frame of decisions to be computed for. | 
Value
Original data frame Data frame plus the following columns added:
first_down_prob, wp_fail, wp_succeed, go_wp, fg_make_prob, miss_fg_wp, make_fg_wp, fg_wp, punt_wp
- wp_0
- Win probability when scoring 0 points on PAT. 
- wp_1
- Win probability when scoring 1 point on PAT. 
- wp_2
- Win probability when scoring 2 points on PAT. 
- conv_1pt
- Probability of making PAT kick. 
- conv_2pt
- Probability of converting 2-pt attempt. 
- wp_go1
- Win probability associated with going for 1. 
- wp_go2
- Win probability associated with going for 2. 
Examples
play <-
  tibble::tibble(
    # things to help find the right game (use "reg" or "post")
    home_team = "GB",
    away_team = "TB",
    posteam = "GB",
    type = "post",
    season = 2020,
    # information about the situation
    qtr = 4,
    quarter_seconds_remaining = 123,
    score_differential = -2,
    home_opening_kickoff = 0,
    posteam_timeouts_remaining = 3,
    defteam_timeouts_remaining = 3
  )
probs <- nfl4th::add_2pt_probs(play)
dplyr::glimpse(probs)
Get 4th down decision probabilities
Description
Get various probabilities associated with each option on 4th downs (go for it, kick field goal, punt).
Usage
add_4th_probs(df)
Arguments
| df | A data frame of decisions to be computed for. | 
Value
Original data frame Data frame plus the following columns added:
- go_boost
- Gain (or loss) in win prob associated with choosing to go for it (percentage points). 
- first_down_prob
- Probability of earning a first down if going for it on 4th down. 
- wp_fail
- Win probability in the event of a failed 4th down attempt. 
- wp_succeed
- Win probability in the event of a successful 4th down attempt. 
- go_wp
- Average win probability when going for it on 4th down. 
- fg_make_prob
- Probability of making field goal. 
- miss_fg_wp
- Win probability in the event of a missed field goal. 
- make_fg_wp
- Win probability in the event of a made field goal. 
- fg_wp
- Average win probability when attempting field goal. 
- punt_wp
- Average win probability when punting. 
Examples
play <-
  tibble::tibble(
    # things to help find the right game (use "reg" or "post")
    home_team = "GB",
    away_team = "TB",
    posteam = "GB",
    type = "post",
    season = 2020,
    # information about the situation
    qtr = 4,
    quarter_seconds_remaining = 129,
    ydstogo = 8,
    yardline_100 = 8,
    score_differential = -8,
    home_opening_kickoff = 0,
    posteam_timeouts_remaining = 3,
    defteam_timeouts_remaining = 3
  )
probs <- nfl4th::add_4th_probs(play)
dplyr::glimpse(probs)
Get 4th down plays from a game
Description
Get 4th down plays from a game.
Usage
get_4th_plays(gid)
Arguments
| gid | A game to get 4th down decisions of. | 
Details
Obtains a data frame that can be used with add_4th_probs(). The following columns
must be present:
- game_id : game ID in nflfastR format (eg '2020_20_TB_GB') 
Value
Original data frame Data frame plus the following columns added:
- desc
- Play description from ESPN. 
- type_text
- Play type text from ESPN. 
- index
- Index number of play from a given game. Useful for tracking plays (e.g. for 4th down bot). 
- The rest
- All the columns needed for - add_4th_probs().
Examples
plays <- nfl4th::get_4th_plays('2020_20_TB_GB')
dplyr::glimpse(plays)
Load calculated 4th down probabilities from nflfastR data
Description
Load calculated 4th down probabilities from nflfastR data.
Usage
load_4th_pbp(seasons, fast = FALSE)
Arguments
| seasons | Seasons to load. Must be 2014 and later. | 
| fast | Defaults to FALSE. If TRUE, loads pre-computed decisions from repository | 
Value
nflfastR data on 4th downs with the add_4th_probs() columns added and also the following:
- go
- 100 if a team went for it on 4th down, 0 otherwise. It's 100 and 0 as a convenience for obtaining percent of times going for it. 
Examples
try({# Wrap in try to avoid CRAN test problems
probs <- load_4th_pbp(2019:2020)
dplyr::glimpse(probs)
})
Get 2pt decision probabilities
Description
Get a table with the probabilities associated with a 2-pt decision.
Usage
make_2pt_table_data(probs)
Arguments
| probs | A data frame consisting of one play that has had  | 
Value
A table showing the probabilities associated with each possible choice.
Examples
play <-
  tibble::tibble(
    # things to help find the right game (use "reg" or "post")
    home_team = "GB",
    away_team = "TB",
    posteam = "GB",
    type = "post",
    season = 2020,
    # information about the situation
    qtr = 4,
    quarter_seconds_remaining = 123,
    score_differential = -2,
    home_opening_kickoff = 0,
    posteam_timeouts_remaining = 3,
    defteam_timeouts_remaining = 3
  )
probs <- nfl4th::add_2pt_probs(play)
nfl4th::make_2pt_table_data(probs)
Get 4th down decision probabilities
Description
Get a table with the probabilities on 4th down.
Usage
make_table_data(probs)
Arguments
| probs | A data frame consisting of one play that has had  | 
Value
A table showing the probabilities associated with each possible choice.
Examples
play <-
  tibble::tibble(
    # things to help find the right game (use "reg" or "post")
    home_team = "GB",
    away_team = "TB",
    posteam = "GB",
    type = "post",
    season = 2020,
    # information about the situation
    qtr = 4,
    quarter_seconds_remaining = 129,
    ydstogo = 8,
    yardline_100 = 8,
    score_differential = -8,
    home_opening_kickoff = 0,
    posteam_timeouts_remaining = 3,
    defteam_timeouts_remaining = 3
  )
probs <- nfl4th::add_4th_probs(play)
nfl4th::make_table_data(probs)
Reset nfl4th Package Cache
Description
Reset nfl4th Package Cache
Usage
nfl4th_clear_cache(type = c("games", "fd_model", "wp_model", "all"))
Arguments
| type | One of  | 
Value
Returns TRUE invisibly if cache has been cleared.
Examples
nfl4th_clear_cache()