いわゆる"ノビのあるストレート"の性能を評価したいと思います.
pitch f/x のデータから, ボールの垂直上方向変化に注目. 空振り率の高さを計算して, ノビについて考えます.
2013年のMLB全試合の全投球のデータを利用して, 集計していきます.
library(data.table)
library(dplyr)
library(xtable)
library(magrittr)
library(ggplot2)
data_file = "../../../../Box Sync/pitch_fx/2013.csv"
dat = fread(data_file)
Read 0.0% of 764814 rows Read 9.2% of 764814 rows Read 22.2% of 764814 rows Read 28.8% of 764814 rows Read 35.3% of 764814 rows Read 41.8% of 764814 rows Read 49.7% of 764814 rows Read 56.2% of 764814 rows Read 64.1% of 764814 rows Read 71.9% of 764814 rows Read 79.8% of 764814 rows Read 88.9% of 764814 rows Read 99.4% of 764814 rows Read 764814 rows and 53 (of 53) columns from 0.381 GB file in 00:00:21
dat = dat %>% dplyr::filter(ax != "NA")
dat_FF = dat %>% dplyr::filter(pitch_type=="FF")
“空振り率"で, 伸びのあるストレートの性能を評価したいと思います.
空振り率は, \[ \frac{\text{Swing}}{\text{FF-Pitch} -\text{Called Strike}} \] とします.
ここで,
swing :: 空振り
FF-pitch :: ストレートの投球数
Called Strike :: 見逃しストライク
です.
空振り率と, 垂直上方向の変化量との関係を確認します.
pitch f/x のデータにある pfx_z は, 質点を仮定した場合のボールと比べて, どの程度ホップアップしたか…ということを表すという数値です.
普通の質点と, バックスピンのかかったボール. 後者のほうが, 落ちにくくなります.つまりノビです. pfx_zという数値は, ボールのノビを表していると考えていいと思います.
早速, 集計していきます.
dat_FF_swingrate =
dat_FF %>%
select(pitcher_name, start_speed, des, pfx_z) %>%
mutate(pfx_z = as.numeric(pfx_z)) %>%
mutate(calledStrike = (des=="Called Strike")) %>%
mutate(swingingStrike = (des == "Swinging Strike")) %>%
group_by(pitcher_name) %>%
dplyr::summarise(nobi = mean(pfx_z)*2.5,
speed = mean(as.numeric(start_speed) * 1.6),
calledStrike = sum(calledStrike),
swingingStrike = sum(swingingStrike, na.rm=TRUE),
pitches = n()) %>%
dplyr::filter(pitches > 200) %>%
mutate(swingRate = swingingStrike / (pitches - calledStrike))
dat_FF_swingrate %>%
arrange(desc(swingRate)) %>%
select(pitcher_name, swingRate) %>%
head(20) %>%
xtable(digits = 4) %>% print("html")
| pitcher_name | swingRate | |
|---|---|---|
| 1 | Darren O'Day | 0.2000 |
| 2 | Caleb Thielbar | 0.1940 |
| 3 | Ernesto Frieri | 0.1928 |
| 4 | Aroldis Chapman | 0.1892 |
| 5 | Casey Fien | 0.1818 |
| 6 | Danny Salazar | 0.1602 |
| 7 | Tyler Clippard | 0.1599 |
| 8 | Jim Henderson | 0.1587 |
| 9 | Trevor Rosenthal | 0.1572 |
| 10 | Robert Coello | 0.1561 |
| 11 | Jared Burton | 0.1488 |
| 12 | Jason Grilli | 0.1459 |
| 13 | Koji Uehara | 0.1441 |
| 14 | Craig Kimbrel | 0.1417 |
| 15 | Sean Doolittle | 0.1414 |
| 16 | Michael Kohn | 0.1413 |
| 17 | Glen Perkins | 0.1394 |
| 18 | Carter Capps | 0.1390 |
| 19 | Kelvin Herrera | 0.1374 |
| 20 | Joshua Fields | 0.1365 |
4位のチャップマン. 170kmのストレートを投げます.
上原が13位ですか.
dat_FF_swingrate %>%
arrange(desc(nobi)) %>%
select(pitcher_name, nobi) %>%
head(20) %>%
xtable(digits = 4) %>% print("html")
| pitcher_name | nobi | |
|---|---|---|
| 1 | Antonio Bastardo | 30.1465 |
| 2 | Josh Collmenter | 29.7795 |
| 3 | Andrew Bailey | 29.1244 |
| 4 | Matt Reynolds | 28.9786 |
| 5 | Evan Scribner | 28.6614 |
| 6 | Jake Odorizzi | 28.5236 |
| 7 | Chris Tillman | 28.1677 |
| 8 | Jesse Crain | 27.9543 |
| 9 | Matt Magill | 27.6820 |
| 10 | Tommy Hanson | 27.6119 |
| 11 | Koji Uehara | 27.4776 |
| 12 | Brian Matusz | 27.4275 |
| 13 | Clayton Kershaw | 27.3777 |
| 14 | Marco Estrada | 27.0921 |
| 15 | Kevin Slowey | 27.0741 |
| 16 | Tim Collins | 26.9664 |
| 17 | Greg Holland | 26.9479 |
| 18 | Tommy Milone | 26.8249 |
| 19 | Tony Sipp | 26.6869 |
| 20 | Wandy Rodriguez | 26.6627 |
## 平均.
dat_FF_swingrate %>%
dplyr::summarise(nobi = mean(nobi)) %>%
xtable(digit = 4) %>% print("html")
| nobi | |
|---|---|
| 1 | 19.1602 |
上原が11位.
縦方向の変化と空振り率との関係を, プロットしてみます.
dat_FF_swingrate %>%
ggplot(aes(x = nobi, y = swingRate)) +
geom_point(size = 3) + stat_smooth(method="lm") +
ggtitle("Hop-Up vs Swing-Rate (Four-seam Fast)") +
theme(plot.title = element_text(face="bold", size=24))
やっぱりスピードのほうが大事なんですかね? 初速と空振り率の関係を, プロットしてみます.
dat_FF_swingrate %>%
ggplot(aes(x = speed, y = swingRate)) +
geom_point(size = 3) + stat_smooth(method="lm") +
ggtitle("Speed vs Swing-Rate (Four-seam Fast)") +
theme(plot.title = element_text(face="bold", size=24))
おまけ. ストレートとノビ.
dat_FF_swingrate %>%
ggplot(aes(x = speed, y = nobi)) +
geom_point(size = 3) + stat_smooth(method="lm") +
ggtitle("Speed vs Hop-Up (Four-seam Fast)") +
theme(plot.title = element_text(face="bold", size=24))
あまり関係なさそう.
単なる1つのボールの物理的な性質だけから議論するのは難しそう.
変化球の組み合わせ? フォーム?