見出し画像

【baseballr大解剖】第4章 セイバーメトリクス

baseballrに収録されているコードの解説文を日本語訳したnoteです。

目次
第1章 データの情報源
第2章 各種ID
第3章 データ取得 part1
第4章 セイバーメトリクス
第5章 データ取得 part2
第6章 エラー・不明・辞書など
 

第1〜3章はこちら

①wOBA

woba_plus(df)

各打者のwOBAを計算してくれる。

dfに最低限入ってる必要なデータは以下。

at a minimum, the following columns: 
uBB (unintentional walks)
HBP (Hit By Pitch)
X1B (singles), X2B (doubles), X3B (triples), HR (home runs)
AB (at-bats),  SH (sacrifice hits), SO (strike outs), and season.

手っ取り早いのは、baseball_referenceから取得したデータを入れること。他サイトからのデータだと、列名の違いが原因でエラーになる。


j <- fg_guts()

このコードを実行すると、wOBA計算で用いる係数を取得できる。なんと1871年の係数まで遡れる。


②FIP

q <- fip_plus(b)

投手の通年データからFIP被wOBA、被wOBA_CONを計算するコード。

必要なデータはこちら

A data frame of statistics that includes, at a minimum, the following columns: IP (innings pitched), BF (batters faced), 
uBB (unintentional walks), HBP (Hit By Pitch), 
x1B (singles), x2B (doubles), x3B (triples), HR (home runs), 
AB (at-bats), SH (sacrifice hits), SO (strike outs), and season.

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データ)から、打球が飛んだ位置のスプレッドチャートを作るコード。

例)

2022年前半のMILデータから作った


⑤イベントの得点価値係数

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)

シーズンの失点と失点阻止の一貫性を計算するコード。何に使うんだろ。


この記事が気に入ったらサポートをしてみませんか?