【baseballr大解剖】第4章 セイバーメトリクス
baseballrに収録されているコードの解説文を日本語訳したnoteです。
第1〜3章はこちら
①wOBA
woba_plus(df)
各打者のwOBAを計算してくれる。
dfに最低限入ってる必要なデータは以下。
手っ取り早いのは、baseball_referenceから取得したデータを入れること。他サイトからのデータだと、列名の違いが原因でエラーになる。
j <- fg_guts()
このコードを実行すると、wOBA計算で用いる係数を取得できる。なんと1871年の係数まで遡れる。
②FIP
q <- fip_plus(b)
投手の通年データからFIPと被wOBA、被wOBA_CONを計算するコード。
必要なデータはこちら
wOBA_plus()と同様、baseball_referenceデータを入れるのが最も手っ取り早い。
③パークファクター
m <- fg_park(2021)
n <- fg_park_hand(2021)
各球場のパークファクターが収録されている。
handのほうは打席位置が考慮されたパークファクターが収録されている。
④スプレッドチャート
a3 <- ggspraychart(sc2022 %>% filter(player_name == "Yelich Christian"),
x_value = "hc_x", y_value = "-hc_y",
fill_value = NULL, fill_palette = NULL, fill_legend_title = NULL,
density = FALSE, bin_size = 15, point_alpha = 0.75,
point_size = 2, frame = NULL)
scrape_statcast_savantで取得したデータ(以降、scデータ)から、打球が飛んだ位置のスプレッドチャートを作るコード。
例)
⑤イベントの得点価値係数
a6 <- run_expectancy_code(sc2022, level = "plate appearance") %>%
linear_weights_savant()
scデータをもとに、イベントの線形重み付け値を求めるコード。
⑥バレル判定
g <- code_barrel(sc2022)
scデータのlaunch_angleとLaunch_speedをもとに、その打球がバレルか否かを計算するコード。カッコ内にscデータを入れて実行すると、barrel列が追加される。
barrelの打球には1、そうでない打球は0、非インプレイにはNA。
⑦勝利確率
a28 <- mlb_game_wp(game_pk = 661196)
打席ごとの勝利確率変動とレバレッジ係数を取得できる。
⑧得点期待値
a93 <- run_expectancy_code(sc2022, level = "plate appearance")
scデータから得点期待値などを計算してくれる。
『Rによるセイバーメトリクス入門』では、得点期待値計算でretrosheetを用いているが、この関数を使ってscデータでも計算できる。このコードを見つけただけでも、このまとめ作業をやった価値あり。
⑨打球角度&速度
a5 <- label_statcast_imputed_data(statcast_df, impute_file = NULL, inverse_precision = 10000)
scデータのlaunch_speedとlaunch_angleの値にinverse_precisionで設定した値を掛けた値を返すコード。
⑩Standard成績
a96 <- statline_from_statcast(sc2022, base = "pa")
scデータをもとに、スタッツを計算してくれる。
引数baseには"pa"、"swings"、"contact"の3つ。デフォは"pa"。
⑪その他
a99 <- team_consistency(year = 2021)
シーズンの失点と失点阻止の一貫性を計算するコード。何に使うんだろ。