※ 当サイトは、アフィリエイト広告を利用しています。

【密度推定のグラフを用いてNBAチームのフィールドショット成功に関する確率の特徴を捉えよう②】2022-23シーズンにおける3P%上位2チームのフィラデルフィア・76ers、ゴールデンステイト・ウォリアーズの3Pシュートに焦点をあてる

記事内に広告が含まれています。
スポンサーリンク

今回は、Play-by-Play Dataに記録されているフィールドショットや試合時間などの情報を利用して、統計ソフトRによる3Pシュートに関する密度推定のグラフの作成方法を紹介していきたいと思います。

使用するデータは、2022-23シーズンのPbP. BDB(過去記事参照)となります。

なお、NBA2022-23シーズンにおける3P%の上位2チームはフィラデルフィア・76ersとゴールデンステイト・ウォリアーズとなっていることから、今回は76ersとウォリアーズの3Pシュートに関する密度推定のグラフを作成していきます。(※NBA2022-23シーズンにおける3P%の数値は、NBA公式ウェブサイトを参照しています。)

まずは、密度推定のグラフを作成する際に使用する各項目の内容から確認していきます。

※データ分析を実践する際に参考にしている書籍『Basketball Data Science: With Applications in R』の紹介記事も書きましたので、よろしければご確認ください。

分析で使用する項目<Play length、Period time、Total time、Shot distance、Scoring probability>

今回、密度推定によるグラフを作成する際には、前回記事と同様に下記の5項目を使用します。(※今回記事ではScoring probabilityは3Pシュート成功確率を表します。)

  • Play length:ショットクロックの経過時間を秒単位(0秒~24秒まで)で示す。
  • Period time:クォーターの経過時間を秒単位(クォーター開始の0秒から始まり、クォーター終了の720秒まで)で示す。
  • Total time:試合の経過時間を秒単位(試合開始の0秒から始まり、試合終了の2,880秒まで)で示す。
  • Shot distance:3Pシュートを放った地点からリングまでの距離(単位:フィート)を示す。
  • Scoring probability:3Pシュート成功確率

今回は、上記の5項目を使用してPlay lengthの各時点に対応する3Pシュート成功確率や、Shot distanceの各地点における3Pシュート成功確率などを確認していきます。

3Pシュート成功確率の推移<76ers、ウォリアーズの3Pシュート成功確率を比較>

横軸にPlay length、Period time、Total time、Shot distanceの4項目をそれぞれ示し、縦軸に3Pシュート成功確率を対応させた密度推定によるグラフは下記のとおりです。

76ersとウォリアーズの順に示しています。

76ersの3Pシュート成功確率の推移<NBA2022-23シーズン>
※左上:Play length、右上:Period time、左下:Total time、右下:Shot distance

上記のグラフを考慮すると、NBA2022-23シーズンにおける76ersのチーム全体の3Pシュート成功確率に関しては、下記のような特徴を読み取ることが出来ます。

  • Play length:ショットクロック開始直後からショットクロックが進むにつれて3Pシュート成功確率が上昇していくが、20秒付近で上昇が止まる。
  • Period time:3Pシュート成功確率はクォーター開始直後に最も高い約0.41を示し、試合が進むにつれて低下していくが、480秒付近で上昇に転じる。
  • Total time:3Pシュート成功確率は試合開始直後に最も高い約0.395を示し、試合が進むにつれて低下していく。その後、800秒付近で上昇に転じるが、1440秒付近を境に再度低下していく。
  • Shot distance:22フィート~45フィート付近において3Pシュート成功確率は0.35~0.4の範囲内で推移していくが、45フィート以降は急激に3Pシュート成功確率が低下していく。

続いて、ウォリアーズのグラフは下記のとおりです。

ウォリアーズの3Pシュート成功確率の推移<NBA2022-23シーズン>
※左上:Play length、右上:Period time、左下:Total time、右下:Shot distance

上記のグラフを考慮すると、NBA2022-23シーズンにおけるウォリアーズのチーム全体の3Pシュート成功確率に関しては、下記のような特徴を読み取ることが出来ます。

  • Play length:ショットクロック開始直後からショットクロックが進むにつれて3Pシュート成功確率が上昇していくが、19秒付近で上昇が止まる。
  • Period time:3Pシュート成功確率はクォーター開始直後の約0.375から試合が進むにつれて上昇し、400秒付近でピークである約0.39を示す。その後、3Pシュート成功確率はクォーター終了まで低下していく。
  • Total time:3Pシュート成功確率は試合開始直後に最も高い約0.40を示し、試合終了まで一貫して低下していく。
  • Shot distance:22フィート~45フィート付近において3Pシュート成功確率は0.35~0.4の範囲内で推移していくが、45フィート以降は急激に3Pシュート成功確率が低下していく。

上記の2チームのグラフを比較すると、Period timeとTotal timeで両チーム間に違いがあることが分かります。

Period timeに関して、76ersはクォーター開始直後で3Pシュート成功確率が最も高くなるのに対して、ウォリアーズは400秒付近で3Pシュート成功確率が最も高くなります。

また、76ersはクォーター終盤において3Pシュート成功確率が上昇する局面がある一方で、ウォリアーズは400秒付近でピークに達した後は、クォーター終了まで一貫して3Pシュート成功確率が低下していきます。

Total timeに関して、76ersは800秒付近~1440秒付近の区間で3Pシュート成功確率が上昇する局面があるのに対して、ウォリアーズは試合開始から一貫して3Pシュート成功確率が減少していくことが分かります。

なお、上記のグラフを出力するコマンドは下記のとおりです。

> library(BasketballAnalyzeR) #パッケージBasketballAnalyzeRの読み込み
> dts.PbP.2223 <- read.csv(file="PbP. BDB_2223.csv") # PbP. BDB2223の読み込み
> PbP2223 <- PbPmanipulation(dts.PbP.2223) # PbPmanipulation()でPbP2223を作成
> data2223.PHI <- subset(PbP2223, team=="PHI" & result!="") #PbP2223からteamがPHIと一致し、かつショットのresult欄が空欄となっている行を除外し、data2223.PHIへ格納
> p1phi <- scoringprob(data=data2223.PHI, shot.type="3P", var="playlength") #scoringprob()を用いて3Pシュート、playlengthに関する密度推定のグラフを作成し、p1phiへ格納
> p2phi <- scoringprob(data=data2223.PHI, shot.type="3P", var="periodTime", bw=300) #scoringprob()でバンド幅を300に指定の上、3Pシュート、periodTimeに関する密度推定のグラフを作成し、p2phiへ格納
> p3phi <- scoringprob(data=data2223.PHI, shot.type="3P", var="totalTime", bw=1500) #scoringprob()でバンド幅を1500に指定の上、3Pシュート、totalTimeに関する密度推定のグラフを作成し、p3phiへ格納
> p4phi <- scoringprob(data=data2223.PHI, shot.type="3P", var="shot_distance") #scoringprob()を用いて3Pシュート、shot_distanceに関する密度推定のグラフを作成し、p4phiへ格納
> library(gridExtra) #パッケージgridExtraの読み込み
> grid.arrange(p1phi, p2phi, p3phi, p4phi, nrow=2) #grid.arrange()を使ってグラフを2行2列で出力

> data2223.GSW <- subset(PbP2223, team=="GSW" & result!="") #PbP2223からteamがGSWと一致し、かつショットのresult欄が空欄となっている行を除外し、data2223.GSWへ格納
> p1gsw <- scoringprob(data=data2223.GSW, shot.type="3P", var="playlength")
> p2gsw <- scoringprob(data=data2223.GSW, shot.type="3P", var="periodTime", bw=300)
> p3gsw <- scoringprob(data=data2223.GSW, shot.type="3P", var="totalTime", bw=1500)
> p4gsw <- scoringprob(data=data2223.GSW, shot.type="3P", var="shot_distance")
> grid.arrange(p1gsw, p2gsw, p3gsw, p4gsw, nrow=2)

次に、上記の2チームから3P%の高いプレイヤーを3名ずつピックアップして、チーム平均の3Pシュート成功確率とそれらプレイヤーの3Pシュート成功確率を比較していきます。

プレイヤー別でみる3Pシュート成功確率の推移<ハーデン、カリーなどの3Pシュート成功確率を比較>

下記は76ersのジェームズ・ハーデン、トバイアス・ハリス、タイリース・マクシーの3Pシュート成功確率を示したグラフとなります。

ジェームズ・ハーデン、トバイアス・ハリス、タイリース・マクシーの3Pシュート成功確率の推移<76ers:NBA2022-23シーズン>
※左上:Play length、右上:Period time、左下:Total time、右下:Shot distance

上記のグラフを考慮すると、ジェームズ・ハーデン、トバイアス・ハリス、タイリース・マクシーの3Pシュート成功確率に関して、下記のような特徴を読み取ることが出来ます。

  • ジェームズ・ハーデン:Play lengthにおけるショットクロック開始から6秒付近までとPeriod timeにおけるクォーター終盤ではチーム平均を上回る3Pシュート成功確率を示しているが、それ以外ではチーム平均以下または同水準の3Pシュート成功確率となっている。
  • トバイアス・ハリス:Play lengthにおけるショットクロック開始~14秒付近までとPeriod timeにおけるクォーター終盤ではチーム平均を上回る3Pシュート成功確率を示しているが、それ以外ではチーム平均以下または同水準の3Pシュート成功確率となっている。
  • タイリース・マクシー: Period timeにおけるクォーター終盤とTotal timeにおける試合終盤ではチーム平均を下回る3Pシュート成功確率を示しているが、全体的にはチーム平均を超える3Pシュート成功確率を示している。

次に示すグラフは、ウォリアーズのダンテ・ディヴィンチェンゾ、クレイ・トンプソン、ステフィン・カリーの3Pシュート成功確率を示したグラフとなります。

ダンテ・ディヴィンチェンゾ、クレイ・トンプソン、ステフィン・カリーの3Pシュート成功確率の推移<ウォリアーズ:NBA2022-23シーズン>
※左上:Play length、右上:Period time、左下:Total time、右下:Shot distance

上記のグラフを考慮すると、ダンテ・ディヴィンチェンゾ、クレイ・トンプソン、ステフィン・カリーの3Pシュート成功確率に関しては、下記のような特徴を読み取ることが出来ます。

  • ダンテ・ディヴィンチェンゾ:Play lengthにおけるショットクロック開始~8秒付近までとPeriod timeにおけるクォーター中盤ではチーム平均を下回る3Pシュート成功確率を示しているが、それ以外ではチーム平均以上または同水準の3Pシュート成功確率となっている。
  • クレイ・トンプソン:Play length、Period time、Total time、Shot distanceのいずれの時点においてもチーム平均を超える3Pシュート成功確率を示しており、特にTotal timeにおける試合終盤での水準は、チーム平均を大きく上回るパフォーマンスを見せている。
  • ステフィン・カリー:Period timeにおけるクォーター開始直後でチーム平均を下回る3Pシュート成功確率を示しているが、全体的にはチーム平均以上または同水準の3Pシュート成功確率となっている。

なお、上記のグラフを出力するコマンドは下記のとおりです。

> plPHI <- c("Tyrese Maxey","Tobias Harris", "James Harden") #c()を使ってTyrese Maxey, Tobias Harris, James HardenをplPHIへ格納
> p5phi <- scoringprob(data=data2223.PHI, shot.type="3P", players=plPHI, var="playlength", col.team="gray") #scoringprob()でplayersをplPHIに指定し、密度推定のグラフをp5phiへ格納
> p6phi <- scoringprob(data=data2223.PHI, shot.type="3P", players=plPHI, var="periodTime", bw=300, col.team="gray")
> p7phi <- scoringprob(data=data2223.PHI, shot.type="3P", players=plPHI, var="totalTime", bw=1500, col.team="gray")
> p8phi <- scoringprob(data=data2223.PHI, shot.type="3P", players=plPHI, var="shot_distance", col.team="gray")
> grid.arrange(p5phi, p6phi, p7phi, p8phi, nrow=2)

> plGSW <- c("Stephen Curry","Klay Thompson", "Donte DiVincenzo")
> p5gsw <- scoringprob(data=data2223.GSW, shot.type="3P", players=plGSW, var="playlength", col.team="gray")
> p6gsw <- scoringprob(data=data2223.GSW, shot.type="3P", players=plGSW, var="periodTime", bw=300, col.team="gray")
> p7gsw <- scoringprob(data=data2223.GSW, shot.type="3P", players=plGSW, var="totalTime", bw=1500, col.team="gray")
> p8gsw <- scoringprob(data=data2223.GSW, shot.type="3P", players=plGSW, var="shot_distance", col.team="gray")
> grid.arrange(p5gsw, p6gsw, p7gsw, p8gsw, nrow=2)

おわりに

今回は、3Pシュートに関する密度推定のグラフを描いて、3P%で好成績を残した2チームの3Pシュート成功確率の推移を確認していきました。

グラフを作成する際には、前回記事と同様にPlay lengthやPeriod timeなどの各項目を使用したり、特定のプレイヤーに着目したりすることで、チームやプレイヤーの3Pシュート成功確率に関する共通点や相違点を特定の時間帯やショット距離に応じて捉えることができました。

今回は2チームのみを分析対象としましたが、他チームも同様に分析を行うことで、ショットクロック終盤や試合終盤などの緊張感のある局面で精度の高い3Pシュートを放つプレイヤーを見つけることも可能になるかと思います。

なお、本記事は記事の最後に紹介している書籍を参考にして作成しています。

それでは、今回のトラッシュトークは以上です。

【参考書籍】

Paola Zuccolotto and Marica Manisera (2020), Basketball Data Science – with Applications in R. Chapman and Hall/CRC. ISBN 9781138600799.
※本書籍の紹介記事を書いていますので、よろしければご参考ください。

タイトルとURLをコピーしました