LoginSignup
7
0

More than 5 years have passed since last update.

先制点における勝率の二項ロジスティック回帰モデル

Last updated at Posted at 2018-12-14

はじめに

今回初めてAdvent calendarに参加しました学部3年の齋藤です。今回は実際のデータから作成した野球の統計モデルを紹介していきたいと思います。

狙い

  • 過去の先制点に着目した勝率から傾向を見つけて今後の試合展開に役立てる(ための第一歩)。
  • 身近な興味のあるものをモデリングしてみよう(とするための第一歩)。

モデル詳細

今回、試合終盤に先制した方が勝率が高くなると仮説を立て、かつ勝率が0~1で収まるためロジスティック回帰モデルを採用しました。

ロジスティック回帰とは

応答変数が2値で表す場合に用いるモデルであり,関係式はロジスティック方程式(シグモイド関数)となり数式で表すと


Pr(Y|X)=\frac{1}{1+e^{-(b_0+b_1x_1+…+b_nx_n)} }

と表せる。数式におけるb_1,b_2...を回帰係数、b_0を定数項と呼ぶ。
今回、説明変数xを先制した得点x_1(Score)とイニングx_2(Inning)、応答変数Prを勝敗Pr(1:勝ち0:負け)(Result)とした。また、各説明変数の係数は推定の事後平均値を算出用いて以下のようになった。

b_0 b_1 b_2
-0.02651897 0.74092991 0.03217324

データ

六大学準硬式野球過去10年分のデータ(取れるだけ全部)
参照サイト(以下)をcsvファイルとして作成した。

Score Inning Result
3 1 1
4 1 1
2 1 1
2 1 1
1 1 1

サンプルコード

qiita.R
library(rstan)

d <- read.csv(file='NLab.csv')
data <- list(N=nrow(d), S=d$score, I=d$inning, R=d$result)
fit <- stan(file='NLab.stan', data=data, seed=1234)

plot(fit)

qiita.stan
data{
  int N;
  int<lower=0> S[N];
  int<lower=0> I[N];
  int<lower=0, upper=1> R[N];
}

parameters {
  real b[3];
}

transformed parameters {
  real q[N];
  for (n in 1:N)
    q[n] = inv_logit(b[1] + b[2]*S[n] + b[3]*I[n]);
}

model{
  for (n in 1:N)
    R[n] ~ bernoulli(q[n]);
}

結果

横軸をイニング、縦軸を勝率とし数値化、可視化した結果以下のようになった。
横軸を得点にしたものも作成したが線形になったため割愛させていただきます。。

先制した得点数が1点の時の勝率 先制した得点数が3点の時の勝率 先制した得点数が5点以上の時の勝率
[1,] 0.6702522 [1,] 0.6667553 [1,] 0.6548684
[2,] 0.8104221 [2,] 0.8075978 [2,] 0.7992219
[3,] 0.8999064 [3,] 0.8980191 [3,] 0.8930583
[4,] 0.9497703 [4,] 0.9486481 [4,] 0.9460020
[5,] 0.9754705 [5,] 0.9748461 [5,] 0.9735122
[6,] 0.9881847 [6,] 0.9878499 [6,] 0.9871966
[7,] 0.9943470 [7,] 0.9941714 [7,] 0.9938558
[8,] 0.9973041 [8,] 0.9972132 [8,] 0.9970618
[9,] 0.9987163 [9,] 0.9986697 [9,] 0.9985973

先制した得点数が1点の時の勝率
Rplot01.png
先制した得点数が3点の時の勝率
Rplot03.png
先制した得点数が5点以上の時の勝率
Rplot05.png

さらに各イニングのオッズ比を比較すると以下のようになった。
表の読み方として、右上の赤縁の数字を用いて説明させていただくと9回に先制して勝つ確率は1回に先制して勝つ確率の382.7708倍であることを表している。
スクリーンショット 2018-12-10 14.21.59.png

考察&まとめ

仮説通り終盤のイニングで先制した方が勝率が高くなった。
ただし多く得点しても勝率にあまり変化はなかった。
→先制得点が少ない時は投手戦(少ない点で勝敗が決まる試合)であり、先制得点が多い時は乱打戦(得点をたくさん取り合う試合)になっていると考えたため。

謝辞

だいぶ偏った内容となりましたが最後までお読みいただきありがとうございました。

参考文献

StanとRでベイズ統計モデリング 共立出版 松浦健太郎著書

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0