Davey Johnson, fost jucător de baseball și manager, a murit recent. El a fost remarcabil în lumea analizei matematicii și a datelor pentru că a fost un susținător timpuriu al Sabermetrics, utilizarea analizei statistice a baseball -ului pentru a oferi informații despre performanța jucătorilor și a echipei, cu mult înainte de cartea Moneyball din 2003, iar filmul din 2011 a adus Sabermetrics în public.

Johnson a fost un major de matematică de la Universitatea Trinity din San Antonio, TX. La începutul anilor 20 în timp ce juca pentru Baltimore Orioles, Johnson scria simulări ale Ordinului de luptă Orioles, iar el a crezut că linia din 1969 care a fost folosită cel mai adesea este a șasea cea mai proastă linie posibilă (baseballhall.org/discover-more/news/Johnson-davey). El nu a putut să -l convingă pe managerul Earl Weaver că ar trebui să bată pe locul doi în linie.
În 1984, primul său an de manager Mets, el a folosit DBASE II pentru a compila date pe fiecare ulcior opus și fiecare Mets lovind recordul împotriva acelui ulcior. Aceasta este de rutină astăzi, dar a fost inovatoare în 1984.
El a fost interesat în special de procentul statistic pe bază de bază (OBP), care măsoară cât de des ajunge un bătător la bază și, astfel, creează oportunități de notare. Este mai cuprinzător decât media simplă de luptă și încorporează adagiul, „O plimbare este (aproape) la fel de bună ca un hit.” OBP este egal (hits + plimbări + lovit de pas) / (la lilieci + plimbări + lovit de ton + muște de sacrificiu). Ca urmare a analizei sale, el a decis că vedeta Mookie Wilson nu a fost o lovitură optimă de plumb, iar Johnson l -a înlocuit pe Wilson la Leadoff cu Wally Backman.
Toți jucătorii cheie Mets și -au îmbunătățit OBP -ul în 1984 față de 1983 (cu excepția lui Hernandez, care a fost peste .400 în ambele Yera), dar Ops -ul din 1984 al lui Backman din .360 a fost mult mai mare decât Wilson .308, în special datorită numărului mai mare de plimbări ale lui Backman.




Johnson a fost managerul Mets din 1984 până la începutul anului 1990, a câștigat cel puțin 90 de jocuri în fiecare din primele sale cinci sezoane și a terminat primul sau al doilea în NL East în toți cei șase ani. Mets -urile din 1983 au câștigat doar 68 de jocuri. O parte din succesul său s -a datorat apariției lui Darryl Strawberry și Dwight Gooden și achizițiilor lui Keith Hernandez și Gary Carter. Johnson a fost cunoscut pentru plutonarea jucătorilor săi, chiar și stelele sale. Este discutabil câte victorii se datorează managerului (SportsLaWBlogger.com spune cel mult 5 victorii pe sezon), dar recordul managerial al lui Johnson cu Mets este formidabil. Procentul său câștigător de creștere, inclusiv stint -uri manageriale în altă parte, este de .562.


În calitate de jucător, Johnson a fost al doilea baseman din 1965 până în 1978, mai ales pentru Baltimore Orioles și Atlanta Braves. În Baltimore a făcut parte dintr -un mare infield defensiv împreună cu Brooks Robinson și Mark Belanger. În Atlanta, ca parte a unei linii, inclusiv Hank Aaron și Darrell Evans, a avut un sezon cu 43 de runde de acasă (42 ca al doilea baseman, plus 1 ca hitter Pinch), legând recordul lui Rogers Hornsby pentru majoritatea rundelor de acasă de un al doilea baseman.
Statisticile jucătorilor lui Johnson sunt următoarele. Nu sunt calibrul Hall of Fame, dar sunt destul de bune:


Billy Beane, subiectul cărții Moneyball care a popularizat Sabermetrics, a jucat cinci jocuri pentru Mets -ul din 1984 al lui Johnson și opt jocuri pentru Johnson din 1985 Mets. Trebuie să vă întrebați cât de mult a fost influențat Beane de Johnson.
Codul R este următorul:
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)
Sfârşit
