I’ve been reading Howard Bryant’s biography of Hank Aaron, and there were several mentions of Aaron being one of the most consistent hitters in the game. While you only need a passing knowledge of his stats to know that’s true, it still looked like something we could quantify.
To do this, I went with wRC+, which compares a player to the rest of the league relative to the time they were playing as well as adjusting for ballpark. If we’ve looking across history, this felt like the most fair way to compare.
For methodology, I took inspiration from the chapter “Exploring Streaky Performance” in “Analyzing Baseball Data with R”, using season-level mean and standard deviation, weighted by plate appearances. This will miss some inter-season streakiness - a hitter who hit .200 the first half and .400 the second will come out at .300 - but we’re OK with that. Since the scale of standard deviation depends on the average, we’ll divide the standard deviation by the average to get the Coefficient of Variation (COV). The lower it is, the more consistent yearly output was.
Firstly, we can see a survivor bias here - most players with 10+ years are good hitters. While we may be tempted to think this is like Lake Wobegon where everybody’s above average, in reality, poor hitters tend to have short careers.
Secondly, we see Hank Aaron as the blue dot in the lower right. This is where the great hitters live - that’s Babe Ruth way at the end, just a bit past Ted Williams. They tend to have pretty low COVs, though some, like Bonds and McGuire, are higher*.
*For some mysterious reason.
Now, let’s look at Aaron’s career and see if our chart above did a good job.
Show the code
graph_player_wrc <-function(playerID =1000001){ p_name <- agg_data_filtered %>%ungroup() %>%filter(player_id == playerID) %>%select(name) %>%pluck() t <- fg_data %>%filter(player_id == playerID) %>%inner_join(agg_data_filtered, by =join_by(player_id)) %>%mutate(low_range = wrc_plus_avg - (wrc_plus_sd *1.98),high_range = wrc_plus_avg + (wrc_plus_sd *1.98)) %>%ggplot(aes(x = season, y= w_rc, text =paste0(season, '<br>WRC+: ', round(w_rc, 0),'<br>PA: ', pa.x), group =1))+geom_line()+geom_point()+geom_line(aes(y = wrc_plus_avg), linetype ="dashed", color ='darkgrey')+geom_line(aes(y = low_range), linetype ="dashed", color ='darkgrey')+geom_line(aes(y = high_range), linetype ="dashed", color ='darkgrey')+theme_ipsum()+xlab('')+ylab('WRC+')+ggtitle(label =paste(p_name, 'WRC+ by Season'))ggplotly(t, tooltip =c("text"))}graph_player_wrc(1000001)
The start and end of Aaron’s career were on the low side, though even then he was a league average hitter. But once he got going in his second year, hitting 144 wRC+ in 1955, he kept going with 19 seasons with a wRC+ above 125, most of them above 140.
The book spent some time discussing Bonds overtaking Aaron as all-time home run king. His COV was higher, let’s take a look at his career.
Show the code
graph_player_wrc(1109)
Bonds started a little slower than Aaron, but settled in as an excellent hitter between 1990 and 1999, ranging from wRC+ of 150 to 200. What makes his consistency metric worse than Aaron’s is a stretch of insane hitting from 2001 to 2004, with numbers well above 200. Balco does things to a hitter, obviously.
As long as I was looking, I pulled up Miguel Cabrera. He and Albert Pujols are close to each other on the scatterplot, so let’s look at both of them.
Show the code
graph_player_wrc(1177)
Show the code
graph_player_wrc(1744)
While the stories are somewhat different - Pujols started hot and kept going for a decade, while Miggy has an adjustment year to start - both fell off at the end of their careers. While those were hard at-bats to watch, both had excellent careers and are each first-ballot hall of famers.
Finally, Pujol’s teammate Mike Trout popped up on the far right of the chart, so we’ll end with the Melville Meteor.
Show the code
graph_player_wrc(10155)
Trout’s been plagued by injuries the last several seasons, yet he’s still maintaining a wRC+ above 130. He’s one of the most consistent hitters in the game, and despite the injuries he’ll be remembered as one of the all time greats.