【baseballr大解剖】第5, 6章
baseballrに収録されているコードの解説文を日本語訳したnoteです。
第1~4章までのnoteはこちら。
5.1 試合情報
・日程
a57 <- mlb_schedule(season = 2022, level_ids = "1")
a58 <- mlb_schedule_event_types()
a59 <- mlb_schedule_games_tied(season = 2022)
a60 <- mlb_schedule_postseason(season = 2021)
a61 <- mlb_schedule_postseason_series(season = 2021, sport_id = 1)
a25 <- mlb_game_status_codes()
a27 <- mlb_game_types()
任意のシーズンと階級の年間スケジュールを取得するコード。
…tiedのは、MLBの引き分け試合の情報を取得できる。a60とa61はポストシーズンの情報。詳しい中身はa25やa27を参照する。
・メイン
w <- get_game_pks_mlb(date = "2022-05-17", level_ids = c(1))
任意の日付に開催された試合の情報を取得するコード。
・サブ
u <- get_game_info_mlb(game_pk = 661196)
u <- mlb_game_info(game_pk = 661196)
v <- get_game_info_sup_petti()
v <- load_game_info_sup()
天候、気温、試合開始時間、観客数などを取得できる。
下ふたつは、2008年以降全試合の情報を拾うコード。
・打順
r <- get_batting_orders(game_pk = 661196, type = "starting")
s <- get_batting_orders(game_pk = 661196, type = "all")
s <- mlb_batting_orders(game_pk = 661196, type = "all")
任意の試合の打順を取得できる。
・先発投手
a2 <- get_probables_mlb(game_pk = 661196)
a2 <- mlb_probables(game_pk = 661196)
任意の試合の、先発投手を取得するコード。データは2×8列。
・観客動員数
a11 <- mlb_attendance(team_id = 158, season = 2021)
a111 <- mlb_attendance(league_id = 104, season = 2021, date = NULL,
league_list_id = NULL)
ひとつの球団、あるいはリーグごとの観客数を取得するコード。引数dateがNULLの場合、年間動員数を得られる。
・中継放送
a20 <- mlb_game_content(game_pk = 661196)
・その他
a23 <- mlb_game_pace(season = 2022, start_date = "2022-04-07", end_date = "2022-04-10")
任意の期間における、試合ペース(試合時間、平均球数など)を取得できる。
5.2 選手・球団情報
・biography
a45 <- mlb_people(person_ids = 592885)
a68 <- mlb_sports_players(sport_id = 1, season = 2021)
MLBIDをもとに任意の選手のバイオグラフィーを取得できる。a68は、全選手の分を取得できるコード。
・フロント
a84 <- mlb_team_personnel(team_id = 158, date = "08/28/2017")
フロント職の人名を取得できる。しかし、2018年以降のデータは拾えない。
・コーチ
a80 <- mlb_team_coaches(team_id = 158, season = 2021)
任意のチーム、シーズンのコーチ編成。
・球団ヒストリー
a81 <- mlb_team_history(team_ids = 158)
a82 <- mlb_team_info(team_id = 158)
任意のチームの歴史(MILだったら、前身はパイロッツだったことなど)
・マイナーリーグ
a78 <- mlb_team_affiliates(team_ids = 158, sport_ids = 1)
任意のチームの傘下球団の情報
a98 <- teams_lu_table
全球団のマイナー球団の情報を取得できる。しかし、MILのAAAチーム「Nashvile Sounds」の親チームがTEXになっていた。信用ならない。
・審判、その他
a4 <- get_umpire_ids_petti()
a4 <- load_umpire_ids()
2008年以降の全試合の審判に関する情報を取得できる。
a35 <- mlb_job_types()
a36 <- mlb_jobs(job_type = "UMPR", sport_id = 1, date = "2022-04-10")
a37 <- mlb_jobs_datacasters(sport_id = 1)
a38 <- mlb_jobs_official_scorers(sport_id = 1)
a39 <- mlb_jobs_umpires(sport_id = 1)
MLBに携わる様々な役職の情報(?)を取得できる。
5.3 その他
・オールスター投票
a7 <- mlb_all_star_write_ins(league_id = 103, season = 2021)
a8 <- mlb_all_star_ballots(league_id = 103, season = 2021)
a9 <- mlb_all_star_final_vote(league_id = 103, season = 2021)
オールスターに参加資格のある選手
→ファン投票でピックアップされた選手
→最終投票で選出された選手
・ホームランダービー
a32 <- mlb_homerun_derby(game_pk = 511101)
a33 <- mlb_homerun_derby_bracket(game_pk = 511101)
a34 <- mlb_homerun_derby_players(game_pk = 511101)
打球が飛んだ位置とかが拾える。
・ドラフト
t <- get_draft_mlb(year = 2020)
t <- mlb_draft(year = 2020)
t1 <- mlb_draft_latest(year = 2020)
t2 <- mlb_draft_prospects(year = 2021)
任意の年のドラフト情報を拾うコード。
t1は、最も新しく(全体最下位で)指名された選手の情報を拾う。
t2はドラフト対象選手全てを取得する関数と推測される。
・FA情報
a46 <- mlb_people_free_agents(season = 2021)
・ロースター
a54 <- mlb_roster_types()
a55 <- mlb_rosters(team_id = 111, date = NULL, season = 2022, roster_type = "40Man")
以降、第6章「エラー・不明」
6.1 エラー
edge判定
edge_code(df, height_var_name = "b_height")
edge_frequency(df, group = NULL)
PITCHf/xデータをもとに、Edgeゾーンに投球されたどうかを判定するコード。打者の身長と立ち位置(右or左)、投球ゾーンのデータが必要。それをもとに、edgeゾーンに投球された割合を求める。
PITCHf/xの運用が止まっているという噂を耳にしたので深入りしない。
a51 <- mlb_player_game_stats(person_id = 592885, game_pk = 661196)
a52 <- mlb_player_game_stats_current(person_id = 623352)
a62 <- mlb_seasons(sport_id = 1, with_game_type_dates = TRUE)
a63 <- mlb_seasons_all(sport_id = 1)
a79 <- mlb_team_alumni(team_id = 137, stat_group = 'hitting', season = 2021)
上のコードを実行したら、こんなエラーが出た。
Request failed [500]. Retrying in 1 seconds...
Request failed [500]. Retrying in 1 seconds...
2022-07-21 17:29:12: Invalid arguments provided
6.2 辞書
データフレームの列名やデータが省略表記されていることが多く、それの索引みたいな役割を果たすのがこれらのコード。
a17 <- mlb_event_types() #イベント内容, scデータと参照すべき(70×5)
a31 <- mlb_hit_trajectories() #ヒットのタイプ情報(7×2)
a40 <- mlb_languages() #言語(4×3)
a41 <- mlb_league(seasons = 2021, sport_id = 1) #リーグ情報(4×20)
a44 <- mlb_metrics() #単位に関する情報(21×4)
a48 <- mlb_pitch_types() #球種(24×2)
a49 <- mlb_player_status_codes() #ロースターステータス(32×2)
a50 <- mlb_positions() #(37×11)
a53 <- mlb_review_reasons() #(24×2)
a56 <- mlb_runner_detail_types() #(31×1)
a58 <- mlb_schedule_event_types() #(19×2)
a64 <- mlb_situation_codes() #(64×8)
a65 <- mlb_sky() #天候
a66 <- mlb_sports() #sports_id(15×7)
a67 <- mlb_sports_info(sport_id = 1) #(1×7)
6.3 謎
データの使い道がピンとこない
h <- column_structure_draft_mlb #ドラフト情報の列のみ
a18 <- mlb_fielder_detail_types() #(18×5)
a21 <- mlb_game_context_metrics(game_pk = 531060,
timecode = "20180803_182458") #(1×63)
a42 <- mlb_league_leader_types #(70×1)
a43 <- mlb_logical_events #(73×1)
a47 <- mlb_pitch_codes() #(32×2)
a88 <- most_recent_mlb_season() #最新のシーズンを返す関数
a89 <- most_recent_ncaa_baseball_season()
a92 <- process_statcast_payload(sc2022)
中身も意味不明
a19 <- mlb_game_changes(updated_since = "2021-08-10", sport_id = 1) #(1000×66)
a95 <- statcast_impute
a97 <- stats_api_live_empty_df