Skip to content

Instantly share code, notes, and snippets.

View bayesball's full-sized avatar

Jim Albert bayesball

View GitHub Profile
@bayesball
bayesball / trout_ofer_work.R
Created June 6, 2022 13:48
R script to compute and graph lengths of ofers for Mike Trout
# load in Retrosheet pbp data frames
# for seasons 2011 through 2021
library(Lahman)
library(dplyr)
library(ggplot2)
# get Mike Trout's retro id from the People
# data frame in Lahman package
@bayesball
bayesball / data_work.R
Last active May 7, 2022 01:53
R code to measure the change in wOBA weights from one season to a second season
data_work <- function(){
require(readr)
require(dplyr)
require(lubridate)
sc_2021 <- read_csv("https://raw.githubusercontent.com/bayesball/HomeRuns2021/main/statcast2021.csv")
sc_2022 <- read_csv("https://raw.githubusercontent.com/bayesball/HomeRuns2021/main/statcast_2022.csv")
sc_old <- read_csv("https://raw.githubusercontent.com/bayesball/HomeRuns2021/main/SC_BB_mini.csv")
names(sc_old)[2] <- "Game_Date"
@bayesball
bayesball / barrels_script.R
Last active April 29, 2022 17:29
Graph of barrel region and GAM fits using 2021 Statcast data
# using Statcast data for the 2021 season
# two functions plot_xb_contour_work() and
# plot_woba_contour_work() implement the
# logistic and ordinal fitting algorithms
# ggplot2 code is used to show the barrel
# region over the (launch speed, launch angle)
# space
@bayesball
bayesball / 3000hitclub.R
Created April 24, 2022 17:44
R script for 3000 hitting club exploration
# read in three packages
library(readr)
library(dplyr)
library(ggplot2)
# helper ggplot2 function
helper_ggplot <- function(){
theme(text=element_text(size=18)) +
@bayesball
bayesball / nonnested_fit_lme4.R
Created March 16, 2022 15:38
Fit of a nonnested multilevel model using the lme4 package
# load in packages
library(readr)
library(dplyr)
library(lme4)
library(ggplot2)
library(posterior)
library(gridExtra)
library(Lahman)
@bayesball
bayesball / nonnested_fit.R
Last active March 16, 2022 15:03
Fit of a nonnested multilevel model to wOBA data for the 2021 baseball season
# load in packages
library(readr)
library(dplyr)
library(brms)
library(ggplot2)
library(posterior)
library(gridExtra)
library(Lahman)
@bayesball
bayesball / fg_data_prep.R
Created January 16, 2022 15:52
R script to add variables to FanGraphs leaderboard data
# preparation work for FanGraphs leaderboard data
# collected FanGraphs Leaderboard batting data
# choose Multiple Seasons (all), Split Seasons
# minimum 100 PA in each season
# download data and saved as "fgbatting.csv"
library(dplyr)
library(readr)
library(Lahman)
@bayesball
bayesball / app.R
Created December 5, 2021 18:11
Shiny app to display in-play and hit rate data over Retrosheet field locations
library(shiny)
library(ggplot2)
library(dplyr)
library(readr)
# read in Retrosheet data for two seasons
d <- read_csv("retro_2seasons_ip.csv")
# main drawing function
@bayesball
bayesball / AVG_ground_balls.R
Created November 2, 2021 16:11
Markdown file to compute random effects estimates of team defenses on ground balls.
---
title: "AVG on Ground Balls"
author: "Jim Albert"
date: "11/2/2021"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
message = FALSE,
@bayesball
bayesball / perfect.R
Created October 26, 2021 19:18
Function for finding all perfect-k games from Retrosheet data for a particular season
perfect <- function(d, n_innings){
# inputs are Retrosheet play-by-play data frame d and
# number of innings n_innings
# output is a data frame containing all Perfect-k
# games for that season
require(dplyr)
d %>%
mutate(PIT_ID = as.character(PIT_ID),