Slicing Up Bob Howry
In the Randy Johnson thread, things moved on into Bob Howry. As a Cub fan, I lamented his performance and wished the Giants luck. Or words to that effect.
The question surrounds Howry's fastball, or questions. They are
- How much slower was it in 2008 vs. 2007?
- Was his performance impacted by the velocity?
- Was his performance impacted by the location?
I'll measure performance four ways
- Whiff Rate (whiffs/swings)
- Fat Rate (pitches in the middle 8 inches, within the top/bottom strike zone)
- BB/9 Inning (not pitch specific)
- BABIP (not pitch specific)
I'm breaking time down by month. The first two metrics are specific to the fastballs, and are based on PITCHf/x data. The last two are general, and were taken from Baseball Reference (and they combine Mar/Apr and Sept/Oct). For PFX sampling reasons, I'm using July-September 2007 and April-September 2008.
This is a test. If this were actual analysis I would've actually tried this before. We'll see what happens.
First, the zones - the darker are in the middle is "Fat", the solid areas flanking it are "Sides", then "Edges" (now off the plate) followed by "Off" and "Wide" (or "Wild").
Actually, the Sides are just a hair short of the 17 inch plate. The fat is 8 inches, 4 on each half, and the plate is 17 inches. So part of each Edge is a rule book strike. All of the Edges are within the zone that umpires and batters seem to actually see/play/call.
Updated: League #'s for the slices ... much more in the comments
| cfx | # | Fat | Side | Edge | Off | Wide |
| FA | 101,132 | 0.210 | 0.191 | 0.154 | 0.104 | 0.058 |
Howry's fastball is less "fat" than the average FA in the above sample
Howry's raw numbers ....
| mon. | yr. | n | Fat | MPH | BBp9* | BABIP* | Swing | Whiff |
| 7 | 2007 | 101 | 0.178 | 94.2 | 0.7 | 0.359 | 0.505 | 0.196 |
| 8 | 2007 | 189 | 0.180 | 93.9 | 2.5 | 0.176 | 0.571 | 0.204 |
| 9 | 2007 | 156 | 0.199 | 94.8 | 1.2 | 0.268 | 0.622 | 0.186 |
| 4 | 2008 | 168 | 0.202 | 90.8 | 1.4 | 0.391 | 0.548 | 0.098 |
| 5 | 2008 | 143 | 0.224 | 92.1 | 1.8 | 0.318 | 0.546 | 0.154 |
| 6 | 2008 | 124 | 0.194 | 93.3 | 0.9 | 0.344 | 0.532 | 0.121 |
| 7 | 2008 | 171 | 0.175 | 92.8 | 1.4 | 0.238 | 0.579 | 0.172 |
| 8 | 2008 | 120 | 0.150 | 92.2 | 0.8 | 0.361 | 0.542 | 0.108 |
| 9 | 2008 | 98 | 0.174 | 91.7 | 5.4 | 0.478 | 0.510 | 0.280 |
Pictures ...
Yea, I'm not getting anything. This was only a test. The metrics applied may not be useful, the samples too small, the analysis too crude. But, it is another way of trying to put PITCHf/x together with performance - something I've found challenging to date.
Bonus: Speed Charts for Howry.
1 recs |
21 comments
Comments
How awesome is Harry Pavlidis?
The answer is “quite a bit.”
Webmaster of Driveline Mechanics
http://www.drivelinemechanics.com - An Unconventional Look at Scouting
by Kyle Boddy on Dec 30, 2008 5:40 AM EST reply actions 0 recs
I think you've got a good start
I wonder if distance from the center of the strike zone might be a way to describe pitches.
I think it can be pretty critical information. It would stir a lot of discussion if there were a simple way to express something like Jamie Moyer’s strike zone with hard underlying data. I doubt the Brewers beat him in the playoffs if he got his special outside strike calls and I think he would have lost his Series game if he didn’t get it.
I can also remember a discussion of Pujol’s strike zone after a series when he got a handful of pitches called balls that traveled down the middle of the strike zone. Bonds had similar discussions.
by ol Pete on Dec 30, 2008 11:22 AM EST reply actions 0 recs
Possibly
The middle-zone idea was Sky’s, and I think it makes sense. I usually use the zone and the paint, as it were, but I’ve also sliced the zone up 9 ways, or just sliced up everything 9 ways (the zone in the middle, then everything else out of zone).
I think one approach may be as such
1) Identify the highest SLG zone for each hitter (good luck with Vlad)
2) Measure pitcher’s abilities to avoid those spots with different pitches
This is flawed – assumes even scouting – but so is using the middle of the plate. Middle in and down may be the sweet spot for a lot of hitters.
by Harry Pavlidis on Dec 30, 2008 11:35 AM EST up reply actions 0 recs
Number 1 sounds a lot like the “hot zone” in its various incarnations. Two is sort of but not exactly the converse. You’re right about that sweet spot, but thinking about it I don’t think there are many hitters who don’t have a high number down the middle.
by ol Pete on Dec 30, 2008 12:10 PM EST up reply actions 0 recs
I just added
League #‘s for the slices. The rates don’t add up to 1.00 for a reason – there is an “other” category of pitches that aren’t covered – that 30% or so are too high or low to be a strike, but, could be important anyway (particularly closer to the zone).
by Harry Pavlidis on Dec 30, 2008 12:33 PM EST reply actions 0 recs
Care to share the query you use for splitting into slices?
I’m curious to see the resulting BABIP and SLGBIP for each of those.
I’m willing to do the work (well some of it anyway) if you can save me the time of re-figuring the borders of the slices.
Thanks.
by Dan Turkenkopf on Dec 30, 2008 12:50 PM EST up reply actions 0 recs
I'm doing the same, but the more the merrier
select
t.cubsfx_type,
count(t.pitch_id) as `#`,
SUM AND (b.TopAvg >= t.pz) AND (t.px >=-.3335) AND (t.px <=.3335),1,0)) /
count(t.pitch_id) as `Fat`,
SUM AND (b.TopAvg >= t.pz) AND ( (t.px >=-.667 AND t.px < -.3335) or (t.px <=.667 AND t.px >.3335) ),1,0)) /
count(t.pitch_id) as `Side`,
SUM AND (b.TopAvg >= t.pz) AND ( (t.px >=-1 AND t.px < -.667) or (t.px <=1 AND t.px >.667) ),1,0)) /
count(t.pitch_id) as `Edge`,
SUM AND (b.TopAvg >= t.pz) AND ( (t.px >=-1.3335 AND t.px < -1) or (t.px <=1.3335 AND t.px >1) ),1,0)) /
count(t.pitch_id) as `Off`,
SUM AND (b.TopAvg >= t.pz) AND ( (t.px >=-1.667 AND t.px < -1.3335) or (t.px <=1.667 AND t.px >1.3335) ),1,0)) /
count(t.pitch_id) as `Wide`
from
tspin t,
atbats a,
tbatters b
where
length(t.cubsfx_type) = 2 and t.cubsfx_type = ‘FA’ and
t.ab_id = a.ab_id and a.batter = b.mlbid
group by 1
;
Is how I do it. But that has some custom tables (departures from the base data etc). You could replace b.BotAvg with 1.45 and b.TopAvg with 3.55 (or something like that) and be close enough. Try this
select
t.pitch_type,
count(t.pitch_id) as `#`,
SUM AND (3.55 >= t.pz) AND (t.px >=-.3335) AND (t.px <=.3335),1,0)) /
count(t.pitch_id) as `Fat`,
SUM AND (3.55 >= t.pz) AND ( (t.px >=-.667 AND t.px < -.3335) or (t.px <=.667 AND t.px >.3335) ),1,0)) /
count(t.pitch_id) as `Side`,
SUM AND (3.55 >= t.pz) AND ( (t.px >=-1 AND t.px < -.667) or (t.px <=1 AND t.px >.667) ),1,0)) /
count(t.pitch_id) as `Edge`,
SUM AND (3.55 >= t.pz) AND ( (t.px >=-1.3335 AND t.px < -1) or (t.px <=1.3335 AND t.px >1) ),1,0)) /
count(t.pitch_id) as `Off`,
SUM AND (3.55 >= t.pz) AND ( (t.px >=-1.667 AND t.px < -1.3335) or (t.px <=1.667 AND t.px >1.3335) ),1,0)) /
count(t.pitch_id) as `Wide`
from
pitches t
group by 1
;
by Harry Pavlidis on Dec 30, 2008 1:17 PM EST up reply actions 0 recs
What database software do you use?
MySQL is complaining about the use of SUM AND. I haven’t spent the time to really dive into it in detail yet.
On a side note, is your tbatters table a calculated top and bottom strike zone for each batter? Did you simply average the pitchfx recorded values?
by Dan Turkenkopf on Dec 30, 2008 4:29 PM EST up reply actions 0 recs
that's a goof from the comment formatting
Try this (and, about the zones, tbatters is the lookup table I use that has the average PFX operator zone top/btm for each hitter).
select t.pitch_type, count(t.pitch_id) as `#`, SUM(if((3.55 >= t.pz) AND (t.px >=-.3335) AND (t.px <=.3335),1,0)) / count(t.pitch_id) as `Fat`, SUM(if((3.55 >= t.pz) AND ( (t.px >=-.667 AND t.px < -.3335) or (t.px <=.667 AND t.px >.3335) ),1,0)) / count(t.pitch_id) as `Side`, SUM(if((3.55 >= t.pz) AND ( (t.px >=-1 AND t.px < -.667) or (t.px <=1 AND t.px >.667) ),1,0)) / count(t.pitch_id) as `Edge`, SUM(if((3.55 >= t.pz) AND ( (t.px >=-1.3335 AND t.px < -1) or (t.px <=1.3335 AND t.px >1) ),1,0)) / count(t.pitch_id) as `Off`, SUM(if((3.55 >= t.pz) AND ( (t.px >=-1.667 AND t.px < -1.3335) or (t.px <=1.667 AND t.px >1.3335) ),1,0)) / count(t.pitch_id) as `Wide` from pitches t group by 1
by Harry Pavlidis on Dec 30, 2008 6:07 PM EST up reply actions 0 recs
Yep that did it
Thanks. Sorry for making you do my dirty work.
That’s what happens when I’m flitting back and forth from project to project.
by Dan Turkenkopf on Dec 30, 2008 6:15 PM EST up reply actions 0 recs
Here's an example
While digging up older work on Penny for a new post here, I found this
Marquis v Penny which has slugging against by pitch type. I lost the code for that (thought I had a back-up, not so much), but I’m reconstructing it today, along with ground/line/pop/fly etc.
by Harry Pavlidis on Dec 30, 2008 1:20 PM EST reply actions 0 recs
All Pitches Location by Slice (%'s are of all pitches)
in Fat 92,559 9.1% Side 70,975 7.0% Edge 49,635 4.9% Off 30,752 3.0% Wide 16,077 1.6% Other 119,814 11.8% out Fat 109,757 10.8% Side 113,535 11.2% Edge 97,127 9.6% Off 68,265 6.7% Wide 38,481 3.8% Other 205,483 20.3% both sides Fat 202,316 20.0% Side 184,510 18.2% Edge 146,762 14.5% Off 99,017 9.8% Wide 54,558 5.4% Other 325,297 32.1% in 379,812 37.5% out 632,648 62.5% all 1,012,460
by Harry Pavlidis on Dec 30, 2008 6:55 PM EST reply actions 0 recs
Swing Rates by Slice
in # SwRt Fat 64,645 69.8% Side 47,034 66.3% Edge 28,123 56.7% Off 12,043 39.2% Wide 3,401 21.2% Other 34,921 29.1% out # SwRt Fat 75,444 68.7% Side 70,777 62.3% Edge 49,472 50.9% Off 23,147 33.9% Wide 7,081 18.4% Other 49,006 23.8% both sides sWrT Fat 140,089 69.2% Side 117,811 63.9% Edge 77,595 52.9% Off 35,190 35.5% Wide 10,482 19.2% Other 83,927 25.8% tot # SwRt in 190,167 50.1% out 274,927 43.5% all 465,094 45.9%
by Harry Pavlidis on Dec 30, 2008 7:04 PM EST reply actions 0 recs
Fastball Split by Count
Type Balls Strikes # Fat Side Edge Off Wide
‘FA’ 0 0 111902 0.2595 0.2358 0.1838 0.1195 0.0642
‘FA’ 0 1 43052 0.2092 0.2026 0.1870 0.1419 0.0866
‘FA’ 0 2 19171 0.1325 0.1390 0.1372 0.1195 0.0838
‘FA’ 1 0 46410 0.2750 0.2450 0.1839 0.1179 0.0601
‘FA’ 1 1 36723 0.2363 0.2224 0.1903 0.1309 0.0744
‘FA’ 1 2 27671 0.1792 0.1821 0.1677 0.1305 0.0830
‘FA’ 2 0 19055 0.2988 0.2534 0.1802 0.1083 0.0489
‘FA’ 2 1 23975 0.2792 0.2444 0.1871 0.1143 0.0573
‘FA’ 2 2 26551 0.2320 0.2183 0.1821 0.1207 0.0716
‘FA’ 3 0 7055 0.3076 0.2564 0.1711 0.0985 0.0394
‘FA’ 3 1 12603 0.3098 0.2614 0.1780 0.1023 0.0438
‘FA’ 3 2 20269 0.3048 0.2546 0.1775 0.0958 0.0469
I can’t figure out how to get the nice formatting like Harry has.
by Dan Turkenkopf on Dec 30, 2008 10:01 PM EST reply actions 0 recs
put the date into the "
and also use the
tag
those splits are very interesting.
by Harry Pavlidis on Dec 30, 2008 10:16 PM EST up reply actions 0 recs
can you add the "other"
I can do it in my mind, but it would be easier to see it on page I think.
by Harry Pavlidis on Dec 30, 2008 10:23 PM EST reply actions 0 recs
never mind the quotes
just use the pre tag around your entry, and avoid leading spaces
Type B S # Fat Side Edge Off Wide
‘FA’ 0 0 111902 0.2595 0.2358 0.1838 0.1195 0.0642
‘FA’ 0 1 43052 0.2092 0.2026 0.1870 0.1419 0.0866
‘FA’ 0 2 19171 0.1325 0.1390 0.1372 0.1195 0.0838
‘FA’ 1 0 46410 0.2750 0.2450 0.1839 0.1179 0.0601
‘FA’ 1 1 36723 0.2363 0.2224 0.1903 0.1309 0.0744
‘FA’ 1 2 27671 0.1792 0.1821 0.1677 0.1305 0.0830
‘FA’ 2 0 19055 0.2988 0.2534 0.1802 0.1083 0.0489
‘FA’ 2 1 23975 0.2792 0.2444 0.1871 0.1143 0.0573
‘FA’ 2 2 26551 0.2320 0.2183 0.1821 0.1207 0.0716
‘FA’ 3 0 7055 0.3076 0.2564 0.1711 0.0985 0.0394
‘FA’ 3 1 12603 0.3098 0.2614 0.1780 0.1023 0.0438
‘FA’ 3 2 20269 0.3048 0.2546 0.1775 0.0958 0.0469
by Harry Pavlidis on Dec 30, 2008 10:25 PM EST reply actions 0 recs
More pitch types (includes 'Other' slice)
Changeup Type B S # Fat Side Edge Off Wide Other 'CH' 0 0 16727 0.2651 0.2431 0.1879 0.1235 0.0667 0.1137 'CH' 0 1 10822 0.2424 0.2281 0.1912 0.1364 0.0852 0.1167 'CH' 0 2 3718 0.1974 0.1958 0.1805 0.1490 0.1111 0.1662 'CH' 1 0 9625 0.2820 0.2514 0.1835 0.1178 0.0634 0.1019 'CH' 1 1 10175 0.2689 0.2429 0.1933 0.1297 0.0667 0.0985 'CH' 1 2 7046 0.2350 0.2183 0.1842 0.1436 0.0945 0.1244 'CH' 2 0 2300 0.2896 0.2548 0.1822 0.1152 0.0513 0.1069 'CH' 2 1 4584 0.2812 0.2598 0.1913 0.1126 0.0615 0.0936 'CH' 2 2 6581 0.2614 0.2325 0.1954 0.1336 0.0734 0.1037 'CH' 3 0 299 0.3211 0.2910 0.1338 0.1070 0.0368 0.1103 'CH' 3 1 1050 0.3190 0.2638 0.1800 0.0914 0.0524 0.0934 'CH' 3 2 3108 0.3092 0.2449 0.1869 0.1081 0.0524 0.0985
Curveball Type B S # Fat Side Edge Off Wide Other 'CU' 0 0 17259 0.2865 0.2489 0.1746 0.1038 0.0545 0.1317 'CU' 0 1 10933 0.2717 0.2419 0.1876 0.1163 0.0709 0.1116 'CU' 0 2 6210 0.2464 0.2180 0.1804 0.1275 0.0882 0.1395 'CU' 1 0 4278 0.3195 0.2466 0.1748 0.1050 0.0547 0.0994 'CU' 1 1 7638 0.2849 0.2561 0.1781 0.1096 0.0618 0.1095 'CU' 1 2 9787 0.2489 0.2359 0.1824 0.1278 0.0804 0.1246 'CU' 2 0 569 0.3111 0.2513 0.1722 0.1142 0.0475 0.1037 'CU' 2 1 2043 0.3138 0.2614 0.1747 0.0999 0.0499 0.1003 'CU' 2 2 6455 0.2741 0.2438 0.1802 0.1170 0.0689 0.1160 'CU' 3 0 38 0.2632 0.3158 0.1316 0.0789 0.1053 0.1052 'CU' 3 1 283 0.3039 0.2473 0.1873 0.1131 0.0495 0.0989 'CU' 3 2 1891 0.2919 0.2734 0.1750 0.1005 0.0539 0.1053
Fastball Type B S # Fat Side Edge Off Wide Other 'FA' 0 0 111903 0.2595 0.2358 0.1838 0.1195 0.0642 0.1372 'FA' 0 1 43052 0.2092 0.2026 0.1870 0.1419 0.0866 0.1727 'FA' 0 2 19171 0.1325 0.1390 0.1372 0.1195 0.0838 0.3880 'FA' 1 0 46410 0.2750 0.2450 0.1839 0.1179 0.0601 0.1181 'FA' 1 1 36724 0.2363 0.2224 0.1903 0.1309 0.0744 0.1457 'FA' 1 2 27672 0.1792 0.1821 0.1677 0.1305 0.0830 0.2575 'FA' 2 0 19055 0.2988 0.2534 0.1802 0.1083 0.0489 0.1104 'FA' 2 1 23975 0.2792 0.2444 0.1871 0.1143 0.0573 0.1177 'FA' 2 2 26554 0.2320 0.2183 0.1820 0.1207 0.0717 0.1753 'FA' 3 0 7055 0.3076 0.2564 0.1711 0.0985 0.0394 0.1270 'FA' 3 1 12603 0.3098 0.2614 0.1780 0.1023 0.0438 0.1047 'FA' 3 2 20254 0.3049 0.2546 0.1775 0.0958 0.0469 0.1203
Slider Type B S # Fat Side Edge Off Wide Other 'SL' 0 0 22066 0.2667 0.2444 0.1936 0.1254 0.0653 0.1046 'SL' 0 1 14158 0.2195 0.2103 0.1993 0.1492 0.0981 0.1236 'SL' 0 2 8108 0.1511 0.1600 0.1761 0.1623 0.1306 0.2199 'SL' 1 0 8414 0.2857 0.2488 0.1904 0.1222 0.0647 0.0882 'SL' 1 1 11061 0.2417 0.2316 0.2025 0.1446 0.0805 0.0991 'SL' 1 2 12460 0.1892 0.1897 0.1840 0.1636 0.1139 0.1596 'SL' 2 0 1954 0.2897 0.2625 0.1832 0.1059 0.0614 0.0973 'SL' 2 1 4732 0.2980 0.2473 0.1972 0.1145 0.0651 0.0779 'SL' 2 2 9801 0.2355 0.2182 0.1975 0.1462 0.0903 0.1123 'SL' 3 0 171 0.2865 0.2515 0.1871 0.1170 0.0468 0.1111 'SL' 3 1 1089 0.3067 0.2498 0.2048 0.1120 0.0533 0.0734 'SL' 3 2 4475 0.3055 0.2550 0.1837 0.1180 0.0570 0.0808
by Dan Turkenkopf on Dec 31, 2008 10:36 PM EST up reply actions 0 recs
I found an error
in my slg calcs – fixing it now (not sure of the impact yet)
by Harry Pavlidis on Dec 31, 2008 12:17 AM EST reply actions 0 recs
ouch
yep, I’ve made this mistake before. Over counting pitches, and skewing the #‘s … I’ll re-run all this baseline stuff, triple-check it and make a new post out of it.
by Harry Pavlidis on Dec 31, 2008 12:19 AM EST up reply actions 0 recs

by 













BtB on Facebook














