A couple weeks back, fellow sabermetrician (And former Beyond the Box Score Managing Editor) Sky Kalkman posted the following tweet:

```
```I'm going to put all the research/article ideas that I post to twitter in this one Tumblr article. Please steal them. http://t.co/KtmGxr6r5U

— Sky Kalkman (@Sky_Kalkman) May 7, 2014

One of the ideas that attracted the most interest was a hitter discipline model. As he noted, currently things are mostly of a binary nature: Taking a ball/swinging at a strike is good, taking a strike/swinging at a ball is bad. This of course does not take into account the probability that any player in general swings at the pitch, how valuable swinging at that pitch would be, and many other factors.

So that's what we want to look at. How can we incorporate all this into a new, more comprehensive, plate discipline statistic? Below I will combine three factors; the probability of swinging, the probability of a called strike, and the value of the pitch; into one metric that attempts to paint a more nuanced picture of plate discipline.

*There are a lot of numbers and complicated math over the next few sections. Feel free to skip around to whatever you want to read.*

### Probability of Swing

First of all, we want to look at the probability that any player in general swings at the pitch. If a player takes a ball that 40% of batters would swing at, this shows more discipline than taking a ball that 10% of batters would swing at. Currently, merely saying not swinging at a ball is good leaves out this aspect of plate discipline.

While I would prefer a fully probabilistic model to estimate this probability, more specifically a nonparametric regression spline or Gaussian process regression, the dataset size (Over 700,000 pitches from 2013) and Bernoulli response (Swing/No Swing) make this impossible. Or at least impracticable until I can borrow some high performance computing equipment.

#### Must Reads

So instead, I had to improvise, using a much less probabilistic/more deterministic algorithm. I decided to use a weighted K-nearest neighbors approach to estimate this probability, with the weights being determined by a Gaussian kernel. This at least has some connection to Gaussian process regression and splines using Gaussian kernels, even if the connection is not perfect.

The next question comes in the form of what variables to include to determine whether a batter would swing or not. These variables will be used to either (1) split the dataset or (2) determine the weights in the K-nearest neighbors algorithm. The variables that go into group (1) can't be too many, otherwise the splits within the dataset will become too fine.

It seems clear that pitch location should be a major component of this. In addition, the batter side (For inside/outside purposes), pitch type (Limited to "Hard" and "Breaking" pitches), and ball-strike count should be considered. There are of course other factors that can easily be considered: pitch speed, pitch movement, spin rate, pitcher throwing side, base-out-inning-score state, etc. However these were removed for one of two reasons: they either did not appreciably change the probability estimates and/or cut the data subsets too fine.

So the data was broken up into 48 subsets defined by the 2 pitcher throwing sides, 2 groups of pitches, and 12 counts. Some datasets wound out being relatively small, 3-0 breaking pitches against LHB had only around 250 occurrences out of the 700,000, and those ones have larger potential errors in estimation. It's also worth noting that there is some slight loss of information by subsetting the data, but it was unfortunately necessary to run the algorithm and again not my first choice. But it still can give pretty good estimates of probability, as we can see from the heatmaps below.

The heatmap on the left is the probability of swinging for a 0-0 hard pitch by a left-handed batter at the given locations. On the right is 0-2 hard pitches by left-handed batters. Darker colors (Reds) indicate higher probability of swinging than light colors (Yellows), This reflects conventional wisdom, as batters are more likely to take first pitches and tend to expand the zone and swing more against 0-2 counts.

These probability estimates can be enlightening about plate discipline on their own. If just limiting views to swinging at strikes/taking balls is good, one can get a version of discipline above league average from these probabilities. It can be viewed as a cumulative or per pitch basis, but I'm going to look at the cumulative. The main component would be broken down to batter decision (0/1 for "correct" decision based on pitch location) minus overall probability estimate of the "correct" decision. This way, an "incorrect" decision will result in a negative number, while an "incorrect" decision that everyone makes (Taking a fastball down the middle on a 0-0 count) won't be as punished as much as an "incorrect" decision no one makes (Taking that same fastball in an 0-2 count).

So, looking at that, we can get the top 10 and bottom 10 of discipline based on this version of the statistic (Out of 253 batters who saw at least 1,200 pitches). And let's just say there are a few surprising names on each list.

Name | Total DiscAA |
---|---|

Joey Votto | 212.5710 |

Dexter Fowler | 165.4570 |

Jay Bruce | 163.7788 |

Shin-Soo Choo | 163.4609 |

Dan Uggla | 162.9805 |

Adam Dunn | 162.3299 |

Chris Iannetta | 152.5458 |

Nick Swisher | 150.7717 |

Andrew McCutchen | 141.1140 |

Jed Lowrie | 135.4387 |

⋮ | ⋮ |

Gerardo Parra | -71.37965 |

Ryan Zimmerman | -71.86264 |

Jonathan Lucroy | -73.56681 |

J.J. Hardy | -74.39677 |

Alfonso Soriano | -75.28908 |

Shane Victorino | -82.76287 |

Jose Iglesias | -83.09396 |

Erick Aybar | -86.55458 |

Pablo Sandoval | -108.70836 |

A.J. Pierzynski | -139.04489 |

Finding Votto at the top of a plate discipline list is about as surprising as...well...what's more surprising? A Mark Reynolds season over 150 strikeouts (Or over 30% K% for that matter)? You get the idea. But Adam Dunn and Dan Uggla? Yeah...

It's clear something is missing. Well, a few things actually. To start with, let's move on to...

### Probability of Called Strike

Above, we were considering merely balls and strikes according to location. Of course, umpires aren't perfect. Some calls will get missed, and this needs to be accounted for. In the above calculation, a ball 1/4" outside zone gets classified a ball, while one 1/4" inside the zone classified a strike. However, it's reasonably likely that the probability that both of these two pitches are called a strike would be similar.

Again, a fully probabilistic model is preferred, but again, dataset size limits what is possible. So again, Gaussian kernel-weighted K-nearest neighbors is employed. The variables chosen to determine data subsetting and kernel weights are the same. It's true that this effectively leaves out pitcher/umpire/catcher effects, but this would (1) start to cut the data too fine, and also (2) the goal is to establish a league wide baseline probability of called strike, and this baseline is calculated by essentially averaging over these effects. If one assumes that the pitcher/umpire/catcher effects average out over the season, this is less of a concern to begin with anyway.

Interestingly, this league wide baseline does not change as much with count as expected, while batter side seems to affect things a bit more (Mostly from an inside/outside pitch perspective I expect). Below is one heatmap of estimated called strike probability, in this case for 0-0 hard pitches to left handed batters.

Here, you can see a reasonably defined rectangular strike zone, albeit with slightly rounded corners (Implying more missed calls on the four corners of the strike zone, which is not necessarily surprising).

So we've now estimated this probability. But before we incorporate it into the statistic, we need to gather a few other things...

### Value of a Pitch

There are many ways to value a pitch. This is just my version of it. To begin, let's look at the wOBA of each count. To do that, I calculate the wOBA over any at bat that reached a certain count. In other words, say a batter got a single on an 0-2 pitch. That single will count in the calculations for the 0-0, 0-1, and 0-2 counts. The table below gives the breakdown and wOBA for the 12 counts.

Count | Intent Walk | Walk | Hit By Pitch | Single | Double | Triple | Home Run | Outs | wOBA |
---|---|---|---|---|---|---|---|---|---|

0-0 | 0.55% | 7.37% | 0.83% | 15.39% | 4.43% | 0.42% | 2.52% | 68.50% | 0.309 |

0-1 | 0.03% | 4.38% | 0.88% | 14.59% | 3.97% | 0.36% | 2.01% | 73.78% | 0.265 |

0-2 | 0.00% | 2.74% | 0.83% | 11.40% | 2.92% | 0.29% | 1.40% | 80.42% | 0.197 |

1-0 | 1.35% | 13.12% | 0.62% | 14.84% | 4.51% | 0.43% | 2.77% | 62.36% | 0.349 |

1-1 | 0.06% | 8.28% | 0.74% | 14.58% | 4.24% | 0.40% | 2.32% | 69.39% | 0.301 |

1-2 | 0.00% | 5.29% | 0.76% | 11.69% | 3.08% | 0.31% | 1.64% | 77.22% | 0.224 |

2-0 | 3.83% | 25.91% | 0.38% | 12.38% | 3.87% | 0.35% | 2.59% | 50.69% | 0.401 |

2-1 | 0.12% | 17.29% | 0.49% | 13.57% | 4.16% | 0.43% | 2.57% | 61.36% | 0.357 |

2-2 | 0.00% | 11.44% | 0.56% | 11.40% | 3.30% | 0.36% | 1.81% | 71.12% | 0.270 |

3-0 | 11.42% | 51.79% | 0.13% | 6.46% | 2.26% | 0.14% | 1.59% | 26.21% | 0.480 |

3-1 | 0.30% | 41.29% | 0.20% | 9.92% | 3.20% | 0.31% | 2.41% | 42.37% | 0.471 |

3-2 | 0.01% | 29.54% | 0.25% | 10.03% | 3.16% | 0.35% | 1.79% | 54.88% | 0.378 |

Here, we can clearly see the traditional hitter's and pitcher's counts. With this information, we can get the amount of change between counts. However, we not only want to compare the new count versus the old count (For swings), we really want to compare to what the count could have been (Given the pitch is taken). In other words, for a "correctly" taken first pitch ball, we want to compare the new 1-0 count to the possible 0-1 count if the batter had "incorrectly" swung. Below is the numbers for each one of the possible old count-new count combinations.

Old Count | New Count | wOBA Change | Change Compared to Alternate Count |
---|---|---|---|

0-0 | 0-1 | -0.045 | -0.085 |

0-0 | 1-0 | 0.040 | 0.085 |

0-1 | 0-2 | -0.067 | -0.104 |

0-1 | 1-1 | 0.036 | 0.104 |

1-0 | 1-1 | -0.048 | -0.100 |

1-0 | 2-0 | 0.051 | 0.100 |

0-2 | K | -0.197 | -0.224 |

0-2 | 1-2 | 0.027 | 0.224 |

1-1 | 1-2 | -0.077 | -0.133 |

1-1 | 2-1 | 0.056 | 0.133 |

2-0 | 2-1 | -0.043 | -0.123 |

2-0 | 3-0 | 0.079 | 0.123 |

1-2 | K | -0.224 | -0.270 |

1-2 | 2-2 | 0.046 | 0.270 |

2-1 | 2-2 | -0.087 | -0.201 |

2-1 | 3-1 | 0.113 | 0.201 |

3-0 | 3-1 | -0.009 | -0.219 |

3-0 | BB | 0.210 | 0.219 |

2-2 | K | -0.270 | -0.378 |

2-2 | 3-2 | 0.108 | 0.378 |

3-1 | 3-2 | -0.093 | -0.312 |

3-1 | BB | 0.219 | 0.312 |

3-2 | K | -0.378 | -0.690 |

3-2 | BB | 0.312 | 0.690 |

Of course, the largest difference, and therefore most important time for discipline, is in the 3-2 count. Outside of that, the most important counts are the 2-2, 3-1, and 1-2 counts. In the final statistic, these counts will get the most weight. Specifically, the weights for each count are given below.

Count | Weight |
---|---|

0-0 | 0.085 |

0-1 | 0.104 |

0-2 | 0.224 |

1-0 | 0.100 |

1-1 | 0.133 |

1-2 | 0.270 |

2-0 | 0.123 |

2-1 | 0.201 |

2-2 | 0.378 |

3-0 | 0.219 |

3-1 | 0.312 |

3-2 | 0.690 |

Now because this weighting is wOBA-based, it is context-neutral (Similar to WAR, another wOBA-based stat). It would be decidedly possible to create a context-dependent version of this through run expectancy data by count, base state, etc. However, in this setting, one would need to account for the probabilities of runners advancing. But that will be another stat for another day.

### Putting It All Together

Here's where things get a little tricky, and also a little subjective. Why subjective? Because here's where you have to define what you mean by plate discipline. I'm essentially removing at bat results from the final plate discipline statistic. Why? Because otherwise you'd have Miguel Cabrera (say) as having the best plate discipline. Not necessarily because he has the best plate discipline, but because he does the most with the pitches he sees.

I personally separate the two. Take the following two hitters. Hitter A swings at everything, and does an above average amount of damage on the average. Hitter B makes "perfect" decisions about when to swing, but does below average damage on every swing. I'd call Hitter A the better hitter, but Hitter B the more disciplined. So that's how I define plate discipline: making the correct decision, regardless of the result of that decision.

So now we need to combine all this mess together. All three parts, the probability of a swing, the probability of a called strike, and the count value will be included in the final number. As before, we want to reward correct decisions, but now, instead of a hard and fast rule based on location, we can factor in the probability of "correctness." In the end, the whole cumulative DiscAA statistic becomes (Those with an aversion to equations should avert their eyes immediately)

Okay, all this mess to say, we get a weighted DiscAA statistic that is context-neutral. The concept can be adjusted to be context-dependent, although that is not discussed here. Finally, below we give the top 10 and bottom 10 plate discipline guys for 2013. Again, as above, there are a few surprises.

Name | Weighted DiscAA |
---|---|

Shin-Soo Choo | 38.41332 |

Dan Uggla | 33.42946 |

Chris Iannetta | 31.82245 |

Nick Swisher | 29.43145 |

Joey Votto | 29.38584 |

Dexter Fowler | 28.42413 |

Josh Willingham | 24.87341 |

Chase Headley | 24.62267 |

Andrew McCutchen | 22.70673 |

Alex Avila | 22.07558 |

⋮ | ⋮ |

Starlin Castro | -13.19537 |

Shane Victorino | -14.50072 |

Alfonso Soriano | -14.90873 |

Jonathan Lucroy | -14.92298 |

Mark Trumbo | -15.10959 |

Ichiro Suzuki | -15.13882 |

Pablo Sandoval | -16.70644 |

Jose Iglesias | -17.88822 |

Adam Jones | -19.26257 |

A.J. Pierzynski | -21.82043 |

Last of all, I link the full table of the 253 qualified (More than 1,200 pitches seen in the dataset) players and the DiscAA.

**. . .**

** **

*Data scraped from MLBAM XML files.*

*Stephen Loftus is an editor at Beyond The Box Score. You can follow him on Twitter at @stephen__loftus.*