各選手がどのように得点を挙げているのかをグラフにして見てみる (2018-19シーズン B1 第11節終了時点)

Bリーグは代表戦に向けて小休憩モードに入りました。こんなときこそデータのブログを頑張りたいと思います。

以前にも書いたネタですが、各選手の得点をそれぞれ2点シュートによるもの、3点シュートによるもの、フリースローによるものに分割し、それぞれの総得点に対する割合を見てみます。

今回はB1の第11節終了時点のデータを使い、総得点の多い方から100人の選手を見ていきましょう。名前の隣の()内にある数値が総得点数です。

総得点1位から20位

f:id:rintaromasuda:20181125234816j:plain
f:id:rintaromasuda:20181125234827j:plain

前回の記事では数人の日本人選手がここに顔を出していたのですが、今シーズンのレギュレーションの変更によるものか、すっかり外国籍選手の名前ばかりになってしまった印象です。その中で奮闘する川村の得点力はさすがです。

個人的にこの中で注目するのはサザランドのスリーポイントによる得点と、カミングスのフリースローによる得点です

サザランドは非常に運動能力が高く、ペイントにドライブで入ってくるだけで相手チームにとって大きな脅威です。それに加えて外まで上手いとなれば、どうやって彼を止めればいいのでしょうか。

カミングスはここまであまりプレーを見れていませんが、どうやら非常にファウルドローンの巧みな選手のようですね。多くの得点をフリースローで挙げています。総得点トップのガードナーや京都のマブンガもファウルをもらうのがとても上手い選手です。

総得点21位から40位

f:id:rintaromasuda:20181125234838j:plain
f:id:rintaromasuda:20181125234950j:plain

ここで注目したいのはまず名古屋ダイヤモンドドルフィンズの安藤。今シーズンはスリーポイントを量産していて、このまま行けば川村や金丸と日本人得点王を争う存在にもなれそうです。代表候補にも選ばれ、目が離せない選手になってきました。

上述のサザランドと同じく、スリーポイントで目立つ外国籍選手が琉球ゴールデンキングスのエアーズや大阪のハレルソンです。近代バスケットの潮流なのでしょうか、このように外国籍ビッグマンが外から多く得点するケースもどんどん増えてくるかもしれません。

また相変わらずインサイドでの存在感を放っているギブスのフリースローによる得点力にも注目です。30%を超えるケースはなかなかなく、昨シーズンはマブンガひとりだけでした。

総得点41位から60位

f:id:rintaromasuda:20181125234852j:plain
f:id:rintaromasuda:20181125235012j:plain

シューター陣が出てき始めたのが色で分かりますね。まず晴山ケビンのスリーポイントに注目。京都といえば岡田優介がピュアシューターの役割を担っていたと思いますが、今シーズンはそこに晴山も加わったでしょうか、65%に迫るの得点をスリーポイントにて挙げています。

宇都は今シーズンはスリーポイントをもっと打ってくるのではと予測していたのですが、現時点では昨シーズンと同程度の割合です。チーム全体のオフェンス力が挙がったことにより相対的に宇都の総得点は落ちましたが、宇都にはもっと得点を挙げてもらいたい気持ちです。

総得点61位から80位

f:id:rintaromasuda:20181125235028j:plain
f:id:rintaromasuda:20181125235042j:plain

琉球の岸本と京都の岡田のピュアシューターぶりがすごい!岡田は上述のように以前からピュアシューターの役割を預かっている選手ですが、岸本に関しては並里の参加により一気にプレーがシューターよりになったのでしょうか、70%を超える得点をスリーポイントで挙げています(昨季は57%ほど。)岡田に至ってはスリーポイントの割合がなんと80%を超えています!

総得点81位から100位

f:id:rintaromasuda:20181125235052j:plain
f:id:rintaromasuda:20181125235103j:plain

ここで注目したいのはレバンガ北海道の桜井です。桜井は昨シーズンも総得点の28%ほどのフリースローで挙げているのですが、それはリーグで2位の数字でした(1位はマブンガ。)今シーズンもその傾向は続いているようですね。私はプレーでは解説できないのですが、おそらく北海道の鉄人はファウルをもらうことに長けているのだろうと数値から推測しています。

まとめ

現時点での総得点が多い方から100人、得点の取り方の割合を見てみました。代表戦の2連戦が終わればシーズンは中盤に向かっていきますが、ここからどのような変化があるでしょうか。注目です。B2のデータを出してなくてすみません。きっと後日やります…

観客動員数の推移を昨シーズンと比べてみる

今回は観客動員数のデータを使います。普段はスタッツの分析をしていますが、こういうビジネス系のデータも大好きです。と言ってもあまり表には出てこない類のデータなのであまり詳細な分析はできませんが、Bリーグ観戦のリピーターの分析とか、コホート分析とか、ユニークユーザー数の分析とかそういうマーケティング分野のデータ分析もしてみたいものです。

さて確かBリーグは観客動員数の昨シーズン比で10%増を目標にしているはずです。2018-19シーズンも4分の1が終了しましたが、観客動員数の様子はどうでしょうか。平日開催を増やした影響はどうなっていますでしょうか。今回は昨シーズンと今シーズンの両方でB1に残っている16チームを対象に、観客動員数の推移を両シーズンで比較してみたいと思います。

平均観客動員数

ではまずは各開催日別に、その日にあったゲームの平均観客動員数を見てみましょう。図の中にある点はゲームがあった日を表していますが、水曜日、土曜日、日曜日以外の曜日の場合に、その日は1ゲームしかない、という場合もあります。水曜日開催は何かと話題になるので、特別にラベルを付けています。

f:id:rintaromasuda:20181116231847j:plain

開幕は観客動員数トップ、千葉ジェッツのホームアリーナでの開催であったこともあり、昨シーズンの開幕に大きな差を付けることに成功したようです。水曜日開催も昨シーズン同時期の水曜日開催と比べて劣っておらず、まずまずの良いスタートを切ったように見えます。

ただ懸念事項として、このシーズン最初の4分の1で既に千葉ジェッツのホームゲームが11ゲーム、つまり3分の1以上も終わってしまっています。つまり動員数トップの千葉ジェッツパワーはもう3分の2しか残ってないことになり、これは後半の観客動員数の伸びを引っ張る要因となりそうです。また後述しますが、連続のホームゲームが祟ってか、千葉ジェッツとしてはあまり良いスタートが切れていなかったようです。

図にあるようにシーズン後半に向けて観客動員数は伸びる傾向にあります。リーグとしては今シーズンの終盤に向けた伸びを、千葉ジェッツの力に頼らずに如何にブーストできるの。それが観客動員数10%増に向けての課題になりそうです。

では次に16チームをそれぞれ見ていきましょう。順番は適当です。

千葉ジェッツ

f:id:rintaromasuda:20181116233130j:plain

4千人を普通に超えてくるさすがの集客力ですが、上述のとおり昨シーズンと比べると好調なスタートとは言えないようです。昨シーズンはむしろ後半にホームゲームが多かったようですが、今シーズンは前半に集中しました。この結果がどう全体の動員数に響いてくるのか。一番影響の大きいチームなだけに気になるところです。

栃木ブレックス

f:id:rintaromasuda:20181116233459j:plain

開幕は少し昨シーズンよりも少なかったようですが、概ね昨シーズンと同じような推移です。今シーズンの水曜日開催の人数が4千人に近いことから、昨シーズンを少し上回っていると言ってもよいかもしれません。

レバンガ北海道

f:id:rintaromasuda:20181116233802j:plain

レバンガ北海道も開幕は昨シーズンに比べて奮わなかったようですが、この序盤でその後に6千人を動員してみせるあたりはさすがの集客力です。

昨シーズンはちょこちょこと平日開催があったようです。週末であれば4千人オーバーを期待できるチームですので、後半戦に向けてさらなる貢献が期待されます。

琉球ゴールデンキングス

f:id:rintaromasuda:20181116234111j:plain

非常にブレのない観客動員数を誇るゴールデンキングスです。今シーズンの数字は昨シーズンと同等の様に見えますが、平日開催が多かったことを鑑みると、実質今シーズンの方が上だと言えると思います。早く新アリーナが竣工して、もっともっと動員できる環境が揃うのが楽しみですね。

川崎ブレイブサンダース

f:id:rintaromasuda:20181116234520j:plain

経営の体制という意味では一番変化のあった川崎ブレイブサンダースですが、アリーナ内のオーロラビジョン、スチャダラパーによる音楽プロデュース、新たなアリーナグルメなど、今シーズンは観戦環境に様々な投資を仕掛けてきました。

早くも結果が出ているのでしょうか、昨シーズンに比べて客足が非常に良いです。このまま川崎も「集客の強豪チーム」に加わってくれれば、リーグ全体にとっても素晴らしい影響がありそうです。

滋賀レイクスターズ

f:id:rintaromasuda:20181116235020j:plain

実はこの分析をしてみようと思ったのは、先日Bリーグの特別研修にて「(オフシーズンのごたごたが関連してか)滋賀、京都、新潟、大阪の観客動員数が芳しくない」という話を大川チェアマンがされていたと記事で読んだからです。

実際に見てみると、例えば滋賀に関しては昨シーズンを下回っているように見えますが、平日開催が続いていることを考慮するとそこまで集客が落ちたようには思えません。どうでしょうか。

京都ハンナリーズ

f:id:rintaromasuda:20181116235308j:plain

京都も開幕を両シーズンで比べれば今シーズンが悪く思えますが、開幕を金曜開催のひとつと見ると昨シーズンと同様程度です。その後すぐに4千人にせまる動員もあり、これもまだ客足が落ちたと断定するには時期早々でしょう。

開幕については他のチームも同様なのですが、おそらく集客しやすいイベントのはずなので、それを最大限に活かすためにも週末開催が望ましいかもしれません。

新潟アルビレックスBB

f:id:rintaromasuda:20181117051207j:plain

こちらも同様で、開幕の入場者数減は木曜日開催が影響していると思われます。TwitterのTLで教えて頂いたのですが、新潟などになるとホーム開催にも関わらず普通に数十km単位で自宅からアリーナまで運転してこなければならない方も多くいらっしゃるようで、そうした方々にはやはり平日開催は不便なことも多いかもしれません。

エヴェッサ大阪

f:id:rintaromasuda:20181117051610j:plain

大阪も開幕は動員数が減っているのですが、他のチームに比べて落差が激しく3千人くらい減っているようです。確かそれに関する話題もTwitterで見た記憶がありますが、これはさすがに何かしらの対策が要りそうです。ただそこからは昨シーズンを上回る推移を見せています。

アルバルク東京

f:id:rintaromasuda:20181117051847j:plain

昨シーズンを上回ってはいるものの、王者であり人気の選手を多く抱える割には集客が寂しいという印象です。今のホームアリーナはあまり大きくないと聞いていますが、これで満員という事はないですよね。新アリーナの話もありますし、王者には集客でも安定した力を期待したいです。

シーホース三河

f:id:rintaromasuda:20181117052130j:plain

ほぼ昨シーズンと同様の動きを見せています。人気選手が数人チームを離れたものの、基本的にはアルバルク東京と同じく強豪チームにふさわしい集客を期待したいです。新しく入った岡田の集客への好影響も期待。

富山グラウジーズ

f:id:rintaromasuda:20181117052315j:plain

すごく面白くて、推移が昨シーズンとかなり似ています。富山は今年は強いので、それが集客に繋がるといいですね。昨シーズンは終盤に向けてどんどん集客を伸ばしていますが、チームは逆に残留プレイオフに向けてどんどんピンチになっていったはずです。今シーズンのチームは違う展開になりそうなので、それがどう集客に影響してきますでしょうか。

名古屋ダイヤモンドドルフィンズ

f:id:rintaromasuda:20181117052632j:plain

名古屋は今シーズンは堤幸彦さんに演出をお願いするなどしてエンターテイメント性を高めているとのことですが、開幕は土日開催にも関わらず昨シーズンと比べて大幅には動員が減ってしまったようです。チームも強いですし、昨シーズンのように中盤で5千人、といった集客を見せて欲しいところ。

サンロッカーズ渋谷

f:id:rintaromasuda:20181117053038j:plain

サンロッカーズ渋谷も序盤の水曜日開催を昨シーズンと比べると千人レベルで動員を減らしているようです。同チームはホームアリーナの立地も良く、平日でもお客さんを呼べそうではありますが、逆に言えば競合するエンターテイメントがたくさんあるということにもなります。都市部ならではの戦略で集客増を目指して欲しいです。

三遠ネオフェニックス

f:id:rintaromasuda:20181117053421j:plain

三遠も出だしの客足は鈍いように見えます。昨シーズンの序盤にあった水曜日開催に、今シーズンの週末開催が負けていますね。決して派手さのあるチームではありませんが、寺園やチルドレスなど話題になっている選手もいますので、そこを更に活用して集客につなげることができるでしょうか。

横浜ビー・コルセアーズ

f:id:rintaromasuda:20181117053703j:plain

開幕を除き水曜日開催の集客はいまいちのように見えますが、まだ全体としては昨シーズンと同様程度に収まっているでしょうか。昨シーズンは終盤に向かって客足が悪くなっていますね。同じく残留プレイオフに進んだ富山とは対照的です。ビーコルは今季も苦戦が続いていますが、それが集客にも響くと昨シーズン同様に終盤が落ち込むかもしれません。

まとめ

昨シーズンも今シーズンもB1に残っている16チームの集客のデータを見てみました。水曜日開催の増加など、今シーズンの施策がどのように今後の集客に影響してくるのか、動員数10%増は達成できるのか、中盤戦も動員数には要注目です。まあ自分ももっと観戦に行けよって話もあるんですけどね。

日本人ビッグマンと外国籍ビッグマンの体格とプレータイムを比較する

今回は小ネタです。

相変わらずビッグマンに関する議論が盛んです。もちろんいわゆるオンザコート2、つまり外国籍選手が常時ふたりコートに立てるようになった制度変更がきっかけですが、そこから派生してビッグマンの育て方や、日本人ビッグマンの体格に関することなど、色々な議論が交わされています。

今回はそんなビッグマンのデータを少しだけ見てみましょう。ちなみにここで「ビッグマン」と呼ぶのは、Bリーグの公式ページに記載されている選手の中から、ポジションにPF、またはCの記述がある選手を指しています(よって190cmのSF/PF表記でもここではビッグマンです。)

また、同ページにある国籍の情報を使い、選手を日本、帰化、外国籍の3グループに分けています。2018年11月6日時点のデータを使っています。

体格

まずは体格を見てみましょう。x軸を体重、y軸を身長としてプロットしてみました。B1とB2で図を分けています。

f:id:rintaromasuda:20181108070723p:plain
f:id:rintaromasuda:20181108070738p:plain

B1の日本人ビッグマンは195~200cmがボリュームゾーンのようですが、B2になると195cm以下がボリュームゾーンのようです。正直B2は日本人ビッグマンと外国籍ビッグマンの差が大きいようで、B2はおそらくインサイドの争いはほぼ外国籍選手同士の争いのみという状況になっているのではないでしょうか。

また、これもB2の方で傾向が明らかですが、体重においても外国籍選手との間にはかなりの差があるようです。富山のジョシュア・スミス(ちなみにリーグで最も重い選手)のプレーを見ていると分かりますが、体重があることはインサイドで大きなアドバンテージになります。身長と違いウエイトトレーニング等で育てられる部分ですので、日本のインサイド陣には頑張ってもらいたいところです。

総プレータイム

ここまでの総プレータイムを見てみましょう。総プレータイムなので、属するチームの試合数や、その選手の参加時期にも影響されますが、全体を見れば傾向を理解することは出来ると思います。

各グループ間で人数が違うので密度プロットにしてみました。ちなみに帰化選手は数が少ないため、ここでは対象から外しました。

f:id:rintaromasuda:20181108070752p:plain
f:id:rintaromasuda:20181108070815p:plain

まずB1もB2も、明らかに外国籍選手の方がプレー時間が長いという、皆さんご存知の傾向があります。またB1の方は、いわゆる3人目の外国籍選手、つまり選手登録はされているけれどベンチには入れない選手の存在もデータに表れているように思います。

B1、B2どちらのデータを見ても、日本人ビッグマンで最もプレーしている選手でも、外国籍選手の標準のプレータイム程度という構図になっているようです。

1試合平均のプレータイム

1試合平均のプレータイムも見てみましょう。こちらは「出場した試合におけるプレータイムの平均」です。よって出場した試合数の多い少ないにはあまり影響はされていないはずです。

f:id:rintaromasuda:20181108070831p:plain
f:id:rintaromasuda:20181108070847p:plain

先ほどの傾向、「日本人ビッグマンで一番長くプレーしている選手が、外国籍選手の標準と同程度」はここでも見られるようです。B2ではほとんどの外国籍選手ビッグマンが平均30分以上プレーしているようで、最頻値(山が一番高い所)は35分程度となっています。皆さん出ずっぱりと言っても良さそうです。一方で日本人ビッグマンの最頻値はどちらのリーグも平均で10分程度のようです。

ちなみにプレー時間の長い日本人ビッグマンには以下のような選手がいるようです。身長を見るとどちらかというとSFとして外国籍ビッグマンと併用して起用されている選手が多いような気がしますね。実質のトップは熊本の中西、A東京の竹内でしょうか。

チーム 名前 身長 総プレータイム 試合平均プレータイム
愛媛 笠原 太志 188cm 385:25 29:38
東京Z 高山 師門 188cm 347:49 26:45
熊本 中西 良太 200cm 284:03 25:49
千葉 小野 龍猛 197cm 178:19 25:28
A東京 竹内 譲次 207cm 297:07 24:45
大阪 熊谷 尚也 195cm 162:18 23:11
A東京 ザック・バランスキー 193cm 268:25 22:22
香川 高田 秀一 195cm 263:50 21:59
西宮 谷口 淳 192cm 281:59 21:41
青森 臼井 弘樹 193cm 258:15 19:51
栃木 竹内 公輔 206cm 192:27 19:14
名古屋D 張本 天傑 197cm 216:42 18:03
福島 前田 陽介 188cm 234:28 18:02
金沢 井上 裕介 195cm 227:25 17:29
渋谷 満原 優樹 198cm 209:03 17:25
福島 武藤 修平 192cm 225:08 17:19
三遠 太田 敦也 206cm 207:02 17:15
滋賀 荒尾 岳 198cm 187:36 15:38
東京Z 村越 圭佑 195cm 193:39 14:53
福岡 加納 誠也 196cm 173:21 14:26

Bリーグではどれくらいまで「あきらめたら試合終了ですよ」と言えるのか

第4節で横浜がQ4開始時点で16点差あったリードをひっくり返し大逆転するというドラマがありました。いまハイライト動画を観ても横浜ブースターの興奮と、そして滋賀ブースターの落胆が伝わってくるようです。このような大逆転はスポーツの醍醐味のひとつですよね。

特にバスケットの場合は一度のゴールで2-3点取ることができるので、いわゆるブザービーターにおける大大大逆転までありえることは大きな魅力ではないかと思います。

横浜ビー・コルセアーズvs滋賀レイクスターズ|B.LEAGUE第4節 GAME2Highlights|10.21.2018 プロバスケ (Bリーグ)

さてこのときに横浜は16点をひとつのクォーターでひっくり返した訳ですが、どれくらいまでの点差なら逆転は可能なのでしょうか?

もちろん「あきらめたらそこで試合終了だよ」のごとく最後まで諦めないことからしかドラマは生まれませんが、一方で長いリーグ戦を勝ち抜くためには、ときに目の前の勝敗の優先順位を下げることも重要です。

この記事では昨シーズンのレギュラーシーズンの全試合のデータを元に、勝利したチームが各Qの終了時にどのくらいの得失点差にあったのかを見てみたいと思います。

まずは1Q終了時を見てみましょう。

f:id:rintaromasuda:20181102230418p:plain

やはりまだ1Qが終わったばかりなので、さすがに得失点差0が真ん中ではないですが、そんなに分布が右側にずれていないません。1Q終了時に少しビハインドだからってまだまだ勝利は掴めそうです。

でも実は計算をしてみると得失点差0(図の赤線)より左側の部分は26.1%ほどです。逆に言うと最終的に勝ったチームの73.9%は1Q終了時にリードしていたということになります。簡単には因果関係は結論できませんが、1Qが勝敗に重要なクォーターであることは疑いはないと思います。

また分布の左端を見てみると、1Q終了時に16点以上離されていたのに逆転した例はなかったということが分かります。実は今日アルバルク東京琉球ゴールデンキングスの試合があったのですが、琉球が1Q終了時点で16点の差をつけてリードし、アルバルク東京の猛反撃に期待したのですが結局そのまま追いつくことができませんでした。

続いて2Q終了時です。

f:id:rintaromasuda:20181102231135p:plain

まず分布がちょっと右側に伸びたことが分かると思います。クォーターがひとつ進むに連れて少しずつ勝利が決まりつつあるように見えます。そしてここで面白いのが左端です。なんと2Q終了時に20点差をつけられていたのにも関わらず逆転した例があったのが分かります

これは先ほどの1Qのデータと矛盾するようですが、1Q終了時点では15点以下の点差で負けており、2Q終了時点でその差は20点まで離れたが、後半に一気に逆転したということです。諦めなければなんとなるものですね。

ちなみにその逆転はこの試合で起こっています。

三遠ネオフェニックスvs名古屋ダイヤモンドドルフィンズ|B.LEAGUE第18節 GAME2Highlights|02.04.2017 プロバスケ (Bリーグ)

ちなみに以前のブログでも別の試合で名古屋ダイヤモンドドルフィンズの大逆転について取り上げました。逆転に強みのある、諦めない素晴らしいチームだと思います。

最後に3Q終了時の得失点差を見てみましょう。

f:id:rintaromasuda:20181102232448p:plain

さらに分布がぐっと右側に寄りましたね。そして左端を見ると、なんと4Q開始時点で18点もの差があったのに逆転したゲームが見つかりました。それはこのゲームです。

富山グラウジーズvsレバンガ北海道|B.LEAGUE第1節 GAME2Highlights|10.01.2017 プロバスケ (Bリーグ)

とんでもない逆転劇ですよね。4Qの得点が14-34で北海道が一気に追いついたようです。分布を見ると上述の横浜の逆転も16点差をひっくり返したのはかなり珍しいものだったことが分かります。

最後に3つの分布を重ねてみてみましょう。

f:id:rintaromasuda:20181102233305p:plain

繰り返しになりますが、クォーターが進むごとにどんどんと分布が右にずれていっているのが分かると思います。

本題に戻ると、あくまで2017-18シーズンのデータだけを見てということですが、各クォーター終了時に21点以上離されていなければまだイケるとざっくり理解していいと思います。もちろん色々な状況には左右されますが、それくらいの点差までであれば、安西先生の言葉を信じて頑張ってみてもいいのではないでしょうか。

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点と爆発したものの、最後にはクラッチシューター比江島にやられてしまいましたね。こちらも手に汗握る死闘でした!

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

まとめ

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