大阪とかで働くスタッツ厨

バスケットボールのスタッツとかが好きな人。 Run and gunが大好きなサンズファン。 懐古厨。

Four Factorsで勝敗を予測できるか。――レギュラーシーズンのデータからプレイオフの結果を予測する――

どうもaoiです。

大阪は大分秋っぽくなってきた今日この頃です。

ついにNBABリーグの開幕が迫ってきましたね。非常に楽しみです。今年こそサンズのプレイオフ出場が叶うといいなあなんて思っています。

 

そんなこんなで,今日もバスケットボールと統計の話をしていきたいと思います。

今日はFour Factorsについてお話します。

Four FactorsとはDean Oliverが考案した4つの指標を指します。その目的は,いかにしてバスケットボールの試合に勝利するかという問題に対して,理解をうながす要素といったところです(出典http://www.rawbw.com/~deano/)。

なおこのDean Oliverさん何者かと言いますと,一言でいえばバスケットボールデータアナリストの走りみたいな人です。サイバーメトリクスのバスケットボール版であるAPBRmetricsを発展させたり,サクラメントキングス等のNBAチームのフロント陣として働いたりと多方面で活躍された方です(Wiki参照)。

私はBasketball on paperという彼の書いた本を参考にバスケットボールのスタッツについて勉強しました(しています)。

さて,そんな彼の提唱したFour Factorsですが,その中身は何かといいますと以下の4要素(4指標)です。

1 Shooting the ball   (eFG%)

2 Taking care of the ball (TOV%)

3 Offensive rebounding (ORB%)

4 Getting to the foul line (FTA%)

指標の式は

f:id:hoops_stats:20171114214107p:plain

順に見ていきましょう。

まず最初のシュートに関する指標は先日取り上げたeFG%が採用されています。何故TS%ではないのかの説明はありませんが,4つ目にフリースローに関する指標が採用されているので,フリースローを含むTS%は「かぶる」ために採用されなかったのかもしれません。

次のTOV%ですが,式を見るとポゼッション(オフェンス回数)に対するターンオーバーの比率になっていることが分かります。ボールを失わない=ターンオーバーをしないというデザインになっていますね。

ポゼッションの推定式も0.96を掛けたりするものやかなり複雑なものと色々あるのですが,彼は単純な推定式を採用しています。ポゼッション推定式についても後に記事にしたいと思います。

3番目はオフェンスリバウンドに関する指標で,自チームのオフェンスリバウンドが相手チームのディフェンスリバウンドと自チームのオフェンスリバウンドの合計に対する比率になっています。言い換えると,自チームのミスショットの内どれだけオフェンスリバウンドが取れるかを示す指標になっています。

最後の指標はフリースローに関するものですが,フリースロー試投数がフィールドゴール試投数に対する比率が採用されています。成功率や成功数ではなく,試投数の割合なのか彼によると長い目で見た場合数多くフリースローを打ったチームのほうが多く勝利するとのことです。

 

特に斬新なことを言っている訳ではなく,確率の高いシュート(できれば3p)を決めて,ターンオーバーを犯さず,オフェンスリバウンドを沢山取り,フリースローを沢山獲得すれば直感的にそりゃ勝てるでしょと。当たり前と言えば当たり前ですね。

Four Factorsの功績としてはしっかりとチーム戦力分析の切り口を整理したことが一つ挙げられると思います。コーチの立場に立てば,どうやってこれら指標を上向かせ(減らし)て行けるか,あるいは現状を客観的に評価するための目安といったところでしょう。

 

ここで終わるのは味気ないので,本来の目的とは外れますが,Four Factorsが勝敗にどの程度寄与するのか統計的に確認してみたいと思います。

方法論としては勝敗(Win = 1, Lose = 0)を従属変数とし,Four Factorsを独立変数としてロジスティック回帰でモデリングをします。

回帰とはある結果をいくつかの変数の式にあてはめることです。例えば,ある試合の観客数を予測したいとします。予測の式(モデル)を以下の様に決めたとします。

 

f:id:hoops_stats:20171114214142p:plain

αは切片,εは誤差です。パラメータのαとβとεが求められれば,精度はともかくとして試合の観客数を予測できそうです。この各種係数をこれまでのデータから算出し,式を完成させ,評価するプロセスを回帰分析と呼びます。

今回は16-17レギュラーシーズン全試合のデータを用いて,Four Factorsから勝敗を予測したいと思います。モデルは以下の様になります。なおは勝率です。

f:id:hoops_stats:20171114214203p:plain

というモデルを仮定し,各パラメータを求めていきます。

Rのコードは以下の通り。

 

NBA=read.csv("16-17Reg.csv")

playoffs = read.csv("16-17PLAYOFFS.csv") #データの読み込み

#回帰分析

m1 = glm(W1L0 ~ eFG+TOV+ORB+FTFGA, data = NBA,family = binomial)

summary(m1)

exp(m1$coefficients)

#信頼区間導出

CI = confint(m1, level = 1 - 005)

exp(CI)

#予測

pred = predict(m1, playoffs)

#オッズ比から確率に変換

odds_r = exp(pred)

Pr = odds_r/(1+odds_r)

#誤判別率

pred_p = ifelse(Pr > 05, 1, 0)

table(playoffs$W1L0, pred_p)

f:id:hoops_stats:20171114214229p:plain

f:id:hoops_stats:20171114214242p:plain

f:id:hoops_stats:20171114214302p:plain

回帰の結果上記のようにモデル化されました。有意でない係数もありますが,Four Factorsを重視してそのままモデリングしたいと思います。オッズ比は以下の通りです。

f:id:hoops_stats:20171114214342p:plain

オッズ比とはある事象が起きる確率の起きない確率に対する比率を示します。

モデリングの結果から,TOV%が1%上がると,ゲームに勝利する確率が0.93倍になる=勝つ確率が小さくなる。逆にORB%が1%上がると勝つ確率が1.02倍になる。と予測されます。

このモデルを用いて16-17playoffの勝敗を予測して,モデルの精度を検証したいと思います。結果は以下の通りになりました。

f:id:hoops_stats:20171114214409p:plain

勝率50%を境界値として,予想勝率>50%なら1,予想勝率≦50%なら0を割り当てます。そして実際の勝敗と勝敗予想がどの程度合致したかを算出します。結果は上記の表の通りで,予想負け―結果負けの場合が47,予想勝ち―結果勝ちの場合が43となりました。

精度は (47+43)/(47+32+36+43)≒0.5696…で57%の的中率となりました。全然精度は出てないですね…

方法を変えればより高い精度が出る可能性はありますが,勝敗を説明するのにFour Factorsを用いるのは適切ではないように思います。あくまでも,チーム分析の切り口として考えるのがよさそうです。今回はやや統計の説明が多くなりましたが,お許しいただければと思います。

それでは。