Modeling Whiffs and GBs Using Velo and Movement: A Reprise
Pitch modeling isn’t anything particularly unique or groundbreaking. It’s the kind of thing Harry Pavlidis and Jonathan Judge (of Baseball Prospectus) and our once-editor Eno Sarris (now of The Athletic) have investigated for years. I won’t claim to break new ground here. I’m just a nerd who likes testing hypotheses for himself.
Last year, I used velocity and movement, courtesy of PITCHf/x, to model swinging strike and ground ball rates for pitchers. That post was not my best work (easy to say in hindsight), primarily because of limitations with the data. The data, from Baseball Prospectus, was aggregated, such that I couldn’t isolate any single pitch thrown by a pitcher. The advent of Statcast has enabled us to do exactly that, providing publicly accessible hyper-granular pitch-level data and changing how the public sphere of sabermetricians nerd out.
Something I have wanted to do for a long time is refresh my previously-linked analysis, but with (1) Statcast data and (2) a different modeling approach — namely, the use of a probit model rather than a multiple regression model. For most of you, this means nothing. It’s gibberish. I don’t intend to wade too deeply into the weeds of the modeling, lest I disorient or alienate. Mostly, I just want to communicate I think it’s an exciting and different way to answer the everlasting question: how does a pitch’s velocity, movement, and spin rate affect its outcome?
A typical regression model specifies a dependent variable (y) that is an unbounded integer — any number from negative infinity to infinity (although it can have bounds, but that’s not the point). Conversely, a probit’s dependent variable is binary, where 1 equals one outcome and 0 equals another, like a true/false question or an on/off switch. The outcome, rather than being a nominal value, is, instead, a probability. What’s the probability that, when a hitter swings, a pitch will induce a whiff (1) or contact (0) based on its velocity, movement, and spin rate? What’s the probability that, when a hitter makes contact, it will be a ground ball (1) or something else (0)?
Not coincidentally, these are two questions I intend to answer for two very specific pitches thrown by two very specific pitchers. Patrick Brennan, of Beyond the Box Score, brought to our (or at least my) attention how Masahiro Tanaka‘s splitter has forsaken him this year. By Statcast’s expected wOBA (xwOBA), its outcomes have been awful, no doubt fueled by a greatly depreciated swinging strike rate (SwStr%). Similarly, I noticed some of Carlos Carrasco’s struggles stemmed from the ineffectiveness of his change-up, a pitch that typically logs a 70%-ish ground ball rate (GB%) but currently sits at a meager 46%. These two pitches are my test cases.
(This is where we get into the messy statistical stuff. Feel free to skip to the results.)
Tanaka’s Splitter’s Whiffs per Swing (Whf/Sw)
In looking at Tanaka’s splitter, I wanted to determine the probability of a swinging strike on every swing Tanaka has induced from the start of 2017 until now. In isolating just the swings, I remove the need to control for other exogenous variables that might influence the timing of a swing, such as ball-strike count.
I specified the model similarly to how Matt Swartz specified the regression model that produced SIERA once upon a time. I took the primary four independent variables — velocity, horizontal movement, vertical movement, and spin rate — and interacted them with one another. The idea behind this is none of the variables exist in a vacuum; for example, velocity means nothing without some kind of movement, and that interaction produces some kind of effect (or so one might hypothesize). These interactions underpin important relationships between variables, relationships that the model can then capture and characterize. Additionally, I included squared terms in case the relationship between Whf/Sw and velocity (or movement or spin rate) isn’t linear, which it surely isn’t.
Unfortunately, such a complicated specification makes it difficult to disentangle the exact effects of each variable (or pair of interacted variables). Thus, for the sake of demonstration, I specified a simpler model that used only each independent variable in isolation — that is, velocity, movement, and spin rate by themselves, no interactions, no nothin’. The estimated coefficients and Wald Chi-Square values (the latter of which measure the robustness of the relationship of the variables within the model) are shown below:
| Parameter | Estimate | Standard Error | Wald Chi-Square | Pr > ChiSq |
|---|---|---|---|---|
| Intercept | -5.0157 | 2.7979 | 3.2136 | 0.0730 |
| H | -0.2657 | 0.1598 | 2.7627 | 0.0965 |
| V | -0.5157 | 0.1435 | 12.9126 | 0.0003 |
| velo | 0.0558 | 0.0325 | 2.9524 | 0.0857 |
| rpm | -0.0003 | 0.0002 | 1.5906 | 0.2072 |
The color-coding above indicates statistical significance. For Tanaka’s splitter, vertical movement is, by far, the strongest correlate to the probability of a swing and miss. Horizontal movement and velocity are important, too, but less so, and spin rate bears no meaningful relationship (by itself, at least). Alas, in case you’re wondering what’s “most important” for Tanaka’s splitter’s success: it’s vertical movement.
The actual model, though, is significantly more complicated, the results of which I won’t provide here (but will share with those interested; feel free to comment below). I can confirm the model produces a strong fit, producing a p-value (0.0004) that resoundingly rejects the null hypothesis, which is good! That’s good.
The results…
| Year | Actual | Predicted | Diff |
|---|---|---|---|
| 2017 | 37.1% | 35.2% | 1.9% |
| 2018 | 34.0% | 30.4% | 3.6% |
| 2019 | 15.0% | 26.9% | -11.9% |
The model results suggest that, purely on the basis of velocity, movement, and spin rate, Tanaka’s splitter hasn’t been as efficacious in inducing whiffs on swings as in prior years. However, it certainly seems the pitch has underperformed, with its 15.0% whiff/swing falling well short of its predicted value of 26.9%.
Now, because the model lacks a variable to control for pitch location (i.e., command), it’s possible Tanaka has been grooving his splitter this year. Brooks Baseball might argue as much, but that argument would be flimsy at best (Tanaka is grooving his splitter more than ever but it’s still well above-average relative to all else).
Still, even if Tanaka were grooving his splitter, realistically it doesn’t explain the full difference between his actual and predicted Whf/Sw. It stands to reason the pitch will improve as the season wears on, which makes him a positive reversion candidate in strikeout rate (K%) and, thus, in FIP/xFIP/SIERA.
Carrasco’s Change-up’s GB%
Much of Tanaka’s section can be recycled here. For Carrasco, I wanted to estimate the probability of a ground ball specifically when his change-up induces contact from a hitter. The “most important” elements of Carrasco’s change-up in such instances is velocity followed by horizontal movement. Vertical movement and spin rate play a negligible role.
| Parameter | Estimate | Standard Error | Wald Chi-Square | Pr > ChiSq |
|---|---|---|---|---|
| Intercept | -20.6324 | 5.6820 | 13.1856 | 0.0003 |
| H | -0.6271 | 0.3921 | 2.5579 | 0.1097 |
| V | -0.1970 | 0.3062 | 0.4139 | 0.5200 |
| velo | 0.2358 | 0.0648 | 13.2474 | 0.0003 |
| rpm | -0.0002 | 0.0005 | 0.1143 | 0.7353 |
The results…
| Year | Actual | Predicted | Diff |
|---|---|---|---|
| 2017 | 73.6% | 70.4% | 3.2% |
| 2018 | 69.3% | 69.4% | -0.1% |
| 2019 | 45.9% | 62.2% | -16.3% |
The model suggests that, like Tanaka’s splitter, Carrasco’s change-up hasn’t quite been up to snuff in 2019 (which might be fully explained by his recently announced blood condition… ugh, get well soon, Cookie). Still, its predicted GB% greatly exceeds its actual GB%. Like Tanaka, this could be a matter of location and command; Carrasco is grooving his change-up more than ever, but, again, everything is relative (it’s still his least-grooved pitch). Thus, like Tanaka, I think we can reasonably expect some positive movement in the GB% column for Carrasco once he returns. The narrative might ultimately be crafted around his health concerns, and that’s fine. It’s likely they’ve greatly affected him. But, all else equal, the physical properties of his change-up suggest the pitch should have been incurring better outcomes from the get-go this year.
Conclusions
I intend for this to be the first of many dives into this kind of pitch modeling, with subsequent posts looking at single pitch types categories across the league (for example, all pitchers who throw sliders) with emphases on different metrics of success, beyond Whf/Sw and GB%.
Moreover, I think this kind of modeling might yield a pitch’s “true talent level” much sooner than its outcomes, assuming its velocity, movement, and spin rate readings stabilize more quickly. Thus, we can look at the physical properties of a pitch and determine, well in advance, what its season-long outcomes might be. Conduct an identical analysis for every pitch in a player’s arsenal and you can potentially understand how that player might perform rest-of-season.
Maybe. Who knows? I don’t. But I’m dreamin’, excited to keep digging in and learning more.
Lastly, this post was a little denser than most are (and even I am) accustomed to. Please don’t hesitate to ask questions of clarification. Also, if you are a superior econometrician, please holler at your boy and suggest improvements and/or correct his mistakes!
“It stands to reason the pitch will improve as the season wears on”
This would stand to reason if we believed he’s having bad luck, throwing a splitter that should get 27% whiffs but getting some bad weighted-coin flips.
But that’s extremely unlikely by a binomial estimate. There’s something non-luck going on, and we don’t know what it is, so why does it stand to reason he’ll fix it?
I would argue it might still be a small enough sample to invite noise — only 167 swings on his splitter in 2019, which suggests he lost 20 more coin flips than he should have. Eh, maybe you’re right, although it’s not outside the realm of probability to see absurdly bad streaks like that.
But I also don’t disagree with you. Given I’m not controlling for anything related to command, sequencing, or even opponent quality, any of those could (and, realistically, do) affect actual outcomes. The former two are fixable and the latter is out of Tanaka’s control (slash will fluctuate). My bigger concern would have been red flags related specifically to the physical properties of the pitch, which this model largely dismisses.
That said, I intend to include some measure of command in future iterations; we’ll see how that plays out.
I appreciate the feedback!
I assume you’ve previously neglected the overall movement component (ie the hypotenuse in the Pythagorean) as being non-significant? Is that “true” that if a pitch has a ‘horizontal’ movement of X, that it doesn’t matter how large or small the vertical component of the movement is?
First off: my gmail, for the first time ever, filtered a comment as spam, saying the message “seems dangerous.” You threatenin’ me pal??????
Anyway, I think, generally speaking, all physical properties of a pitch are important. In the instances above, vertical movement being “important” and horizontal movement being “not important” are exclusive to that particular pitcher and his pitch and not a reflection of a general (aka league-average) relationship. In other words, *specifically* for X pitch, more horizontal movement (etc.) has resulted in better outcomes for it.
I’ve had a hard time with the hypotenuse issue because you lose the directional component of the movement (i.e., negative squared becomes positive). I think including the interaction between H-mov and V-mov (H-mov * V-mov) helps capture this in a way that doesn’t undermine said directional component. It’s certainly possible that calculating a hypotenuse manually might cultivate different results — so this is all a long way of saying I don’t think the hypotenuse is insignificant, and in fact I try to account for it by including the H * V interaction, if that makes sense.
I guess I’m worried that intuitively there “should” be differences between an equal velo slider that goes -4 in the H direction and -3 in the V direction as compared to a (-4,-1) or a (-4,-9) – and similarly, as compared to a (-9,-3) and a (0,-3).
But, that being said, a -3,-4 pitch (ie with a “5” hypotenuse) is likely different from a (0,-5).
But yeah, maybe it just adds unnecessary complexity…
Obviously too – the next step would be to see how the whiff/swing of a specific pitch changes based on what the previous pitch was (ie sequencing) and what the ‘outcome’ of that previous pitch was…Looking forward to reading about that in part 2 :).
ps Great work!
pps no threats here!
Yep, once I get settled into some more remedial modeling, I’d like to dive into sequencing, etc… especially incorporating the physical properties of the previous pitch, and understanding how that might affect the outcome of the current pitch in conjunction with the physical properties of the current pitch. So many questions!
I appreciate the feedback!
Would recommend using logit to validate your probit findings. Logit models are generally preferred due to increased flexibility and less required assumptions (probit models require normality of error terms). Logit models are more commonly used due to that and being more easy to interpret. This is really cool work though. Very interested to get into this sort of thing next offseason
Thanks! Noted. Probits tend to be the model of choice for econometricians (loose air quotes for me), so I know less about logits, but I know they’re similar outside of the distribution shape. I’ll take a look! Appreciate the feedback.
Fascinating work, Alex! I’m no econometrician but i found this very interesting and am looking forward to seeing the results of your continued work.
I’m more of a user of statistical analysis than a statistician myself, but this is good work and you are on the right path.
In regards to command, much like in financial modeling I think you need to consider that another ‘factor’ in the equation. The only problem is, you need to determine who to accurately define that factor to incorporate it into your model, which should then lead to better results. It would be some sort of task, but could you break the strike zone into zones like we often see and break those zones into overall …expected SLG or ISO based on that zone type or just a score? So dead center (meatball) would have a score of 1, way out of the zone something like .5 (because it’s a ‘bad’ pitch but not a meatball), the corners are .25 and just outside the corners .35 of something. This way you could get a ‘command’ score in one easy number to use. Generally speaking in the example above, the lower the score the better the ‘command’.
Good luck, and again feel free to bash me – it’s been 20+ years since some of my more details calc and stats notes. You did a good job explaining it though!! We need more of this.