Efficient Points Scored という指標を紹介します
こんにちは、らんそうるいです。今回の記事では、Shea & Baker (2013)で提案されたEfficient Points Scored (EPS)という攻撃を評価するアドバンスドスタッツを紹介します。EPSはこのブログで度々取り上げているOffensive Efficiency(OE)を発展させたスタッツで、基本的には得点とOEの積です。得点でオフェンス面での貢献の「量」を評価し、OEで貢献の「質」を評価する、という意図を持って作られた指標です。
この記事では、まずOEの欠点について説明し、次にEPSを紹介します。最後にEPSの欠点について述べます。
Offensive Efficiencyの欠点
このブログで度々取り上げているOffensive Efficiency(OE)の定義式は次のとおりです。
- OE=(FGM+AS)/(FGA+AS−OR+TO)
- ただし、FGM=フィールドゴール成功数、AS=アシスト数、FGA=フィールドゴール試投数、OR=オフェンシブリバウンド数、TO=ターンオーバー数
OEの気持ちについて説明すると、分子は得点に結びついたポゼッション数、分母は終わらせたポゼッション数なので、「ある選手が終わらせたポゼッションのうち、得点に結びついたポゼッションの割合」となります。
OEには優れた点があります。まず、チームのOEと勝ち試合数に強い相関が見られます。そのため、選手個人のOEが高いほど、チームの勝利に結びつきます。この意味でOEは「効果的に」選手の攻撃効率を評価できます。次に、定義式がシンプルで解釈が容易です。「え?」と思ったそこのあなた! PERの定義式を調べてみてください。OEがマシな指標であるのがわかるはずです。
次にOEの欠点について述べます。OEは選手のシュートをFGAとFGMで評価しているため、2Pシュートと3Pシュートを区別していません。そのため、どうしても3Pシューターの評価を小さく見積もってしまいます。さらに、OEは攻撃の「質」を評価することはできますが、攻撃の「量」を評価していません。攻撃機会が少なくてもFGMやASさえ記録していれば、OEは高くなります。3Pシュートを評価していないことと、攻撃の「量」を評価していないことを改善した指標が、次の節で紹介するEfficient Points Scoredです。
Efficient Points Scoredについて
Efficient Points Scored(EPS)の定義式は次のとおりです。あるリーグに選手がn人いるとして、選手一人一人に1, 2, ….., nと番号を振って、
- EPS=F * OE * PTS
- F=あるシーズンあるリーグの総得点/{(選手1の得点*選手1のOE)+(選手2の得点*選手2のOE)+…..+(選手nの得点*選手nのOE)}
- ただし、PTS=ある選手の得点
EPSはPTSを取り入れたことで、フリースローや3Pシュートを加味した指標になっています。FはシーズンごとにEPSを比較するための調整です。Fの分母は、あるシーズンの各選手の得点とOEの積の総和です。
次の表はB1 2020-21シーズンの3/13までのデータを使ってFを求め、平均出場時間が20分を超える選手のみ(119名)に絞ってから、EPS上位25名を表示させたランキングです。3Pやフリースローを考慮してもなお、外国籍選手の攻撃は質・量ともに良いことが示唆されます。なお、日本人選手TOPのEPSを記録したのは金丸晃輔選手で38位でした(PTS=16.93, OE=0.49, EPS=14.37)。
EPSの欠点
EPSの欠点としてShea & Baker(2013)で指摘されていたのは、アシストの質を考慮していないことです。スタッツ上にアシストが記録されていたとしても、いいパスだったからアシストがついたのか、パスの受け手が難しいシュートを決めたからアシストがついたのか分からないというわけです。
そこで、Shea & Baker(2013)はゴール下、10フィート以内のシュート、10-15フィート以内のシュート、15-23フィート以内のシュート、3PシュートへのアシストのデータがそれぞれHoopdata.comに記録されていることに注目し、NBA 2012-13シーズンのゴール下へのアシストの割合が0.38であると算出しています。その上で、アシスト数に0.76(ゴール下の得点 2点と、そのアシストの割合 0.38の積)を掛けて、良質なアシストのみをその選手の得点とすることを提案しています。こうして提案された指標が Raw Efficient Offensice Production(Raw EOP)です。定義式だけ紹介してこの記事を終わろうと思います。
- Raw EOP=(0.76 * AS + PTS) *OE
終わりに
この記事では、Offensive Efficiency(OE)を発展させた指標として、Efficient Points Scored(EPS)という指標があることを紹介しました。EPSは得点とOEの積で表され、攻撃の量・質両方を加味した指標であることを見ました。最後にEPSの問題について触れました。
EPSを実際に使ってみての感想ですが「これは…どうなんだろう?」という印象です。攻撃の質だけでなく、攻撃の量も踏まえた分析をするなら、たとえばOEとPTSを軸にとった散布図のほうが分かりやすいのではないか? という感想を持ちました。ぜひEPSの感想などを教えていただけたら嬉しいです。
【著者のTwitterアカウント:https://twitter.com/rnsr0371】
引用文献
Shea, S. M. & Baker, C.E., 2013. Basketball Analysis Objective and Efficient Strategies for Understanding How Teams Win.
宣伝
バスケットボールのデータ分析を勉強したくて、Twitterでバスケのデータ分析をされる方のリストを作っています。ご興味のある方はぜひリストのフォローをお願いします。メンバーの自薦・他薦も募集しています。
分析に使ったコード(Python)
import pandas as pd
import numpy as np
#データセットの作成。B1のBOXScoreのみ抽出する
data=pd.read_csv("games_boxscore_202021.csv",encoding="UTF-8")
teams=pd.read_csv("teams.csv",encoding="UTF-8")
pd.set_option('display.max_columns', 100)
teams=teams[teams["League"]=="B1"]
teams=teams[teams["Season"]=="2020-21"]
data2=data.merge(teams,on="TeamId")
#目的:Fを計算する(Shea & Baker Basketball Analysys p.37より)
League_Points=data2["PTS"].sum()
League_Points
#OE
OE=[]
for FGM,AS,FGA,TO,OR in zip(data2["FGM"],data2["AS"],data2["FGA"],data2["TO"],data2["OR"]):
if FGA+AS+TO-OR==0:
OE.append(np.nan)
else:
tempOE=(FGM+AS)/(FGA+AS+TO-OR)
OE.append(tempOE)
data2["OE"]=pd.DataFrame(OE)
#OE*PTSを算出する
OExPTS=[]
for OE,PTS in zip(data2["OE"],data2["PTS"]):
tempOExPTS=OE*PTS
OExPTS.append(tempOExPTS)
data2["OExPTS"]=pd.DataFrame(OExPTS)
#OExPTSの総和を求める
denominator=data2["OExPTS"].sum()
denominator
#Fを求める
F=League_Points/denominator
F
#EPSを求める
EPS=[]
for OE,PTS in zip(data2["OE"],data2["PTS"]):
tempEPS=F*OE*PTS
EPS.append(tempEPS)
data2["EPS"]=pd.DataFrame(EPS)
#選手名でgroup_byしてEPSの平均を求める
data3=data2.loc[:,["Player","MIN","PTS","AS","OR","TO","FGA","FTA","OE","EPS"]].groupby("Player").mean()
#平均出場時間が20分以上の選手を抽出
data4=data3[data3["MIN"]>=20]
#EPSでソートする
data4.sort_values("EPS",ascending=False).head(25).loc[:,["Player","PTS","OE","EPS"]]