public
Last active

MLB team runs per game

  • Download Gist
gistfile1.r
R
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
# 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")
#

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.