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

【密度推定のグラフを用いてNBAチームのフィールドショット成功に関する確率の特徴を捉えよう①】2022-23シーズンにおけるFG%上位2チームのデンバー・ナゲッツ、サクラメント・キングスの2Pシュートに焦点をあてる

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

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

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

なお、NBA2022-23シーズンにおけるFG%の上位2チームはデンバー・ナゲッツとサクラメント・キングスとなっていることから、今回はナゲッツとキングスの2Pシュートに関する密度推定のグラフを作成していきます。(※NBA2022-23シーズンにおけるFG%の数値は、NBA公式ウェブサイトを参照しています。)

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

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

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

今回、密度推定によるグラフを作成する際には、下記の5項目を使用します。

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

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

2Pシュート成功確率の推移<ナゲッツ、キングスの2Pシュート成功確率を比較>

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

ナゲッツとキングスの順に示しています。

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

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

  • Play length:2Pシュート成功確率はショットクロック開始直後に最も高い約0.61を示し、ショットクロック終了の24秒に近づくにつれて2Pシュート成功確率が一貫して減少していく。
  • Period time:2Pシュート成功確率はクォーター開始直後の約0.55から試合が進むにつれて増加し、400秒あたりでピークである約0.59を示す。その後、2Pシュート成功確率はクォーター終了まで減少していく。
  • Total time:2Pシュート成功確率は試合開始直後に最も高い約0.59を示し、試合が進むにつれて減少していく。なお、1440秒あたりを境に2Pシュート成功確率の減少のペースが増加する。
  • Shot distance:リング回りにおける2Pシュート成功確率が最も高く(約0.625)、リングから離れるにつれて2Pシュート成功確率が一貫して減少していく。

続いて、キングスのグラフは下記のとおりです。

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

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

  • Play length:2Pシュート成功確率はショットクロック開始直後に最も高い約0.605を示し、ショットクロック終了の24秒に近づくにつれて2Pシュート成功確率が一貫して減少していく。
  • Period time:2Pシュート成功確率はクォーター開始直後の約0.555から試合が進むにつれて増加し、280秒あたりでピークである約0.605を示す。その後、2Pシュート成功確率はクォーター終了まで減少していく。
  • Total time:2Pシュート成功確率は試合開始直後の約0.570から試合が進むにつれて増加し、1280秒あたりでピークである約0.595を示す。その後、2Pシュート成功確率は試合終了まで減少していく。
  • Shot distance:リング回りにおける2Pシュート成功確率が最も高く(約0.625)、リングから離れるにつれて2Pシュート成功確率が一貫して減少していく。

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

Period timeに関しては、ナゲッツのほうは400秒あたりで2Pシュート成功確率がピークとなる一方で、キングスのほうは280秒あたりで2Pシュート成功確率がピークとなります。

Total timeに関しては、ナゲッツのほうは試合開始直後で2Pシュート成功確率が最も高く、試合が進むにつれて2Pシュート成功確率が減少していきます。

その一方で、キングスのほうは試合開始直後から試合が進むにつれて2Pシュート成功確率が増加し、1280秒あたりでピークとなった後、試合終了まで減少していくことが分かります。

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

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

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

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

プレイヤー別でみる2Pシュート成功確率の推移<ヨキッチ、マレーなどの2Pシュート成功確率を比較>

下記はナゲッツのアーロン・ゴードン、ジャマール・マレー、ニコラ・ヨキッチの2Pシュート成功確率を示したグラフとなります。

アーロン・ゴードン、ジャマール・マレー、ニコラ・ヨキッチの2Pシュート成功確率の推移<ナゲッツ:NBA2022-23シーズン>
※左上:Play length、右上:Period time、左下:Total time、右下:Shot distance

上記のグラフを考慮すると、アーロン・ゴードン、ジャマール・マレー、ニコラ・ヨキッチの2Pシュート成功確率に関して、下記のような特徴を読み取ることが出来ます。

  • アーロン・ゴードン:全体的にチーム平均の2Pシュート成功確率を上回るが、Shot distanceの約14フィート以降でのみチーム平均以下の水準となる。また、Period timeとTotal timeに着目するとクォーター終盤と試合終盤で2Pシュート成功確率が高水準となり、ニコラ・ヨキッチを上回る2Pシュート成功確率を示している。
  • ジャマール・マレー:Shot distanceに関しては約20フィート近辺でチーム平均と同水準の2Pシュート成功確率を示すが、全体的にチーム平均以下の水準となっている。
  • ニコラ・ヨキッチ:Play length、Period time、Total time、Shot distanceのいずれの時点においてもチーム平均を超える2Pシュート成功確率を示している。Period timeとTotal timeに関してはクォーター終盤と試合終盤で2Pシュート成功確率がアーロン・ゴードンを下回る水準となるが、それを除けば3プレイヤーの中では常に高い2Pシュート成功確率を示している。

次に示すグラフは、キングスのディアロン・フォックス、ドマンタス・サボニス、ハリソン・バーンズの2Pシュート成功確率を示したグラフとなります。

ディアロン・フォックス、ドマンタス・サボニス、ハリソン・バーンズの2Pシュート成功確率の推移<キングス:NBA2022-23シーズン>
※左上:Play length、右上:Period time、左下:Total time、右下:Shot distance

上記のグラフを考慮すると、ディアロン・フォックス、ドマンタス・サボニス、ハリソン・バーンズの2Pシュート成功確率に関して、下記のような特徴を読み取ることが出来ます。

  • ディアロン・フォックス:Period timeとTotal timeに関して、クォーター中盤と試合中盤では2Pシュート成功確率はチーム平均を上回る水準を示している。Shot distanceに関してはチーム平均の2Pシュート成功確率と同水準で推移していく一方で、Play lengthではショットクロック開始直後を除き、チーム平均の2Pシュート成功確率を下回る水準を示している。
  • ドマンタス・サボニス:Play length、Period time、Total time、Shot distanceのいずれの時点においてもチーム平均を超える2Pシュート成功確率を示し、かつ、3プレイヤーの中で常に高い2Pシュート成功確率を示している。
  • ハリソン・バーンズ:全体的にチーム平均以下の2Pシュート成功確率を示している。

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

> plDEN <- c("Nikola Jokic","Jamal Murray","Aaron Gordon") #c()を使ってNikola Jokic, Jamal Murray, Aaron GordonをplDENへ格納
> p5den <- scoringprob(data=data2223.DEN, shot.type="2P", players=plDEN, var="playlength", col.team="gray") #scoringprob()でplayersをplDENに指定し、密度推定のグラフをp5denへ格納
> p6den <- scoringprob(data=data2223.DEN, shot.type="2P", players=plDEN, var="periodTime", bw=300, col.team="gray")
> p7den <- scoringprob(data=data2223.DEN, shot.type="2P", players=plDEN, var="totalTime", bw=1500, col.team="gray")
> p8den <- scoringprob(data=data2223.DEN, shot.type="2P", players=plDEN, var="shot_distance", col.team="gray")
> grid.arrange(p5den, p6den, p7den, p8den, nrow=2)

> plSAC <- c("Domantas Sabonis","Harrison Barnes", "De'Aaron Fox") #c()を使ってDomantas Sabonis, Harrison Barnes, De'Aaron FoxをplSACへ格納
> p5sac <- scoringprob(data=data2223.SAC, shot.type="2P", players=plSAC, var="playlength", col.team="gray")
> p6sac <- scoringprob(data=data2223.SAC, shot.type="2P", players=plSAC, var="periodTime", bw=300, col.team="gray")
> p7sac <- scoringprob(data=data2223.SAC, shot.type="2P", players=plSAC, var="totalTime", bw=1500, col.team="gray")
> p8sac <- scoringprob(data=data2223.SAC, shot.type="2P", players=plSAC, var="shot_distance", col.team="gray")
> grid.arrange(p5sac, p6sac, p7sac, p8sac, nrow=2)

おわりに

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

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

今回記事では2Pシュートに関する分析を行いましたが、次回記事では同様の方法で3Pシュートに関する密度推定のグラフの作成を行いたいと思います。

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

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

【参考書籍】

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

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