Zones, halves, years and barrels: a clustering recap

Alessandro Zilio
7 min readMar 22, 2021


Yes, this is finally the end of what has been a long, perilous and chaotic journey into allowed Balls in Play clustering!

I know many of you are partying like it’s 90-something, and that is perfectly understandable. Clustering is a risky topic to get into: there’s a lot of subjectivity involved, and that’s not a good way to start if the target is to discover unexplored truths hiding behind a humongous amount of data.

It’s also not that easy of a process to fully understand, as simple as the main points seem to be, a lot like baseball indeed. There are distance measures, algorithms, all those nasty game settings that can be changed at will to obtain complete different results.

Nevertheless it was a wild ride, full of tables, diamond-friendly labels and colored graphs, so that I hope it was visually pleasing at least. Yet allow me to bore you with the last clustering you’ll see for a long while.

There’s an interesting question, one for that, those of you who have already read some Alex Chamberlain articles, know the answer: how fast do some stats, such as Barrels, stabilize?

That is to say, how many events do I need to check for to then consider the obtained results as solid on a long term perspective? How many BIP are necessary to state that the Barrel rate we found is somewhat close to a decent projection for the future?

In that sense I kindly asked Zack Greinke’s 2019 allowed BIP dataset for help. What happens if we compare the clustering on the same season but divided into two parts, before and after the All Star Game? Will the results hold for some, even all, components, from k number of clusters to the cluster-related % composition of allowed BIP?

This is not a trivial matter! What if allowed Barrels do actually stabilize fast? At the trade deadline teams could focus on arms that have shown the ability to avoid damage up until that point. Maybe some of those guys will regress to their “true” mean, sure, but along with striking guys out, not being hit hard is one of the most coveted traits for pitchers. For a Yu Darvish and Gerrit Cole there are also Kyle Hendricks and German Marquez, not the ones who’ll make Ks rain, but neither guys who’ll die by the longball, or anything hit hard for that matters.

Groundballers are aces too!

For the last time, let’s spin the wheel and cluster! First up is Greinke’s 2019 “First Half” allowed BIP, from the start of the season to the All Star Game, as you may faintly remember hosted in Cleveland at Progressive Field, with people and everything, on the 9th of July 2019.

The aforementioned dataset is composed of 304 balls in play, more than 50% of the total allowed in 2019 by Greinke and a similar number to those he conceded in the shortened 2020 campaign, so we can expect solid results.

As it’s almost a classic by now, step one is finding the optimal number of clusters:

Zack Greinke 2019 pre-ASG BIP, optimal k

It may surprise you that the optimal k here is not the same as in the full dataset, but remember the feeble nature of clustering: a single observation more/less could change everything, distance and cluster-wise.

So k = 9 it is! Now gear up for the fun part…

Zack Greinke 2019 pre-ASG BIP, cluster related averages

which is labeling!

  • 1 is clearly the barrel zone;
  • 2 are no doubters;
  • 3 are common grounders;
  • 4 is tricky, balls hit almost square but not going out of the infield, I called them choppers;
  • 5 are those sly bloops;
  • 6 go to the warning tracks;
  • 7 are hard liners;
  • 8 obviously slow rollers;
  • 9 just got unders.
Zack Greinke 2019 pre-ASG BIP, labeled cluster averages and composition

Keep in mind the barrel zone, no doubters and their sum in % as those are the key figures we’ll check for in the upcoming “Second Half” analysis to see if they retain those values or rather they go astray.

Before that, let’s indulge in some graphical pleasure:

Zack Greinke 2019 clustered pre-ASG BIP, fvizcluster function

and on an always helpful table briefing:

Zack Greinke 2019 pre-ASG BIP, cluster to AB outcome table

with a side dish of ggplot while we’re at it:

Zack Greinke 2019 clustered pre-ASG BIP, ggplot function

Time to look for answers, then! The “Second Half” dataset of Greinke’s 2019 allowed BIP contains 221 observations, not a small amount so we’re somewhat reassured we won’t have to deal with low sample size issues.

That said we already know k = 9 is the optimal number of groups as we have to make a comparison, although fun fact, it’s also what the usual maxSE criteria advices, good beats then!

Zack Greinke 2019 post-ASG BIP, cluster related averages

Almost identical to the First Half scenario, with a small change:

  • 1 are warning tracks;
  • 2 are slow rollers;
  • 3 is the barrel zone;
  • 4 are no doubters;
  • 5 are hard liners;
  • 6 are got unders;
  • 7 is a new finding, longer than bloops, underswung but not popped, these are my short flies;
  • 8 are indeed bloops;
  • 9 finally grounders.
Zack Greinke 2019 post-ASG BIP, labeled cluster averages and composition

The switch between choppers and short flies is not really an issue per se, rather one of those quirks that can happen due to clustering itself or even BIP distribution, as it is possible that, in our second half of 2019, Greinke just allowed more FB than before resulting in an additional clustering of them as the short flies group.

What’s more interesting is a clear fall in the barrel zone department: Greinke, in the meantime went from Arizona to Houston, found yet another gear and avoided further trouble, getting much more got unders and trading barrels for short flies while maintaing an acceptable rate of no doubters. Whatever Brent Strom and Zack concocted, it worked wonders.

Let’s close the book on clustering with some graphs:

Zack Greinke 2019 clustered post-ASG BIP, fvizcluster function

and tables:

Zack Greinke 2019 post-ASG BIP, cluster to AB outcome table

with an appetizing ggplot to conclude the meal:

Zack Greinke 2019 clustered post-ASG BIP, ggplot function

Finally, to answer our initial riddle, let’s compare the cluster-related % composition of “First Half” vs “Second Half” 2019 Greinke allowed BIP:

Zack Greinke 2019 pre-ASG BIP, labeled cluster averages and composition

Greinke achieved no small feat: a 5% decrease on barrel zone and retained no doubters make for much less damage allowed, although barrel zone in the Second Half hurt .130 avgxwOBA more than the First half.

Zack Greinke 2019 post-ASG BIP, labeled cluster averages and composition

Note how a lot stays the same: bloops are almost identical, ratio and damage-wise, and so are hard liners and grounders. Watch out for warning tracks in the Second Half: higher figures could mean a couple of barrels snuck in, explaining in part the previous decrease.

We are at the goodbyes! What are the most useful findings we obtained on this odissey? At least, considering a “not great” sample size of 3 pitchers in a single season, what are some hints we could further develop on?

First of all, results seem to stabilize at a fast pace, around 200 BIP at least on the Greinke case in point, so that checking in the midpoint of the season a pitcher’s allowed balls in play pattern and resultants could be a good way to foretell his future (in)ability to avoid damage. That is true particularly for those clusters, barrel zone and no doubters, where the conceded production lies, as they are those that retained their % composition both on a half-half and year-year comparison.

Then an important little note: EV is not a mean to all things. While limiting exit velocity is usually correlated with positive outcomes, either slow grounders or balls hit under, bloops are a thing too, and while they are not that common they actually hurt more than better-strucked balls as they find that piece of real estate patrolled by neither infielders nor outfielders for a surefire base hit or more.

Lastly, not considering strikeouts, grounders are maybe the market inefficiency as of now: even (averagely) hard struck ones didn’t break the .200 avgxwOBA barrier, a limit that even the warning track cluster, not to mention bloops, barrels and no doubters, cleared with room. While it’s a throwback, a Pirates way of thinking about pitching, there is some merit to try and complement your firebreathing rotation with a wormkiller or two. They won’t strike hitters out but they also won’t risk seeing a ball becoming a high-right dot in a clustering graph as much as K-artists do.

Whew, it’s over! I’ll see you next time with a player-dedicated analysis, in specific the highest paid player in what could be the worst team in the upcoming season, and why he could actually be worth a chance for a contender if he can pick up his pieces.

Until then, whether you hit one high in the air or down to the ground, bust your way to first and never betray the fundamentals!

Getting out of clustering be like



Alessandro Zilio

Italian baseball stathead. I’ll write about MLB, NPB and Korean dramas. A lot of Astros related content and obscure references.