書籍概要

Rによるセイバーメトリクス入門

著者
発売日
更新日

概要

セイバーメトリクスとは,ベースボールのデータを利用して戦術を分析することです。本書は,データアナリスト,野球愛好家にRを利用したセイバーメトリクスを紹介します。Rは,データの読み込み,適切なフォーマットへの変換,グラフによるデータの視覚化,統計分析の実行まで,すべての分析ステップを完結できる便利なソフトウェアです(使用されているすべてのデータセットとRコードはオンラインから利用できます)。

第2版では,Rのモダンなデータ分析を可能にするtidyverseを採用し,選手やボールの動きを高速・高精度に分析するために必須となったStatcastによるプレーヤ追跡データを加筆しました。初版のすべてのコードをtidyverseに準拠して修正しました。さまざまなベースボールのプレーとそのデータを通して,モダンなRの利用方法とセイバーメトリクスについて学習できます。

こんな方におすすめ

  • セイバーメトリクスに興味のある方
  • 野球愛好家
  • データアナリスト

目次

第1章 野球データセット

  • 1.1 イントロダクション
  • 1.2 Lahman データベース:シーズンごとのデータ
    • 1.2.1 スラッガーたちのホームラン数の推移
    • 1.2.2 データの取得
    • 1.2.3 Master テーブル
    • 1.2.4 Batting テーブル
    • 1.2.5 Pitching テーブル
    • 1.2.6 Fielding テーブル
    • 1.2.7 Teams テーブル
    • 1.2.8 クイズ
  • 1.3 Game-by-Game(試合ごとのデータ)
    • 1.3.1 1998 年のMcGwireとSosaのホームラン王争い
    • 1.3.2 Retrosheet
    • 1.3.3 Game Logs
    • 1.3.4 RetrosheetからGame logを取得
    • 1.3.5 Game logの例
    • 1.3.6 クイズ
  • 1.4 Play-by-Play(打席ごとのデータ)
    • 1.4.1 Event files
    • 1.4.2 イベントの例
    • 1.4.3 クイズ
  • 1.5 投球ごとのデータ
    • 1.5.1 MLBAM GamedayとPITCHf/x
    • 1.5.2 PITCHf/xの例
    • 1.5.3 クイズ
  • 1.6 プレイヤーの動きと打球のデータ
    • 1.6.1 Statcast
    • 1.6.2 Baseball Savant data
    • 1.6.3 クイズ
  • 1.7 まとめ
  • 1.8 参考文献
  • 1.9 演習

第2章 R入門

  • 2.1 イントロダクション
  • 2.2 RとRStudioのインストール
  • 2.3 Tidyverse
    • 2.3.1 dplyr
    • 2.3.2 Pipe
    • 2.3.3 ggplot2
    • 2.3.4 他のパッケージ
  • 2.4 データフレーム
    • 2.4.1 Warren Spahn のキャリア
    • 2.4.2 データフレーム
  • 2.5 データフレームの操作
    • 2.5.1 データフレームの結合・抽出
  • 2.6 ベクトル
    • 2.6.1 ベクトルの定義・計算
    • 2.6.2 ベクトルに関する関数群
    • 2.6.3 ベクトルインデックスと論理変数
  • 2.7 Rにおけるオブジェクトとコンテナ
    • 2.7.1 Characterデータとデータフレーム
    • 2.7.2 Factors
    • 2.7.3 Lists
  • 2.8 まとまったRコマンド
    • 2.8.1 Rのスクリプト
    • 2.8.2 Rの関数
  • 2.9 データの読み込みと書き込み
    • 2.9.1 ファイルから読み込む
    • 2.9.2 データセットの保存
  • 2.10 パッケージ
  • 2.11 データの分割,適用,結合
    • 2.11.1 map 関数を使った繰り返し処理
    • 2.11.2 他の例
  • 2.12 ヘルプの活用
  • 2.13 参考文献
  • 2.14 演習

第3章 グラフィックス

  • 3.1 イントロダクション
  • 3.2 Character 変数
    • 3.2.1 棒グラフ
    • 3.2.2 軸のラベルとタイトルを追加する
    • 3.2.3 Character 変数を使った他の種類のグラフ
  • 3.3 グラフの保存
  • 3.4 Numeric 変数:一次元の散布図とヒストグラム
  • 3.5 2つのNumeric変数
    • 3.5.1 散布図
    • 3.5.2 グラフの作成
  • 3.6 Numeric変数とFactor変数
    • 3.6.1 並列一次元散布図
    • 3.6.2 並列箱ひげ図
  • 3.7 Ruth,Aaron,Bonds,A-Rodの比較
    • 3.7.1 データの取得
    • 3.7.2 プレイヤーのデータフレームの作成
    • 3.7.3 グラフの作成
  • 3.8 1998年のホームラン王争い
    • 3.8.1 データの取得
    • 3.8.2 変数の抽出
    • 3.8.3 グラフの作成
  • 3.9 参考文献
  • 3.10 演習

第4章 得点と勝利の関係

  • 4.1 イントロダクション
  • 4.2 Lahman DatabaseにおけるTeamsテーブル
  • 4.3 線形回帰
  • 4.4 ピタゴラス勝率
    • 4.4.1 ピタゴラスモデルの指数
    • 4.4.2 ピタゴラスモデルの良い予測と悪い予測
  • 4.5 1勝に必要な得点数
  • 4.6 参考文献
  • 4.7 演習

第5章 得点期待値を用いたプレーの価値

  • 5.1 得点期待値行列
  • 5.2 イニングの残りで記録された得点
  • 5.3 行列の作成
  • 5.4 打撃プレーの価値の把握
  • 5.5 Jośe Altuve
  • 5.6 全バッターの打撃機会とパフォーマンス
  • 5.7 打順
  • 5.8 ヒットの種類による得点価値の違い
    • 5.8.1 ホームランの価値
    • 5.8.2 シングルヒットの価値
  • 5.9 盗塁の価値
  • 5.10 参考文献とソフトウェア
  • 5.11 演習

第6章 ボール球とストライク球の効果

  • 6.1 イントロダクション
  • 6.2 バッターのカウントとピッチャーのカウント
    • 6.2.1 あるピッチャーの例
    • 6.2.2 Retrosheet からピッチシークエンスを検討する
    • 6.2.3 カウントごとの予測される得点価値
    • 6.2.4 打席における「経過したカウント」の重要性
  • 6.3 カウントによる行動
    • 6.3.1 カウントによるスイングの傾向
    • 6.3.2 ボール/ストライクカウントの影響
    • 6.3.3 カウントによる投球の選択8
    • 6.3.4 カウントによる球審の行動
  • 6.4 参考文献
  • 6.5 演習

第7章 フレーミング

  • 7.1 イントロダクション
  • 7.2 投球の詳細データ(pitch-level)の取得
  • 7.3 ストライクゾーンはどこか
  • 7.4 ストライク判定確率をモデリング
    • 7.4.1 推定結果の可視化
    • 7.4.2 推定した平面の可視化
    • 7.4.3 利き腕の調整
  • 7.5 フレーミングのモデリング
  • 7.6 参考文献
  • 7.7 演習

第8章 選手の成績推移

  • 8.1 イントロダクション
  • 8.2 Mickey Mantle の打撃成績推移
  • 8.3 成績推移の比較
    • 8.3.1 事前準備
    • 8.3.2 通算成績のを計算
    • 8.3.3 類似性スコアの計算
    • 8.3.4 年齢,OBP(出塁率),SLG(長打率),OPS の定義
    • 8.3.5 成績推移に対するフィッティングとプロット
  • 8.4 ピーク時の年齢の一般的なパターン
    • 8.4.1 全選手に対する成績推移の推定
    • 8.4.2 ピーク時の年齢の変化
    • 8.4.3 ピーク時の年齢と通算打数
  • 8.5 成績推移とポジション
  • 8.6 参考文献
  • 8.7 演習

第9章 シミュレーション

  • 9.1 イントロダクション
  • 9.2 イニング途中のシミュレーション
    • 9.2.1 マルコフ連鎖
    • 9.2.2 得点期待値を使った評価
    • 9.2.3 遷移確率の計算
    • 9.2.4 マルコフ連鎖によるシミュレーション
    • 9.2.5 得点期待値のその先
    • 9.2.6 チームごとの遷移確率
  • 9.3 シーズンのシミュレーション
    • 9.3.1 Bradley-Terry モデル
    • 9.3.2 スケジュールを組み立てる
    • 9.3.3 素質のシミュレーションと勝率の計算
    • 9.3.4 レギュラーシーズンのシミュレーション
    • 9.3.5 ポストシーズンのシミュレーション
    • 9.3.6 1シーズンをシミュレーションする関数
    • 9.3.7 たくさんのシーズンをシミュレーションする
  • 9.4 参考文献
  • 9.5 演習

第10章 バッターの好不調分析

  • 10.1 イントロダクション
  • 10.2 好調
    • 10.2.1 連続試合安打を見つける
    • 10.2.2 移動平均を考慮した打率
  • 10.3 各選手の打数レベルでの連続安打
    • 10.3.1 安打とアウトの連続
    • 10.3.2 移動平均打率
    • 10.3.3 全選手のスランプを見つける
    • 10.3.4 イチローとMike Troutの連続安打は異常か?
  • 10.4 Statcastにおける打球速度の特有パターン
  • 10.5 参考文献
  • 10.6 演習

第11章 データベースを利用したパークファクターの計算

  • 11.1 イントロダクション
  • 11.2 MySQL のインストールとデータベースの作成
  • 11.3 R からMySQL への接続
    • 11.3.1 RMySQL を使った接続
    • 11.3.2 R から他のデータベースへの接続
  • 11.4 R からMySQL のGame log データベースへの入力
    • 11.4.1 Retrosheet からR へ
    • 11.4.2 R からMySQL へ
  • 11.5 Rからクエリを実行する
    • 11.5.1 イントロダクション
    • 11.5.2 Coors Fieldと得点の関係
  • 11.6 独自の野球データベースの構築
    • 11.6.1 Lahmanのデータベース
    • 11.6.2 Retrosheetのデータベース
    • 11.6.3 PITCHf/xのデータベース
    • 11.6.4 Statcastのデータベース
  • 11.7 基本的なパークファクターの計算
    • 11.7.1 Rにデータを読み込む
    • 11.7.2 ホームランに与えるパークファクターの影響
    • 11.7.3 提案アプローチの仮定
    • 11.7.4 パークファクターの適用
  • 11.8 参考文献
  • 11.9 演習

第12章 Statcastの打球データ

  • 12.1 イントロダクション
  • 12.2 スプレーチャート
    • 12.2.1 1年分のStatcastデータの取得
    • 12.2.2 打球方向の傾向と内野守備
  • 12.3 打球角度と打球速度
    • 12.3.1 打球角度vs打球速度の散布図
  • 12.4 ホームラン確率のモデリング
    • 12.4.1 一般化加法モデル(GAM)
    • 12.4.2 滑らかな予測
    • 12.4.3 2017シーズンのホームランを推定
  • 12.5 打球角度は能力なのか
    • 12.5.1 打球角度の分布
    • 12.5.2 シーズン前半の打球角度とシーズン後半の打球角度の相関
  • 12.7 演習

付録A Retrosheetファイルの説明

  • A.1 打席ごとのデータファイルのダウンロード
  • A.1.1 イントロダクション
  • A.1.2 セットアップ
  • A.1.3 特定シーズンへの関数の使用
  • A.1.4 ファイルの読み込み
  • A.1.5 parse retrosheet pbp関数
  • A.2 event file:簡潔なリファレンス
    • A.2.1 試合とイベントの識別子
    • A.2.2 試合の状態
  • A.3 ピッチシークエンスのパース
    • A.3.1 イントロダクション
    • A.3.2 セットアップ
    • A.3.3 全カウントの評価

付録B MLBAM Gameday・PITCHf/xデータの活用

  • B.1 イントロダクション
  • B.2 データが保存されている場所
  • B.3 PITCHf/xデータを用いた分析
    • B.3.1 オンラインリソースからデータを取得
    • B.3.2 Rによる解析
    • B.3.3 XMLの展開
    • B.3.4 pitchRx:PITCHf/xデータのためのR関数
  • B.4 データの詳細
    • B.4.1 atbatに関する要素
    • B.4.2 pitchに関する要素
    • B.4.3 hipに関する要素(打球位置のデータ)
  • B.5 Gameday and PITCHf/xデータに関するメモ
  • B.6 雑集
    • B.6.1 投球の軌道を計算
    • B.6.2 他のデータソースとのクロスリファレンス
    • B.6.3 オンラインリソース

付録C Statcastデータの活用

  • C.1 イントロダクション
  • C.2 試合のシチュエーション変数
  • C.3 投球に関する変数
  • C.4 プレーのイベント変数
  • C.5 打球に関する変数
  • C.6 導出される変数
  • C.7 守備変数
  • 参考文献

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2020年11月9日最終更新)

2章 P.63

訳注11の記載に漏れがありました。
訳注11 geom_smooth関数の計算結果を描画しています。詳細はRDocumentationを参考してください。
https://www.rdocumentation.org/packages/ggplot2/versions/0.9.0/topics/geom_smooth

3章 P.75

訳注3の記載に漏れがありました。
訳注3 見やすさのため、geom_jitterを使用し、正規乱数を発生させ、元々の値に足し算した値(ここでは1+ε)をプロットしています。

商品一覧