For those of you who watched my quasi-realtime stream of data (errors) in the Bob Howry thread, here's the straight dope.
- Percent (rate) of Pitches thrown in each slice
- Swing Rate in each slice
- In Play Rate (on swings) in each slice
- Slugging Rate (on balls in play/homers) in each slice
The slices are each 8 inches wide - with 4 inches on each "side" of the plate. Fat, Sides, Edges, Off, Wide, Other. Other is ultra wide of the zone or, simply, too high or low.
The bugs in my logic from before have been corrected, but the discussion on how high/low to set the slice borders (not just the width) is far from over. So, using each hitter's average top and bottom zone (as set by the PITCHf/x operator), let's see how things fall-out this time.
First, a reminder on what the slices look like ("other" is not shown):
For each step, I do exclude some pitches. For Step 1, getting all pitches, and all other steps, I exclude these pitches:
and a.event not in
('Batter Interference','Catcher Interference',
'Fan interference','Hit By Pitch')
and a.des not like '%caught steal%'
and a.des not like '%pick% off%'
and a.des not like '%steals%'
For step two, I just keep the swings
t.event in ('SS','F','X','HR')
and a.event not in
('Batter Interference','Catcher Interference',
'Fan interference','Hit By Pitch')
and a.des not like '%caught steal%'
and a.des not like '%pick% off%' and a.des not like '%steals%'
For steps three and four (really one step) I only count X and HR to arrive at slugging.
The results:
Side | Slice | # | Rate | Swings | Swing Rate | In Play | In Play Rate | Total Bases | SLG | TB/Pitch |
Inside | Fat | 92,559 | 0.091 | 64,645 | 0.698 | 32,018 | 0.495 | 19,611 | 0.612 | 0.212 |
Inside | Side | 70,975 | 0.070 | 47,034 | 0.663 | 22,628 | 0.481 | 12,819 | 0.567 | 0.181 |
Inside | Edge | 49,635 | 0.049 | 28,123 | 0.567 | 12,143 | 0.432 | 5,672 | 0.467 | 0.114 |
Inside | Off | 30,752 | 0.030 | 12,043 | 0.392 | 3,919 | 0.325 | 1,549 | 0.395 | 0.050 |
Inside | Wide | 16,077 | 0.016 | 3,401 | 0.212 | 754 | 0.222 | 232 | 0.308 | 0.014 |
Inside | Other | 119,814 | 0.118 | 34,921 | 0.291 | 7,943 | 0.227 | 3,544 | 0.446 | 0.030 |
Side | Slice | # | Rate | Swings | Swing Rate | In Play | In Play Rate | Total Bases | SLG | TB/Pitch |
Outside | Fat | 109,757 | 0.108 | 75,444 | 0.687 | 37,029 | 0.491 | 21,453 | 0.579 | 0.195 |
Outside | Side | 113,535 | 0.112 | 70,777 | 0.623 | 33,841 | 0.478 | 17,147 | 0.507 | 0.151 |
Outside | Edge | 97,127 | 0.096 | 49,472 | 0.509 | 22,090 | 0.447 | 9,179 | 0.416 | 0.095 |
Outside | Off | 68,265 | 0.067 | 23,147 | 0.339 | 9,161 | 0.396 | 3,317 | 0.362 | 0.049 |
Outside | Wide | 38,481 | 0.038 | 7,081 | 0.184 | 2,279 | 0.322 | 712 | 0.312 | 0.019 |
Outside | Other | 205,483 | 0.203 | 49,006 | 0.238 | 13,057 | 0.266 | 4,906 | 0.376 | 0.024 |
Slice | # | Rate | Swings | Swing Rate | In Play | In Play Rate | Total Bases | SLG | TB/Pitch |
Fat | 202,316 | 0.200 | 140,089 | 0.692 | 69,047 | 0.493 | 41,064 | 0.595 | 0.203 |
Side | 184,510 | 0.182 | 117,811 | 0.639 | 56,469 | 0.479 | 29,966 | 0.531 | 0.162 |
Edge | 146,762 | 0.145 | 77,595 | 0.529 | 34,233 | 0.441 | 14,851 | 0.434 | 0.101 |
Off | 99,017 | 0.098 | 35,190 | 0.355 | 13,080 | 0.372 | 4,866 | 0.372 | 0.049 |
Wide | 54,558 | 0.054 | 10,482 | 0.192 | 3,033 | 0.289 | 944 | 0.311 | 0.017 |
Other | 325,297 | 0.321 | 83,927 | 0.258 | 21,000 | 0.250 | 8,450 | 0.402 | 0.026 |
# | Rate | Swings | Swing Rate | In Play | In Play Rate | Total Bases | SLG | TB/Pitch | |
Inside | 379,812 | 0.375 | 190,167 | 0.501 | 79,405 | 0.418 | 43,427 | 0.547 | 0.114 |
Outside | 632,648 | 0.625 | 274,927 | 0.435 | 117,457 | 0.427 | 56,714 | 0.483 | 0.090 |
All Pitches | 1,012,460 | 1.000 | 465,094 | 0.459 | 196,862 | 0.423 | 100,141 | 0.509 | 0.099 |
OK, this makes much better sense now. The "Other" and the top/bottom cut-off that plays a big part in creating it is subject to change, but I think I've nuked the stupid errors.