チームのOffensive Efficiencyは守備指標として応用できるか?

最近、統計検定2級の勉強をしているらんそうるいです。『心理統計学の基礎』という本をテキストに使っているのですが、気になる記述がありました。それは「回帰分析において、独立変数と残差は相関が0になる」という記述です。

 以前チームのOffensive Efficiency(OE)で勝ち試合数を単回帰分析するという記事(https://rnsr0371.boy.jp/2020/01/01/offensive_efficiency_2/)を書きました。その結果は「OEは勝ち試合数の分散を有意に説明するが、全てを説明できなかった」というものです。OEは攻撃の効率を評価する指標であること、バスケが攻撃と守備から成り立っていること、OEは守備を評価できないことを考えると当然の結果です。

 しかし、OEが勝ち試合におけるオフェンスの貢献をうまく捉えているとすれば、その残差はオフェンス以外の勝因を反映している可能性があります。つまり、(少なくとも部分的には)残差がディフェンスの良さを反映している可能性があります。

 そこで、本稿では残差とチームの失点の相関を調べることで、残差が守備の指標として使えそうかを検討します。結論を先に書くと、守備の指標として使えそうな肯定的な結果が得られました。

 今回の分析は、残差に注目してみるのが初めてなので、自信がありません。もし至らない点がございましたら、ご指摘していただけると嬉しいです。また、バスケ有識者からのご意見もお待ちしております。

勝ち試合数をチームOEで回帰したときの残差と平均失点の散布図

 本稿のアウトプットがこの散布図です。縦軸はOEで勝ち試合数を回帰したときに得られた残差で、横軸はチームの平均失点です。残差の読み方は数字が大きいほど「OEから予測されるよりも試合に勝っている」、数字が小さいほど「OEから予測されるよりは試合に勝てていない」と読みます。

 散布図を書いた結果、残差と失点には負の相関が見られました。すなわち、OEから予測されるよりも勝っているチームほど、失点は少ないという関係が見られました。OEの値と試合のペースや得点の多寡は関係がないため、残差が小さい=得点が小さいチーム・ペースが遅いチームというわけではないと思います(自信はありません)。

 以上の結果から、OEで勝ち試合数を回帰したときに得られる残差は守備指標として使える、というが今回の結論です。今後、失点以外の守備指標(たとえばディフェンシブレーティング)との相関を調べて、残差が守備指標として使えるという証拠を積み重ねていく必要があると言えるでしょう。

残差が大きい/小さい上位10チーム

残差が大きいチーム上位10チームの表がこちらです。これらのチームにディフェンスが良かったという印象はありますでしょうか? 「確かに16-17シーズンのA東京のディフェンスは良かったよね!」などのコメントが頂けると嬉しいです。

 続いて残差が小さい10チームの表が以下のものです。ディフェンスが悪いという印象のあったチームは載っているでしょうか?

OE is 何?

OEはShea & Baker で提案されたスタッツで「その選手が終わらせたポゼッションの内、得点またはアシストがついたポゼッションの割合」を意味する。数式を確認すると、Four Factorsとよく似た視点の分析であることがよく分かる。

OE=(フィールドゴール成功数+アシスト数)/(フィールドゴール試投数+ターンオーバー数+アシスト数−オフェンシブリバウンド数)

 OEでは得点・アシストが付いたポゼッションを分子が表しており、分母はある選手(またはチーム)が終わらせたポゼッションを近似している。また、オフェンシブリバウンドは攻撃機会を増やす、つまりターンオーバーとは逆の指標であると考えられるので、TOとは逆にマイナスの符号で分母に投入されている。

 OEは基本的には0〜1の値を取り、大きいほうが攻撃の効率が良い。これは終わらせたポゼションに占める、得点に結びついた割合が多いと解釈できるからである。

チームのOffensive EfficiencyはBリーグの試合の勝敗を効果的に予測するか? https://rnsr0371.boy.jp/2019/12/29/offensive_efficiency_1/

データセット

 bleaguerのGetGameSummary()を加工してデータセットとしました。対象としたシーズンは2016-2019の3シーズン(レギュラーシーズンのみ)です。これらのシーズンを選択した意図はレギュラーシーズンが60試合で揃っていたためです。このデータからOEを算出しました。

分析に用いたコード(Python)

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression

data=pd.read_csv("チームごとの得点・失点とOEの平均.csv",encoding="UTF-8")
data

x=data[["OE"]]
y=data[["wins"]]

model=LinearRegression()
model.fit(x,y)

win_pred=model.predict(x)
data["win_pred"]=pd.DataFrame(win_pred)

#残差を計算
res=[]
for i,j in zip(data["wins"],data["win_pred"]):
    k=i-j
    res.append(k)

#dataの列に追加
data["residuals"]=pd.DataFrame(res)
data

#残差とOEの相関係数を確認
cor=data["OE"].corr(data["residuals"])
cor

#プロットする
plt.plot(data["OE"],data["residuals"],"o")
plt.title("correlation between OE and residuals")
plt.xlabel("OE")
plt.ylabel("residuals")
plt.show()

#残差とOE(独立変数)に相関ほとんどなし。

#失点と残差の相関を算出
cor=data["Opp.PTS"].corr(data["residuals"])


#プロットする
plt.plot(data["Opp.PTS"],data["residuals"],"o")
plt.title("correlation between Opp.PTS and residuals")
plt.xlabel("Opp.PTS")
plt.ylabel("residuals")
plt.show()
print("相関係数:",cor)

引用文献

Shea, S. M. & Baker, C.E., 2013. Basketball Analysis Objective and Efficient Strategies for Understanding How Teams Win. 

南風原朝和, 2002. 心理統計学の基礎. 有斐閣. 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA