Skip to content

Instantly share code, notes, and snippets.

Avatar

Jim Albert bayesball

View GitHub Profile
@bayesball
bayesball / trout_ofer_work.R
Created Jun 6, 2022
R script to compute and graph lengths of ofers for Mike Trout
View trout_ofer_work.R
# 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
R code to measure the change in wOBA weights from one season to a second season
View data_work.R
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 Apr 29, 2022
Graph of barrel region and GAM fits using 2021 Statcast data
View barrels_script.R
# 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 Apr 24, 2022
R script for 3000 hitting club exploration
View 3000hitclub.R
# 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 Mar 16, 2022
Fit of a nonnested multilevel model using the lme4 package
View nonnested_fit_lme4.R
# load in packages
library(readr)
library(dplyr)
library(lme4)
library(ggplot2)
library(posterior)
library(gridExtra)
library(Lahman)
@bayesball
bayesball / nonnested_fit.R
Last active Mar 16, 2022
Fit of a nonnested multilevel model to wOBA data for the 2021 baseball season
View nonnested_fit.R
# load in packages
library(readr)
library(dplyr)
library(brms)
library(ggplot2)
library(posterior)
library(gridExtra)
library(Lahman)
@bayesball
bayesball / fg_data_prep.R
Created Jan 16, 2022
R script to add variables to FanGraphs leaderboard data
View fg_data_prep.R
# 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 Dec 5, 2021
Shiny app to display in-play and hit rate data over Retrosheet field locations
View app.R
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 Nov 2, 2021
Markdown file to compute random effects estimates of team defenses on ground balls.
View AVG_ground_balls.R
---
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 Oct 26, 2021
Function for finding all perfect-k games from Retrosheet data for a particular season
View perfect.R
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),