Davey Johnson, former Mets Manager, an early proponent of Sabermetrics | R-Bloggers

Davey Johnson, former Mets Manager, an early proponent of Sabermetrics | R-Bloggers

Davey Johnson, former baseball player and manager, recently died. He was remarkable in the world of mathematics and data analysis because he was an early in favor of the sabermetry, the use of statistical analysis of baseball to provide insight into player and team performance, long before the Moneyball book from 2003 and 2011 brought Sabermetrics to the public.

Johnson was a mathematics of Trinity University in San Antonio, TX. In his early 1920s while playing for the Baltimore Orioles, Johnson wrote simulations of the Occupation of Orioles, and he thought the line-up of 1969 that was most often used was the sixth worst possible line-up (Honkball.org/discover-more/news/johnson-davey). He was unable to convince Earl Weaver manager that he had to hit the line -up in second place.

In 1984, his first year as Mets Manager, he used DBase II to collect data about every opposite pitcher and every Mets that recorded record against that pitcher. This is routine today, but it was innovative in 1984.

He was especially interested in the Statistics on-Base percentage (OBP), which measures how often a batter reaches the base and therefore creates scoring opportunities. It is more extensive than simple stroke average and it contains the adage: “A walk is (almost) as good as a hit.” OBP is the same as (hits + walks + hit by pitch) / (at bats + walks + hit by pitch + sacrifice flies). As a result of his analysis, he decided that Ster Mookie Wilson was not the optimum lead -off hitter, and Johnson replaced Wilson at Leadoff by Wally Backman.

All important METS players improved their OBP in 1984 versus 1983 (except Hernandez who was more than .400 in both Jaara), but Backman’s Ops from 1984 of .360 was much higher than Wilson’s .308, especially because of the higher number of Wilson’s walks.

Johnson was the Mets manager from 1984 to the beginning of 1990, he won at least 90 games in each of his first five seasons and finished first or second in the NL East all six years. The 1983 Mets had only won 68 games. Part of his success was due to the rise of Darryl Strawberry and Dwight Throwing, and the acquisitions of Keith Hernandez and Gary Carter. Johnson was known for pelotoning his players, even his stars. It is doubtful how many victories are due to the manager (Sportslawblogger.com says that a maximum of 5 victories per season), but Johnson’s management record with the Mets is formidable. His low -time winning percentage including management stints is elsewhere .562.

As a player, Johnson was a second Honkman from 1965 to 1978, especially for the Baltimore Orioles and the Atlanta Braves. In Baltimore he was part of a large defensive Infield together with Brooks Robinson and Mark Stander. In Atlanta, as part of a Line -Up, including Hank Aaron and Darrell Evans, he had a season with 43 home runs (42 as second Honkman, Plus 1 as Pinch Hitter), with binding the record of Rogers Hornby for the most home runs by a second baseman.

Johnson’s player statistics are as follows. They are not a hall of fame caliber, but they are pretty good:

Billy Beane, the subject of the book Moneyball that popularized Sabermetrics, played five games for Johnson’s 1984 Mets and eight games for Johnson’s 1985 Mets. You have to wonder how much Beane has been influenced by Johnson.

The R code is as follows:

  
library(Lahman)
library(tidyverse)
library(ggplot2)
data(Batting)
data(People)
data(Teams)

common_theme <- theme(
    legend.position="right",
    plot.title = element_text(size=15, face="bold"),
    plot.subtitle = element_text(size=12.5, face="bold"),
    axis.title = element_text(size=15, face="bold"),
    axis.text = element_text(size=15, face="bold"),
    axis.text.x = element_text(angle = 45, hjust = 1),
    legend.title = element_text(size=15, face="bold"),
    legend.text = element_text(size=15, face="bold"))

# Mets key hitters 1983, 1984:
stars <- c("Backman", "Brooks", "Hernandez", "Foster", "Strawberry", "Wilson")
df <- Batting %>% 
  filter((yearID == 1983 | yearID == 1984) & teamID == "NYN") %>%
  left_join(People, by = "playerID") %>%
  filter(nameLast %in% stars | (nameLast == "Hernandez" & nameFirst == "Keith")) %>% 
  mutate(
    BA = round(H/AB,3),
    OBP = round((H + BB + HBP) / (AB + BB + HBP + SF),3)
    ) %>%
  select(nameFirst, nameLast, yearID, H, BB, HBP, AB, SF, BA, OBP) %>%
  arrange(yearID, desc(OBP)) 

ggplot(df, aes(x = nameLast, y = OBP, group = factor(yearID), fill = factor(yearID))) +
  geom_bar(stat = "identity", position = "dodge", width = .9) +
  scale_fill_manual(values = c("1983" = "red", "1984" = "blue")) +
  labs(title = "Mets Key Player OBP 1983, 1984",
       x = "Player",
       y = "On Base Percentage",
       fill = "Year") +
  common_theme

# NY Mets number of wins
mets_records <- Teams %>%
  filter(teamID == "NYN", yearID %in% seq(from = 1982, to = 1989, by = 1)) %>% 
  mutate(
    BA = round(H/AB,3),
    OBP = round((H + BB + HBP) / (AB + BB + HBP + SF),3)
    ) %>%
  select(yearID, W, L, H, HR, BA, OBP)
print(mets_records)

mets_records$mgr <- ifelse(mets_records$yearID == 1982 | mets_records$yearID == 1983, "Not Davey", "Davey")
mets_records$mgr <- factor(mets_records$mgr, levels = c("Not Davey", "Davey"))
ggplot(mets_records, aes(x = yearID, y = W, group = factor(mgr), fill = factor(mgr))) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("Not Davey" = "red", "Davey" = "blue")) +
  labs(title = "Mets Number of Wins by Year",
       x = "Year",
       y = "Number of Wins") +
       fill = "Manager") +
  common_theme

# find Davey Johnson in People:
People %>% filter(nameFirst == "Davey" & nameLast == "Johnson")
# his People %>% filter(nameFirst == "Davey" & nameLast == "Johnson")
# his playerID is johnsda02
df <- Batting %>% filter(playerID == "johnsda02") %>%
  left_join(People, by = "playerID") %>%
  mutate(
    BA = round(H/AB,3),
    OBP = round((H + BB + HBP) / (AB + BB + HBP + SF),3)
    ) %>%
  select(nameFirst, nameLast, yearID, teamID, H, BB, HBP, AB, SF, HR, BA, OBP)

# Calculate the totals row
totals_row <- df %>%
  summarize(
    nameFirst = "Totals",
    nameLast = "",
    yearID = NA_integer_, # NA is used for columns without a meaningful sum
    H = sum(H),
    BB = sum(BB),
    HBP = sum(HBP),
    AB = sum(AB),
    SF = sum(SF),
    HR = sum(HR),
    BA = round(sum(H) / sum(AB), 3),
    OBP = round(sum(H + BB + HBP) / sum(AB + BB + HBP + SF), 3)
  )
df_with_totals <- bind_rows(df, totals_row)
print(df_with_totals)


End


#Davey #Johnson #Mets #Manager #early #proponent #Sabermetrics #RBloggers

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *