月別アーカイブ: 2018年10月

2018-19シーズンB2定点観測 – 第5節(8-9ゲーム)終了時点

B2のゲームをまったく観られていません!正確に言うとB1のゲームもあまり観られていないのですが、B2はもっと観られていません。シーズン前は茨城ロボッツが面白そうなのでゲームを観ようかなと思っていたのですが、気が付けばB1が始まってからというもの一度もB2のゲームを観ていません。やはりなんだかんだで後回しになってしまっておりまして。

今後もB2のゲームを観る時間を設けるのもなかなか難しそうなので、ときどきデータを見て何となくB2で起きていることを掴むことを目指したいと思います。前回の記事ではB1のデータを見ましたが、B1は各種メディア(と言ってもバスケット専用のメディアですが)で戦況がカバーされますから、むしろこういうネタはB2の方が向いているかもしれません。

手元ではプログラムを組んであるので、今後同じ内容のデータを取得するのにあまり手間はかかりません。なのでこの2018-19シーズンは、ときどき定点観測ネタをB2についてお届けしてみようかと思っています。

では第5節、各チーム8ないし9ゲームが終わった時点のデータを見てみたいと思います。

得点、失点、得失点差

まずは得点と失点、そしてその差を見てみましょう。図にある点の大きさが得失点差を表現していますので、例えば小さい点ばかりであれば、そのチームは接戦ばかりであったと推測できます。

f:id:rintaromasuda:20181025212905j:plain

f:id:rintaromasuda:20181025212915j:plain

実はデータを見るまで知りませんでしたが、信州は今のところ全勝だったのですね。そしてほとんどの試合で結構な差を付けて勝っているようです。強いですね。広島、熊本、群馬、東京Zあたりも今のところ勝ち越しているようですが、接戦の中で掴んだ白星も含まれているのが分かります。

奈良、八王子、香川、青森、金沢、西宮あたりは苦戦中しているようです。特に奈良はあまり点数が取れていないようで、今のところ80点以上取れた試合がないようです。青森はけっこう失点が嵩んでいるようですね。試合のペースが早かった結果かもしれませんが、気になる部分ではあります。

FE名古屋は既に100点ゲームでの勝利を2回も達成していますね。リーグナンバー1シューターだった福澤が茨城ロボッツに移籍してしまいましたが、それでも今シーズンも高いオフェンス力を保っているように見えます。

FG%、被FG%

ここまでのフィールドゴール%(2点も3点も含みます)と、被フィールドゴール%、つまり相手チームのフィールドゴール%を見てみましょう。オフェンスとディフェンスの調子を掴むためには良い指標だと思います。

まずはフィールドゴール%です。

f:id:rintaromasuda:20181025212924j:plain

FE名古屋はオフェンスが波に乗ると爆発する感じのチームではないでしょうか。仙台もとても高い%を記録したゲームがありますね。一方で広島、島根、信州あたりは安定して良い値が出ていると思います。東京Zも悪くはないようです。これらのチームのオフェンス力は良いと言えると思います。

一方で西宮や八王子のフィールドゴール%は低めとなっています。西宮ストークスはどうしてしまったのでしょうか。あまり調子が出ていないようです。昨シーズンはB1でプレーしていたわけですし、主要な選手は残っているように見えるので、何で今シーズンはここまで不調なのか、ちょっと気になるところではあります。

次に被フィールドゴール%を見てみましょう。各チームのディフェンスはどうでしょうか。

f:id:rintaromasuda:20181025212933j:plain

ここでもやはり西宮ストークスの様子が気になってしまいます。オフェンスだけではなく、ディフェンスに大きな課題が潜んでいるように思えます。奈良、八王子、山形あたりも同様に課題がありそうですが、繰り返しになりますが元B1チームらしくない値が気になります。

信州、熊本、FE名古屋は勝ち越しているだけあり、相手のシュートの%を落としているようです。実際にどのチームのディフェンスもこの目で見ていないのですが、きちんと相手にタフショットを打たせるよう、タイトなディフェンスを心掛けていると想像します。

ディフェンスリバウンド取得率、オフェンスリバウンド取得率

では最後にリバウンドの取得率について見てみましょう。ちなみに取得率の計算の仕方は(と言っても簡単ですが)、この記事の中で解説しています。

まずはオフェンスリバウンドの取得率です。簡単に言えば、自軍のゴールから落ちてきたこぼれ球の総数を100として、その内のどれだけをリバウンドすることができたのか、という指標です。相手にオフェンスリバウンドを取られるとどんどん下がっていきます。

f:id:rintaromasuda:20181025212943j:plain

広島や茨城はディフェンスリバウンドをよく取っていますね。B1だと王者アルバルクがきちんとディフェンスリバウンドを取っているというデータがあるのですが、B2だと今のところ絶好調の信州はさほどでもないです。これは意外でした。

またもや西宮の話題ですが、ディフェンスリバウンドもちょっと課題のようです。熊本も勝っている割にはあまりディフェンスリバウンドを取れていないですね。八王子や香川などもディフェンスリバウンドには課題があるようです。奈良はここでは頑張っているようです。

続いてオフェンスリバウンドです。

f:id:rintaromasuda:20181025213002j:plain

広島はここでも存在感がありますね。全体的にリバウンドの強いチームだと言えそうです。リバウンドやディフェンスはリーグが進むにつれてどんどんボディーブロー的に効いてくると思いますから、今後も広島ドラゴンフライズは白星を挙げ続けそうです。島根、仙台、東京Zもオフェンスリバウンドに関して悪くないようです。

総評

B2の第5節までの数字から、今の戦況について色々と想像してみました。信州の全勝ぶりは見事ですが、例えば広島やFE名古屋、熊本、島根なんかも今後さらに白星を挙げてくると思います。繰り返しになりますが、西宮ストークスの不調振りもかなり気になっています。

あとあまり目立ちませんでしたが、金沢武士団の値はそんなに悪くありません。今のところ勝ち越せていないものの、これから徐々に白星を挙げてくるのでは、と思いました。同チームの選手は今のところひとりも知らないので、今度勉強しておきたいと思います。

では今回はこの辺で。次は20ゲームくらい終わったところで定点観測ができるといいです。

2018-19シーズンB1定点観測 – 第4節(7ゲーム)終了時点

データをネタにしてコンテンツを作っているとひとつ弱点がありまして、それはデータが集まるまではしばらく何もできないということです。新シーズンがはじまって大盛り上がりしているのに、私はひとり昨シーズンの話ばかりをしていて寂しく感じていたりしてました(笑)

そういうわけで2018-19シーズンも第4節、つまり7ゲームまで終わりましたので、ここらで新シーズンの話を書いてみたいと思います。

得点、失点、得失点差

まずは各チームのここまでの得点と失点を見てみましょう。まだデータサイズが7ゲームと少ないので、このブログではおなじみの箱ひげ図は使わず、普通に点で各ゲームを表しています。試合の結果で色分けをしてみました。

あとこれは導入するかどうか迷ったのですが、点の大きさで得失点差が分かるようにしてみました。点が小さいほど最終的な得失点差が小さかったことを表していますので、例えばあるチームに小さい点ばかり並んでいるようでしたら、そのチームのゲームは接戦ばかりだったことが想像されます。

f:id:rintaromasuda:20181023232712j:plain

f:id:rintaromasuda:20181023232723j:plain

アルバルク東京はさすがという感じで、得点を多く取らなくても勝てるディフェンスのバスケットを確立してきている気がします。ディフェンスはオフェンスほど調子に左右されませんから、長いシーズンを勝ち続けるためにはこれはとても好ましいことです。

琉球はディフェンスもさすがですが、かなりの差を付けて相手に勝利してきているようで、今シーズンはオフェンス力も相当なものではないかと思われます。滋賀、三河、新潟あたりは接戦が続いてますね。富山、千葉、京都はさすがの攻撃力といったところでしょうか。三遠と福岡は今のところかなり苦戦しているようですね。

フィールドゴール%

各チームのシュートの調子はどうでしょうか。今シーズンは制度変更の影響で外国人選手が出ずっぱりなチームもあり、インサイドを使ったオフェンスが増えて、フィールドゴール%は高めのシーズンになるかもしれませんね。

下の図はフィールドゴール%と、2点シュートのみに絞ったフィールドゴール%をプロットしたものです。

f:id:rintaromasuda:20181023234214j:plain

f:id:rintaromasuda:20181023234221j:plain

今シーズンの京都は今のところえらいシュートが決まっていますね。琉球もとてもよくシュートが決まっています。並里効果でしょうか。富山もスミスがアタックしまくっている関係か、かなり高い数字が出てきます。秋田やSR渋谷はちょっと2点シュートには苦戦している様子が見受けられます。福岡はシュートが入っていないわけではなさそうですね。今のところ白星がない原因はやはりディフェンスなのでしょうか。

リバウンド

以下のブログ記事で説明しましたディフェンスリバウンドとオフェンスリバウンドの取得率を見てみましょう。

記事の中でも書きましたが、オフェンスリバウンドについては値が小さくてもそれがチームの方針、つまりあまり積極的にオフェンスリバウンドに行かないようにしている、という可能性もあります。

f:id:rintaromasuda:20181023235206j:plain

f:id:rintaromasuda:20181023235218j:plain

まずはやはりアルバルク東京のディフェンスリバウンドですね。本当にきっちりとディフェンスリバウンドを拾っているのだな、という値です。千葉、栃木、三河あたりも良いのですが、王者がやはり一歩抜け出した形のようです。

京都、新潟、福岡、北海道、名古屋Dあたりはディフェンスリバウンドで苦労しているようですね。ここは必ず対策が必要な部分でしょう。

オフェンスリバウンドでは富山と栃木が存在感を示しています。富山と栃木と言うか、スミスとギブスなんじゃないかという気がしますが(笑)ふたりともセカンドチャンス、サードチャンスと次々とボールを毟りとりますからね。あと琉球もすごいですね。ブラウンでしょうか。

上の記事では三遠はオフェンスリバウンドを意図的に取りにいってない説を展開したのですが、このシーズンは今のところ目立って他のチームより低い訳ではないようです。その代わりと言ってはなんですが、京都と名古屋Dが低いですね。あと川崎が低いのも目立ちます。ファジーカスの完全復活が望まれるところです。

タイムシェアを指標化して、常時オンザコート2の影響を視覚化する

今シーズンからいわゆる常時オンザコート2となり、外国人選手が常に2人コートに立てることになりました(ベンチ入りは2人まで、選手登録は3人までです。)これに伴い外国人選手のプレータイムにファンの注目が集まっています。この記事ではタイムシェアを指標化し、視覚化することで、制度変更がプレータイムに与える影響を見てみたいと思います。

あと私の個人的なファン心理として、全員バスケットを応援したいという気持ちがあります。プレータイムがもらえていない選手に気が付くと気になってしまう質なのです。昨シーズンだと千葉の阿部(現富山)なんか気になっていました。今シーズンだとA東京の斎藤あたりも。タイムシェアに指標を設けることで、各チーム感での比較も可能になります。そうするとよりタイムシェアをしているチームがどこなのか、していないチームがどこなのかに着目することもできます。

それにBリーグさんだって今シーズンの終わりには制度変更の影響を振り返らなければならないはずです。感覚のみで是非を判断しない為にも、何某かの指標は必要ではないかと思います。私は普段の仕事で定量的に仕事の結果を表現する役目になることが多く、ちょっとそういうのも気になってしまいます。もしBリーグさんの参考にもなれば幸いです。

どのようにタイムシェアを指標化するのか

タイムシェアの指標として、よく経済の分野で使われる「ジニ係数」というものを導入したいと思います。経済の分野は小難しい内容も多いですが、ジニ係数の概念は簡単ですのでお付き合い下さい。

ジニ係数とは?

ここに子供が50人がいて、キャンディが100個あるとします。このキャンディを子供たちに自由に分配させるとします。

みんなで相談してひとり2個ずつ平等に分けるかもしれませんし、ある一部の子供たちが他の子供たちよりも多くキャンディを手にするかもしれません。最悪ひとりのガキ大将が100個すべて独占するかもしれません。

この分配の結果を以下のような正方形の図にします。

f:id:rintaromasuda:20181018232604p:plain

すべての子供にキャンディが平等に行き渡れば、図に引かれる累計の個数を表す線は真っ直ぐな対角線になります。しかし一部の子供たちによる独占があればあるほど、累計の線が徐々に右下に向かって拡がって行きます。ひとりによってすべてが独占された場合、この線は下辺と右辺に沿うものになってしまいます。

こうすることで、この対角線と引かれた線の間にある領域の面積が大きければ大きいほど不平等、という性質が出来上がります。簡単に言うと、この面積の大きさがジニ係数です。正確に言うと、この面積が三角形の面積と比べてどのくらいか、というのがジニ係数です。

完全に平等(みんな2個ずつ)だとジニ係数は0、完全に不平等(ひとりが100個を独占)だとジニ係数は1になります。よってジニ係数は0か1かその間の値になります

バスケットボールのプレイタイムの場合

バスケットボールは5人で行うスポーツなので、ひとりでプレイタイムを独占することは出来ません。最低でも5人で独占です。なのでジニ係数は絶対に1にはなりません。

Bリーグではベンチに入れる最大の人数は12人ですが、全部で12人の選手がいるのにスタメンの5人が交代なしで最後までプレー(つまりすべてのプレイタイムを独占)した場合、ジニ係数は約0.583となりますBリーグにおいてはこれがジニ係数の最大値だと思って良いでしょう。

2017-18のB1レギュラーシーズンのジニ係数を見てみる

ではまずは昨シーズンのB1レギュラーシーズン全試合分のジニ係数を見てみましょう。皆さんのお気に入りのチームはタイムシェアをしていたチームでしょうか、それともそうでないチームでしょうか?繰り返しになりますが、値が小さいほどタイムシェアが出来ているという指標です。プロットはいつも通り箱ひげ図にて行いました(そのうち箱ひげ図の説明もブログに書きたいと思います。)

ではどうぞ!

f:id:rintaromasuda:20181018233742j:plain

頑張れレバンガ!

レバンガ北海道の全員バスケット素晴らしいです!シーズンを通してタイムシェアを行っていた様子が分かりますね。アットホームな雰囲気のあるレバンガ北海道にぴったりだと思うのは私だけでしょうか。レバンガはこういう部分をさらに積極的に売り出してもいいかもしれませんね。

この分析を行うまでは実は全員バスケットと言ったら名古屋ダイヤモンドドルフィンズというイメージがあったのですが、どうやら名古屋は次点のようです。SR渋谷と、あと小憎らしいことに王者アルバルク東京もタイムシェアがされていたようです。

タイムシェアがあまりされていなかったのは三河や富山です。富山のプレイタイムの偏りはこのブログでも何度か取り上げていますが、実は三河はノーマークでした。中央値(箱の中の線)や75パーセンタイル(箱の上辺)を見ると頭ひとつ抜けてタイムシェアがされていなかったようです。これ見ると改めて比江島と橋本が抜けた穴の大きさを感じます。それだけたくさんプレーをしていた選手がふたり抜けてしまった訳ですから。

昨シーズン1番タイムシェアされたケースと、1番されなかったケースを見てみる

さて、少し実例を見てみましょう。レバンガ北海道ジニ係数が0.1に迫る試合があったのが図から分かりますが、こちらでスタッツが見られます。各選手のプレイ時間はこのようになっています。

f:id:rintaromasuda:20181018234940p:plain

見事ではないでしょうか?思わず「美しい…」と呟いたほどの全員バスケット振りでした。

次に三河ジニ係数が0.55くらいまでいった試合のプレイタイムを見てみましょう。上述しましたが理論上の最高値は0.583くらいのはずなので、かなりの独占ぶりであることが想像されます。この試合のスタッツはこちらから見られますが、プレイタイムは以下のようになっていました。

f:id:rintaromasuda:20181018235353p:plain

どうでしょうか、かなりの独占ぶりではないでしょうか?かろうじて西川と松井がプレイタイムを得ている以外はほぼスタメンだけで試合をこなしたような形だったようです。

常時オンザコート2の影響は?

さてでは今シーズンの値を見て、昨シーズンの値と比較してみましょう。この執筆時点では2018-19シーズンは5試合しか終わっておりませんので、その5試合をプロットしたいと思います。このサイズだと箱ひげ図にしてもしょうがないので、先ほどの昨シーズンの箱ひげ図の上に重ねて赤色の点で今年の値をプロットします。

このようになりました。

f:id:rintaromasuda:20181019000653j:plain

これはどうでしょう。なかなか一言では表し辛いです。

全体的にはやはりプレイタイムの独占が進んだように見えます。京都、栃木、北海道なんかは軒並み昨シーズンと比べると高い数値が出ていますね。北海道はHCが変わったなどの影響も強くあると思いますが、今のところ全員バスケットの雰囲気はないようです。京都は確かロスターが他のチームより少なかったと思いますが、それでもこれだけ高い数値が出るということは、かなり交代を抑えているのではないでしょうか

一方で三河、川崎、大阪あたりはかなり数値が落ちています。川崎はファジーカスが出場しなかったなども影響していると思いますが、一方でセカンドチームがうまく機能するようになってきた感じもありました。かなり良い兆候ではないかと思います。三河の値が下がったのは、これも結局は比江島、橋本が去ったことによるものでしょう。大阪については今シーズンのことはまだよく知らないので、今度ゲームを観るときの楽しみにしておきます。

チームを全部まとめて今シーズンと昨シーズンを比較したらこうなりました。

f:id:rintaromasuda:20181019002019j:plain

まあまだ語るには早すぎる面は否めませんが、どうやらぐっとジニ係数が高めのところにまとまった感があります。比較的どのチームも似たような割合でプレイタイムを分配するようになってきたのかもしれません。今後これがどう変化してくるのかはすごく興味深いです。

まとめ

プレイタイムのタイムシェア具合をジニ係数を用いて指標化しました。昨シーズンを見ると北海道や名古屋は全員バスケットで挑んでいた様子が分かりますが、三河や富山はかなりプレイタイムに偏りがあった様子が分かります。また今シーズンに導入された常時オンコート2の影響は一部のチームには強く出ている気配はありますが、チームによってはタイムシェアが進んでいる場合もありました。いずれにせよまだ今シーズンは5試合を消化しただけなので、もう少しシーズンが進むのを待ちたいと思います。

バスケットボールは交代が自由なスポーツなので、その他の交代に制限があるスポーツとはまた違った交代の戦略が求められます。別にプレイタイムを平等にシェアすることが正解だと言いたい訳ではないのですが、どのようなプレイタイムの分配がどのような結果につながったか、そういう分析の一助になれば幸いです。

Bリーガーの身長データを使ってRの初歩的な集計と可視化をやってみる

今回はバスケットボールの話ではなく技術系のネタです。

はじめに

実際のBリーグの選手データ(名前、所属チーム、身長、体重など)を使ってRの使い方やデータ分析の考え方の初歩に触れてみたいと思います。ちなみに以下の記事はその選手データを用いて書いたものです(データを取得したタイミングは違いますが。)


ひとつ注意事項です。この選手データは2018/10/13時点で私がBリーグの公式ページから取得してきたものですが、Bリーグさんはもちろん私も内容の正誤については責任を持てませんので、あくまで練習用のデータだとご理解頂ければと思います。

この記事で必要なもの

この記事ではRを使います。またRのプログラムを書き実行するのにはR Studioというソフトウェアが便利なので、それも使用します。

この記事でやること

この記事で以下のことをしたいと思います。

  • Rに選手データを読み込む
  • 選手データを確認のために閲覧する
  • dplyrというパッケージを使ってデータの集計を行う(チームの身長について集計する)
  • ggplot2というパッケージを使ってデータを視覚化する

ではやってみましょう。まずはR Studioを起動して下さい。R Studioの細かい操作についてはここでは説明しませんが、下記画像の赤枠のテキストエリアにコマンドを書き、テキストエリアの該当行にカーソルがある状態でCtrl + ENTERと押すと青枠のコンソールエリアでそのコマンドが実行されます。それが唯一の使い方ではありませんが、私はそれを繰り返すことで分析作業をすることが多いです。

f:id:rintaromasuda:20181015053753j:plain

データを読み込む

データはgithub上に上げてあります。以下のようにするとそのデータをR上に読み込むことが可能なはずです。

url <- "https://github.com/rintaromasuda/bleaguebydata/raw/master/blog/2018101301/bleaguers_20181013.csv"
df <- read.csv(url)

read.csvというのはその名の通りCSVファイルを読み込むためのものです。読み込んだ後にdata.frameというすごく便利な型にデータを変換してくれます。data.frame型というのは、イメージとしてはExcelのテーブルみたいなもので、行(Row)があり、列(Column)があり、列には名前が付いていたりします。

データを見てみる

データを読み込んだら、ざっとそのデータを見てみることが多いです。*1

dim(df)

dimを使うとそのdata.frameの行数と列数が表示できます。

str(df)

strを使うとそのdata.frameの各列の名前と、その列自体の型、そしてそこにどんな値が存在しているのかを一部表示できます。今回のデータを上記のコマンドで読み込んだ場合、列はint型(整数)かFactor型のいずれかになっていると思います。

Factor型というのは「選択肢が限定された文字列」のようなものです。例えばチーム名であればB1、B2合わせて36個の選択肢しかないのでFactor型に適しています。その意味では選手の名前はFactor型に適したものではないのですが、ここではそのまま進みます。

summary(df)

strと似ていますが、こちらは各列に格納されている数値型の値の統計値を表示してくれます。例えば選手の身長が入っているHeightという列がありますが、最小値、最大値、中央値、平均などの値が表示されるはずです。

View(df)

これはデータをそれこそExcelのように別のタブで表示してくれます。実際に目で見て確認したいときに便利です。

head(df)

データ量が多い場合はheadで最初の数行を表示するのも便利です。ちなみに正確に言うのであれば、headはdata.frame型のデータの最初の数行を別のdata.frame型として返してくれるものです。

tail(df)

headと同じですが、こちらは最後の数行を返してくれます。

どうでしょうか。ざっと見た感じでB1とB2のチームに属する選手データが入っていたのが分かったのではないかと思います。

集計をしてみる(チームごとに人数を数える)

まずは各チームの選手の人数を見てみましょう。ここはいくつか新しい概念が同時に出てきますが、頑張ってひと通り説明した糸思います。

まずはdplyrというパッケージを読み込みます。パッケージというのはRの拡張機能のことで実に様々なものがあるのですが、このdplyrや後で出てくるggplot2というパッケージはもはやRの標準機能であるかのごとくよく使われていると思います。

if (!require(dplyr)) {
install.packages("dplyr")
library(dplyr)
}

これは日本語で言うと「dplyrパッケージが既にインストールされていたら読み込んでね。なかったらインストールした後に読み込んでね。」ということをやっています。Rのバージョンなどによっては警告など出るかもしれませんが、エラーでなければ問題なく使えると思います。

では各チームの人数を見てみましょう。まずは説明の前に以下のコマンドを実行してみて下さい。

df %>%
group_by(Team) %>%
summarise(NumOfPlayers = n()) %>%
as.data.frame()

そうするとこんな感じのアウトプットがあったはずです。なんとなく各チームの選手の数が数えられていそうですね。

Team NumOfPlayers
1     A東京           12
2  FE名古屋           13
3    SR渋谷           13
4      愛媛           11
5      茨城           12
6      横浜           14
...

順を追って説明します。

まず%>%という記号が出てきましたが、これはdplyrをロードすると使えるようになるパイプと呼ばれる機能です。意味は簡単で、「この記号の左のものを右のものに入力してね」という意味になります。改行して書いていますけれど、左から右にデータが流れていく感じで理解してもらえればと思います。例えば先ほどhead(df)というコマンドを書きましたが、パイプを使ってdf %>% head()と書けます。さらにdf %>% head() %>% summary()と書くと最初の数行だけに対してsummary()が実行されます。

お察しの通り別にパイプを使わなくても書けるのですが、dplyrを使ってやりがちなことはこのパイプを使うときれいに整理できるため、使うことが多いです。

続いてgroup_byです。これはSQLの知識がある人にはお馴染みかと思いますが、要するに集計する際の束ね方を指定しています。今は「各チームの」人数を集計しようとしているのでTeam列を指定していますが、例えばポジションごとに集計したいならPosition列を指定しますし、B1、B2ごとにしたければLeague列を指定します。

続いてsummarise()です。ここでは具体的な集計方法と、集計結果を格納する列の名前を指定しています。n()というのは「数を数えてね」という意味の、集計の中ではもっとも単純な関数です。ここで例えばチームごとの平均身長を求めたい場合はMeanHeight = mean(Height)などのようにHeight列に対して“mean()“`を実行したりします。他にも最大値、最小値を求める、中央値を求める等々、要件によって色々な集計関数を使用します。

as.data.frame()というのは、summarise()の時点では結果がdata.frame型ではないため、冒頭に述べた通りdata.frame型が便利なのでそれに変換している処理です。

集計をしてみる(チームごとの最低身長、最高身長、平均身長、身長の中央値を求める)

では以上を応用して、チームごとに身長の最低、最高、平均(mean)、中央値(median)をそれぞれ求めてみましょう。あとおまけとして、今回はB2のチームは除いてみましょう。その為にはこのように書きます。

df %>%
filter(League == "B1") %>%
group_by(Team) %>%
summarise(MinHeight = min(Height),
MaxHeight = max(Height),
MeanHeight = mean(Height),
MedianHeight = median(Height)) %>%
as.data.frame()

こんなアウトプットになったと思います。

      Team MinHeight MaxHeight MeanHeight MedianHeight
1    A東京       171       211   193.0000        192.5
2   SR渋谷       174       213   192.6154        193.0
3     横浜       173       208   192.3571        190.5
4     京都       173       208   188.4545        188.0
5     三遠       169       206   189.2308        187.0
...

まずfilter(Leauge == "B1"というのが出てきましたが、これは想像の通り「この条件に当てはまるデータだけしかいりません」という意味です。当てはまらないデータは以降の処理からは除外されます。

またご覧の通りsummarise()にはこうしていくつもの集計関数を一気に指定することが可能です。

データを可視化する(身長のヒストグラムを作ってみる)

さて最後に身長のヒストグラムを作ってみましょう。でもその前にデータを扱う人のちょっとした小言です。

世の中「平均」が多く使われます。平均身長や平均年収など、データが「集計」されるときは大抵の場合に平均を使ってデータが集計され、説明されることがほとんどです。平均は世の中の人のほとんどが理解しているという意味では大変便利なものですが、集計されるもとになったデータを正しく、というか誤解なく表しているかというとそうでない場合も多いです。

有名な例、でかつバスケットの例なんでちょうどいいのですが、アメリカのノースカロライナ大学で卒業生の平均年収を学部ごとに集計していたところ、ある年に地理学の平均年収がすさまじく上がったことがあったらしいのです。でもそれは地理学の学生の年収がすべからく上昇したわけではなく、実はマイケル・ジョーダンが地理学専攻だった、というオチだったと。中央値を集計していればこのようなことはないですが、平均だととんでもない人に引きずられてしまうことになります。

収入を語るときに平均は上記の理由で適切ではない場合がほとんどですが、世の中ではまだまだ年収と言えば平均で集計されており、ジョーダンのときの問題はいまだに残っていることになります。

はい、小言は終わりです。何が言いたかったかというと、集計するのであれば適切なものを選ぶべきであるし、データ担当者はなるべく集計する前のデータそのままを扱ってそのデータを理解するように努めるべきだということです。そしてその為の有効な手段のひとつがグラフを作ることです。

私はこのブログで箱ひげ図を多用しているのでそのうち箱ひげ図についても説明を書きたいと思っているのですが、今回はヒストグラムを作りたいと思います。

ggplot2

Rにはデフォルトで可視化の為の関数が色々と用意されていますが、上述の通りこのggplot2というパッケージが広く使われていて、もはや標準機能くらいの存在感があると思います。今回はこれを使いたいと思います。

ggplot2もdplyrと一緒でちょっと書き方が特殊に感じる部分はあるのですが、慣れてくるとすごくよくデザインされていると感じるようになります。ではまずは単純にヒストグラムを作成します。さっきまで%>%でしたが、ここでは+を使っていることに注意してください。

if (!require(ggplot2)) {
install.packages("ggplot2")
library(ggplot2)
}
ggplot() +
geom_histogram(data = df, binwidth = 2, aes(x = Height))

パッケージのロードについては先ほどと一緒です。

ggplot()というのはggplotを使う前のおまじないみたいなものです。ggplotはグラフをいくつも重ねて描いたりできるのですが、このggplot()+を使って表示したいグラフやその他の装飾処理をどんどん追加していくイメージで使います。

今回の場合はヒストグラムをひとつだけ追加したいので、geom_histogram()というヒストグラム描画用の関数を使い、dfデータを使うこと、棒の一本の幅が2(つまり身長2cm分)を表すこと、x軸に使う列は何であるかなどを指定しています。これを実行すると以下のようなヒストグラムが描かれたはずです。

f:id:rintaromasuda:20181015225729j:plain

先ほど平均が正しく元のデータを表さないときがあると言いましたが、このデータの平均身長はmean(df$Height)と書くと求められますが190cmくらいなんですね。しかしヒストグラムを見ると、190台後半の選手は少ないけれど、206-8cmくらいの選手はかなりたくさんいるなということが分かります。これはご存知の通り外国人ビッグマンによるものですが、例えばこういう感覚は平均身長だけ見ていれば分からなかったものです。

ではこの記事の最後にB1とB2の身長ヒストグラムを別々に作り、一緒にプロットしてみたいと思います。

ggplot() +
geom_histogram(data = subset(df, League == "B1"), binwidth = 2, aes(x = Height, fill = League, alpha = 0.5)) +
geom_histogram(data = subset(df, League == "B2"), binwidth = 2, aes(x = Height, fill = League, alpha = 0.5))

するとこんなヒストグラムができるはずです。

f:id:rintaromasuda:20181015230527j:plain

なんとなくいつもこのブログに載っているようなものに見た目が近くなってきました。このヒストグラムは色分けや透明化など見やすくするために少しだけ努力をしていますが、ここでは細かく説明することはやめておきたいと思います。実際この部分はケースバイケースで対応しなければならないことも多く、本質的ではなかったりするのですが、人に誤解なく伝わるように結構な時間がかかる部分だったりします。毎回少し違う要件があったりするので、いつもウェブを検索しては対応していたりします。

さて、今回はこの辺にしておきたいと思います。コードもすべてGitHubに上がっていますので、必要があれば参照してみてください。

*1:ちなみに、データの分析を担当することになった場合、このようにいきなり分析を対象するデータが用意されていてそれを分析する、ということはあまりないと思います。このデータそのものを用意することから仕事である場合がほとんどで、かつそこが一番の労力がかかる部分だったりします。この選手データも公式サイトから取得した後に、分析しやすいように少し加工などしています。

「カワサキ・スリーポイント・チャレンジ」にデータを使って挑む

川崎ブレイブサンダースのこんな興味深いイベントを発見しました。

来週10/17(水)の川崎ブレイブサンダースシーホース三河戦において、川崎が何本のスリーポイントを成功させるのかを当ててみようというイベントです。半分ネタのノリっぽくはあるのですが、過去のデータを見ながら当ブログも挑戦したいと思います!

過去のスリーポイント成功数

2017-18、2016-17のそれぞれレギュラーシーズン60試合にて、川崎がどれくらいのスリーポイントを成功させたのかの分布を見てみましょう。

f:id:rintaromasuda:20181013005628j:plain

どちらのシーズンも7本が標準的な本数だったようですが、そこからの拡がり方をみると2017-18シーズンの方が若干本数が少なめだったと言えそうです。川崎は2016-17からの3シーズンそこまで主力選手に変更はないですし、この程度なら有意差は無さそうなので、まあ同じくらいと見ておいて良いでしょう。

時系列でも見てみる

昨シーズンの成功数を時系列でも見てみましょう。ちなみに参考になるように三河戦は青い点で表示しています。

f:id:rintaromasuda:20181013010137j:plain

まあ標準的な7本の試合が2つあり、上にも下にもブレた試合がもう2試合という感じです。シーズンの出だし、あまり調子よくありませんね。今シーズンもまだ出だしですので、参考になるかもしれません。

またチームとして本数が多い試合が連続する、というのはあまりないみたいですね。これもヒントになりそうな発見です。

三河の被スリーポイント成功数も見てみる

三河スリーポイントに対するディフェンスも気になります。三河が昨シーズンどれくらいスリーポイントを決められたのかも見てみましょう。ちなみに先ほどと逆で、川崎戦を赤で表示しています。

f:id:rintaromasuda:20181013010325j:plain

結構スリーポイントを決められていますね。実は他のB1チームに比べて三河は被スリーポイント成功数が多めです。ディフェンスの方法でも影響しているのでしょうか。

f:id:rintaromasuda:20181009074906j:plain

これを勘案すると、三河のディフェンスが変わっていないとすれば、少し多めに見積もってもいいかもしれません。

今シーズンの両チームのスリーポイント

この記事を書いている時点で川崎は3試合、三河は2試合消化しています。川崎のスリーポイント成功数は6、10、5と推移していて、三河は被スリーポイント成功数は6、15だったようです。三河はGame 2では随分と名古屋ダイヤモンドドルフィンズにスリーを決められたようですね。

結論は?

以上のデータを踏まえまして、まだ序盤で川崎もチームとしてのまとまりにまだ課題があるであろうこと、川崎の外国籍選手が変わっていること、三河は主力のガード選手が抜けたこと、後は自分のバスケットファン的希望、山勘などを色々練り合わせまして、来週の水曜日のスリーポイント成功数を9本と予想させて頂きたいと思います!標準よりはちょっと多く決めるけれど、爆発という程ではないという数字にしたつもりです。

皆さんも是非イベントに一緒に参加して盛り上がりましょう!

純粋にデータだけで2017-18レギュラーシーズンのベストゲームを探す

Bリーグファンの皆さんにとって一番の悩みと言えば、そう、観たい試合が多すぎることですよね。フルの観戦はもちろんのこのと、ダイジェストですらすべての試合をチェックしようとすると大変です。2017-18シーズンもいくつの名ゲームを見逃したのでしょうか。

という訳でこの記事ではそんな私自身の為に、純粋にデータだけで2017-18レギュラーシーズンのベストゲームを抽出してみたいと思います。ベストゲームと書きましたが、視点を変えていくつか選んでみたいと思います。よろしくお願いします。

大接戦

観ていて楽しいゲームと言えば接戦ですよね。どちらのチームが勝つか分からない、そんな状態が最初から最後まで続けば観ている方も最後までドキドキハラハラできるというものです。それこそがスポーツ観戦の醍醐味ではないでしょうか。

そんなわけで、2017-18シーズン一番の接戦を探すべく、全ゲームの中から以下のように選んでみました。

  1. 一方がずっとリードしているとつまらないので、両チームとも一度はリードを取っているゲームを選ぶ
  2. 1の中から接戦を探したいので、両チームとも最大リードは小さくあるべき。よって両チームの最大リードを足した数が一番小さいゲームを選ぶ(ちなみに2017-18レギュラーシーズン、この値の最小値は10点でした)
  3. 2の時点で既に4試合ですが、それぞれのチームの最大リードの差がなるべく小さい方が接戦なので、8点と2点よりは4点と6点のリードを優先します。これを求める為に、両方のリードの差の絶対値を求め、そが最小のゲームを選びます。
  4. 3の時点で2試合になりました。最後にゲーム終了時の点差が小さい方を選びます。

この基準で選ばれた2017-18シーズン一番の大接戦がこちらです!

名古屋ダイヤモンドドルフィンズvs川崎ブレイブサンダース|B.LEAGUE第7節 GAME2Highlights|11.04.2017 プロバスケ (Bリーグ)

私このゲームのことは全く知らなかったのですが、YouTubeで観たらすごい白熱した試合でした!思わず「探して良かった!」と思ったほどです(笑)1Qと2Qは同点、3Qと4Qは2点差で、想定外でしたが延長までもつれ込んでいます。そして最後は1点差のフィニッシュ。手に汗握る試合とはまさにこういう試合ですね。ホームの名古屋ダイヤモンドドルフィンズが勝たなかったのが唯一残念なところでしょうか!

このゲームのスタッツはこちらです。

大逆転

面白いゲームと言えば、大逆転も面白いですよね。2017-18の中で一番の大逆転を探しましょう。これを抽出するのは簡単で、すべてのチーム勝ち試合を見て、相手のチームの最大リード得点が大きい順に並べればよいだけです。

この基準で選ばれた2017-18シーズン一番の大逆転がこちらです!

横浜ビー・コルセアーズvs名古屋ダイヤモンドドルフィンズ|B.LEAGUE第17節 GAME2Highlights|01.28.2017 プロバスケ (Bリーグ)

なんと最大24点差(しかも3Qの途中で)あり、4Q開始時点で15点差があったにも関わらず、名古屋ダイヤモンドドルフィンズ横浜ビーコルセアーズをひっくり返したゲームです。またもやドルフィンズの試合でした。最後のフリースロー、あの場面でよく2本決めたと思います!素晴らしい!

このゲームのスタッツはこちらです。

点の取り合い

最後に単純ですが、一番たくさんシュートが決まった試合を見てみましょう。やはりシュートがたくさん決まれば楽しいものです。ここでのシュートはフリースローを抜かして、フィールドゴールのみとしています。単純に両チームの合計シュート成功数で選んじゃうと一方的な試合が選ばれる可能性が出てきますが、やってみたら上手くいったのでここでは単純に両チームの合計を使って求めました。

この基準で選ばれた2017-18シーズン一番のシュートが決まった試合がこちらです!

川崎ブレイブサンダースvsシーホース三河|B.LEAGUE第11節 GAME1Highlights|12.08.2017 プロバスケ (Bリーグ)

さすがに攻撃力の高い両チームです。この試合フィールドゴールが決まりに決まって83本。このシーズンの標準的な本数は57本ほどでしたので、この試合でいかにシュートが決まっていたかが分かります。辻が24点と爆発したものの、最後にはクラッチシューター比江島にやられてしまいましたね。こちらも手に汗握る死闘でした!

このゲームのスタッツはこちらです。

まとめ

観たい試合が多過ぎます!

Bリーガーの体格を可視化する

いつも楽しく読ませて頂いております、としおさんのブログの以下の記事が面白かったので私も相乗りさせて頂きます。

ここではBリーグ全選手(と言っても2週間くらい前のある時点で公式サイトに載っていた全選手です。B1とB2のチーム所属の選手のみです。)の体格を可視化してみましょう。

身長と体重

まずは単純に身長と体重をプロットしてみましょう。普通にやったのでは面白くないので、ちょっと見づらいですが表記されていたポジション別に色を分けています。

f:id:rintaromasuda:20181010094510j:plain

やはりインサイドのプレーヤーの体格はすごそうですね。

身長 – 体重

ではとしおさんのブログで言及されていた身長引く体重の値を見てみましょう。ちなみに自分はひょろひょろなので、この値は114です(笑)

まずは単純にこの値でヒストグラムを作ります。

f:id:rintaromasuda:20181010094737j:plain

どうやら100前後が最頻値、つまりもっとも多いケースのようですね。ちなみに平均は100.3、中央値は101でした。

さてこれもポジション別に見てみましょう。これもちょっと見づらいのですが、色を分けて密度プロットをしてみたいと思います。

f:id:rintaromasuda:20181010094953j:plain

どうでしょう?

インサイドの選手の方が体格がいい、つまり身長 – 体重の値が低いことが見て取れますが、面白いのがPG、PG/SGの選手の方がSF陣よりも若干体格が良さげだということですね。確かに日本人フォワード陣は線の細い選手も結構いますからね。

Bリーガーを志すバスケットボール選手にはこのデータを頭に入れてもらって、是非正しい指導と知識のもとウエイトトレーニングに勤しんで頂きたいと思います。

「アルバルク東京のディフェンスはすごい」をデータで検証する

昨シーズンのチャンピオンに輝いたアルバルク東京ですが、ルカHCの練習での厳しさとチームのディフェンスへのフォーカスが話題になりました。よって同チームはすっかりディフェンスが強いチームというイメージが出来上がりましたが、それがデータにも表れているかどうかをこの記事ではみたいと思います。

以下で使用しているデータはすべて2017-18シーズン60試合のデータで、Bリーグ公式から取得させて頂いたデータを使用しています。

失点

バスケットの試合にはペースの速い遅いがありますので、単純に失点が少ないからといってディフェンスが強いとは言えません。が、ひとつの重要な指標であることには間違いないです。まずは各チームの失点がどの程度だったのかを見てみましょう。

f:id:rintaromasuda:20181009063729j:plain

アルバルク東京、失点低いですね。中央値(箱の中の線の場所)が70点を下回っているのはアルバルク東京琉球ゴールデンキングスのみです。琉球と言えば琉球は箱の上の部分が75点当たりにありますので、これは「琉球は60試合のうち3/4、つまり45試合を75点以下に抑えた」ということを表しています。また、同チームは昨シーズン一度も90点以上取られた試合はないようです。

ディフェンス効率

上述のようにペースの問題がありますので、バスケットボールではポゼッションという概念を利用し「このチームは100回攻撃チャンスがあったら何点取れそうなのか」というような値を出してそのチームの攻撃力を測ります(これをオフェンス効率と呼びたいと思います。)このポゼッションの数え方は色々な流派があり、かつBリーグでは公式の数字を公開していないので、私は以前にこの記事で説明した方法で近似値を出しています。

ディフェンスが良いチームであれば、相手チームのオフェンス効率を低く落とすことができるはずです。これを見てみましょう。

f:id:rintaromasuda:20181009065031j:plain

失点のときよりもA東京と琉球の差が詰まった気がしますが、それでもやはり琉球が抜けていますね。あと三遠ネオフェニックスが出てきました。三遠は以前の記事でリバウンドでの存在感も見せていましたが、ここでもディフェンスが良いことを示しています。

相手のフィールドゴール%

今度は相手チームのフィールドゴール%(2点も3点も含みます)をどのくらいに抑えたのかを見てみましょう。良いディフェンスを保っていれば、相手にタフショットを打つに至らせることができ、結果としてFG%は落ちるはずです。

f:id:rintaromasuda:20181009064420j:plain

これはアルバルク東京、そんなに優れているとは言えないようです。75%の部分(箱の上の辺)を見ると上位ではあるようですが、他のチームから抜け出すには至っていないようです。そしてここでもやはり抜け出しているのは琉球。中央値が約40%ということで、琉球戦では各チームがシュートに苦戦している様子が浮かび上がってくるようです。

相手のペイントエリア内での得点(ペイントエリア内での失点)

上述の失点のサブ指標ですが、失点をペイントエリア内でのものに絞って見てみましょう。ペイントエリアはゴールに近いのでFG%が高いシュートが打てます。よってディフェンスが良いチームであれば、ここであまり点を取られないようにしていると予想できます。

f:id:rintaromasuda:20181009065610j:plain

相手のスリーポイントによる得点(スリーポイントによる失点)

中を見たので外も見てみましょう。これも失点のサブ指標ですが、スリーポイントシュートによってどれだけ点を取られたのか、です。

f:id:rintaromasuda:20181009074906j:plain

これはアルバルク東京いいですね。箱の上の辺が20点当たりのところにありますから、同チームは60試合中45試合(75%)で相手のスリーポイント成功を7本以下に抑えていることになります。ここでも三遠がアルバルクと同様に頑張っていますね。一方で新潟は相手にスリーポイントを決められがちな傾向にあるようです。これらも興味深いです。

相手のファストブレイクによる得点(ファストブレイクによる失点)

同じ要領でファストブレイクによる失点を見てみましょう。この「ファストブレイク」がどのような定義なのかは実は知らないのですが、公式にあるデータですのである程度の統一基準で記録されていると信じて使いたいと思います。

f:id:rintaromasuda:20181009075501j:plain

アルバルク東京、相手のファストブレイクをきちっと抑えているようですね。また三遠ネオフェニックスもここで目立っています。これは以前の記事でも触れましたが、同チームがりオフェンスリバウンドを積極的に取りに行かないという戦略によるものではないかと推測されます。

まとめ

アルバルク東京のディフェンスは確かに良いようですが、このデータでは琉球ゴールデンキングスが総合してより良いディフェンスをしていたことが予測されます。また三遠ネオフェニックスも悪くありませんでした。

書評「稼ぐがすべて」(葦原一正)

稼ぐがすべて   Bリーグこそ最強のビジネスモデルである

稼ぐがすべて Bリーグこそ最強のビジネスモデルである

Bリーグの事務局長である葦原一正さんが書かれた「稼ぐがすべて」を読みました。葦原さんはTwitterでもBリーグに関する面白い情報をいつも発信されており楽しくフォローさせて頂いていたので、本書も発売を知ってすぐ購入に決意し、Amazonにて予約購入しました。

色々なところで既に書評も出ているようなので、私はソフトウェアエンジニア兼データサイエンティストらしい私なりのコメントをいくつかしてみたいと思います。

プラットフォームをゼロから作れる喜び

まず第1にBリーグのデジタルマーケティングを支えるシステムについてです。本書では観客に関するデータを、各クラブではなくリーグが管理するといったBリーグCRM(カスタマーリレーションシップマネジメント)システム構築の方針に述べられています。

葦原さんがバスケットボールにチャレンジした大きな理由の一つとして、既存のしがらみに囚われず、事業戦略を含めてゼロからスタートできるチャンスだったことを挙げられています。私の個人的な予想ですが、ここにはソフトウェアシステムの構築に関する内容もかなり含まれていると思います。

長くソフトウェアの業界に身を置いていれば誰しも経験することですが、長生きするソフトウェアシステムというのは、人間関係的にも技術的にもありとあらゆるしがらみに囲まれることになります。

よって例えばデータを一元管理したい、速度を上げたい、信頼性を上げたい、といった要望が出てきても、根本的な対策は出来ないことがほとんどです。そして小手先の変更を繰り返していくうちに、スパゲッティとか温泉旅館とか揶揄されるようなシステムになっていきます。

エンジニアにとってあるシステムをゼロから構築し直すというのは、ある意味ドリームプランなのです。「ゼロから作り直せたら絶対こうするのにな!」というリストが頭の中に山程あるのです。しかしそれを実行に移すチャンスというのは滅多にありません。

このBリーグのシステムはおそらくクラウド上かなんかにゼロから作り上げたのだと思いますが、そのようなシステムをゼロから構築する機会を得たということは、本当に現場の担当者にとっては素晴らしい機会だったのではないかと思います。

データドリブンとはバランス感覚のこと

データに踊らされない、という箇所は非常に共感し大いに頷きました。私はデータの仕事をしているのですが、基本的には仮説や信念が大事だという葦原さんのコメントに同意してます。

データドリブンで意思決定、みたいなことが言われて久しいですけども、ときどき「自分が何も考えなくてもデータが行く先を照らしてくれる」と考えているのではないかと思う人に出会うことがあります。

あくまでデータが示してくれるのは、例えばある事象が起きそうな確率であったり、ただの値です。最終的にそれをどう解釈し、どのような実行に移すかの決断は人間がやらないといけない領域です。それを分かっていない人は意外に多いと思ってます。

最終的にデータドリブンというのは、分析をする側が葦原さんのいうように仮説なり信念なりを持ち、それとデータ分析の結果のバランスを取って行動することをいうのだと思います。だから自分の仮説に拘り過ぎてデータを無視することも、自分に信念がなくデータが方向性を決めてくれると盲信することも、同じようにデータドリブンではないのだと思います。

セカンダリーマーケットの話が面白い

個人的に1番面白いと思ったのは130ページにあったセカンダリーマーケットの話です。セカンダリーマーケットというのは、簡単に言えば転売所で、自分が買ったチケットをさらに他の人に売るための場所です。

NBAではこの用途のための専用の公式プラットフォームがあるそうで、 Bリーグでも導入を検討しているとのこと。このセカンダリーマーケットを持つと大変素晴らしいのが、セカンダリーで購入する顧客のデータを手に入れることができることです。「潜在顧客」の可能性が高いとすれば、より価値があるかもしれません。

この辺はBリーグで自前で作ってもいいでしょうし、もしかしたらメルカリさんなんかと提携してやるという可能性もあるかなと個人的には思いました。色々と可能性がある分野だと思います。

最近ではスポーツチケットの分野にブロックチェーンなどのテクノロジーを導入するという話を目にすることも多いです。大抵いわゆるブロックチェーン、もしくは分散型台帳である必然性がない話だったりもするのですが、いずれにせよ誰がどんなチケットを所有していて、誰と誰がそのチケットの売買をしたのかなど、知ることができればマーケティング的にはさらなる大きなインサイトが得られる可能性があると思います。

まとめ

まだまだ旅は始まったばかりのBリーグですが、何となくこれまでを振り返る為にも、これからのBリーグの発展を考える為にも、スポーツビジネスについて学ぶ為にも、おすすめの1冊だと思います。

Break the border!

「リバウンドを制する者はゲームを制す」を見てみる (2)

前回の記事の続きです。

ご存知の通りリバウンドにはディフェンスリバウンドとオフェンスリバウンドがあり、チームの戦略などによってはかなり意味合いが異なってくるものなので分けて見てみましょう。最近では例えば「相手にファストブレイクで得点されるくらいならオフェンスリバウンドなんか取りに行くな」みたいな考えもあると聞きます。

ディフェンスリバウンド

ディフェンスリバウンドの取得率を見てみましょう。これは以下のように求めたいと思います。まあ簡単に言えばどれだけ相手にオフェンスリバウンドを取らせなかったか、ということになります。

ディフェンスリバウンドの取得率 = (自チームのディフェンスリバウンド)÷ (自チームのディフェンスリバウンド + 相手チームのオフェンスリバウンド)

こちらがその値を2017-18レギュラーシーズン60試合分取得し、箱ひげ図にプロットしたものです。

f:id:rintaromasuda:20181007062045j:plain

アルバルク東京、抜きんでてしっかりとディフェンスリバウンドを取っていますね。注目したいのが三遠ネオフェニックスの頑張りです。前回の記事ではあまり目立っていませんでしたが、ディフェンスリバウンドだけ見るとしっかりと相手のオフェンスリバウンドを抑えていることが分かりますね。

オフェンスリバウンド

こちらはオフェンスリバウンドです。攻撃のチャンスをもう一回増やせるオフェンスリバウンドは観ている方のテンションも上がりますよね。バスケットボールで最も盛り上がるプレーのひとつと言ってもいいと思いますが、各チームどれくらいオフェンスリバウンドを取っているでしょうか。

先ほどの値と逆の値ですが、相手のディフェンスリバウンドと比べてどのくらいのオフェンスリバウンドを取った方を見てみましょう。

オフェンスリバウンドの取得率 = (自チームのオフェンスリバウンド)÷ (自チームのオフェンスリバウンド + 相手チームのディフェンスリバウンド)

f:id:rintaromasuda:20181007062740j:plain

三遠のオフェンスリバウンド取得率おもしろい!これはおそらく冒頭で述べた通りチームの方針か何かだと予想しますが、ディフェンスリバウンドに比べて極端にオフェンスリバウンドを取っていないです。一方で川崎、栃木、琉球という強豪チームはオフェンスリバウンドをかなり取得しているようで、ここら辺だけ見るとやはりまだまだオフェンスリバウンドというのはBリーグで勝利する為には重要なのではないかと思えます。

ただ三遠の試合結果だけを見ると、オフェンスリバウンドを取ったかどうかはそこまで試合結果に相関がなかったようです(FALSEが負けた試合の値、TRUEが勝った試合の値です。)

f:id:rintaromasuda:20181007063852j:plain

一方でディフェンスリバウンドは相関がある程度あったように思えます。

f:id:rintaromasuda:20181007063906j:plain