Last active
December 13, 2015 20:28
-
-
Save MonkmanMH/4969818 to your computer and use it in GitHub Desktop.
MLB team runs per game
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# INDIVIDUAL TEAM HISTORY | |
# | |
# discussion and output can be found at | |
# http://bayesball.blogspot.ca/XXXXXXXXXXXXXXXXXXXXX | |
# | |
# Select the team you want from the franchID variable in the Teams.merge data frame | |
# and create a new data frame called "Team1" | |
# For this exercise we will use the Seattle Mariners, which are coded as SEA | |
# Note the use of double "=" to define the team! | |
Team1 <- as.data.frame(subset (Teams.merge, franchID == "SEA")) | |
# | |
# Create what will be the chart title from the contents of Team1 | |
# Note that teams sprang into existence in different years, thus the requirement to define both the start and end dates | |
firstyear <- Team1$yearID[1] | |
lastyear <- tail(Team1$yearID, 1) | |
team.name <- Team1$name[1] | |
# alternate way to define "team.name" | |
team.name <- tail(Team1$name, 1) | |
# | |
# Combine all of the component into a single variable, "title.text" | |
# "paste" works like "concatenate" in other languages | |
title.text <- paste(team.name, firstyear, "-", lastyear, | |
": Runs scored relative to the league average") | |
# | |
# | |
# TREND LINE -- using LOESS modeling | |
# references: | |
# http://princeofslides.blogspot.ca/2011/05/sab-r-metrics-basics-of-loess.html | |
# http://research.stowers-institute.org/efg/R/Statistics/loess.htm | |
# | |
# Model Version 1, using default settings | |
# Creates a new object Runs.LO for loess model | |
RunIndex.LO <- loess(Team1$R_index ~ Team1$yearID) | |
RunIndex.LO.predict <- predict(RunIndex.LO) | |
# | |
# Model Version 2 (with more nuance/zig-zag to the trend line) | |
# create new object RunIndex.LO for loess model, span=0.25 | |
RunIndex.LO.25 <- loess(Team1$R_index ~ Team1$yearID, span=0.25) | |
RunIndex.LO.25.predict <- predict(RunIndex.LO.25) | |
# | |
RunIndex.LO.5 <- loess(Team1$R_index ~ Team1$yearID, span=0.5) | |
RunIndex.LO.5.predict <- predict(RunIndex.LO.5) | |
# | |
# plot the data, add loess curve | |
ylim <- c(60,140) | |
plot(Team1$R_index ~ Team1$yearID, | |
ylim = ylim, | |
main = title.text, | |
xlab = "Year", ylab = "Index (league average = 100)") | |
# loess predicted value line | |
lines(Team1$yearID, RunIndex.LO.predict, lty="solid", col="black", lwd=1.5) | |
lines(Team1$yearID, RunIndex.LO.25.predict, lty="dashed", col="red", lwd=2) | |
lines(Team1$yearID, RunIndex.LO.5.predict, lty="dotdash", col="blue", lwd=1.5) | |
# chart legend and grid lines | |
legend(firstyear+2, 140, | |
c("default", "span=0.25", "span=0.50"), | |
lty=c("solid", "dashed", "dotdash"), | |
col=c("black", "red", "blue"), | |
lwd=c(1.5, 2, 1.5)) | |
grid() | |
# straight line at 100 | |
abline(h = 100, lty="dotdash") | |
# | |
# And save the data fram as a csv file | |
write.csv(Team1, file="Team1.csv") | |
# | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment