いよいよ3月にJ1が開幕します。
今年もマリノスは、目立った補強は無く、昨年までの得点力不足は解消されるのか、やきもきしておりましたが、
それに加えて絶対的司令塔の俊輔が手術で開幕には間に合わないようで、
もはやトム・クルーズ抜きでミッションインポッシブルを作るくらいミッションインポッシブルです。

さて、こうなってきますと、ファンとしましては、
シーズン中、どれくらいのゴール数を期待できるのか、
ある程度、心の準備をしておきたく思います。

以前のポストで「横浜F・マリノスの2014年全ゴールをアトリビューション分析」しましたが、
今回は、マリノスの2014年のJ1全試合のゴールおよび、その他の指標を用いて、
ポワソン分布でゴール数をモデリングし、AICでモデル選択する事をやってみます。

ポワソン分布とは、平均値のみで決定される分布でして、
有限のカウントデータを表す事に向いております。
正規分布のような左右対称ではなく、「カウントが多いことは滅多に起こらない」ような表現となります。

たとえば下記のようなものです。


※wikipediaより

ゴールに効きそうな変数として、
特にマリノスはセットプレーが強いチームですので
shooot(シュート数)のほか、CK(コーナーキック)、FK(フリーキック)、などが考えられます。
その他、「home(ホーム/アウェイ)」なども影響があるかもしれません。
さらに「shunsuke(中村俊輔の出場時間)」も考慮してみます。

以上より、データを下記のように用意しました。

【横浜F・マリノスの2014年のJ1全試合のゴールデータ】
※マリノスのホームページの試合データから独自集計
goalshunsukehomeshootCKFK
136away5212
124home11614
213away10514
020home12416
090home11121
390away1058
190home15514
00away11515
00home6511
146home9213
090away1212
090home9312
290away14315
290home17411
387away10312
264home15812
090away8517
190away1079
190home16913
290away14215
290away9411
390away12510
144home131215
252home9210
090away8114
090home10416
090away8415
090home11811
090away12518
190home6622
090away4311
390home131015
190away10616
290home14314

まずはデータをいろんな切り口でグラフにしながら眺めてみます。
ちなみにRのグラフは、ggplot2を用いると、デフォルトのグラフと比較して
50万円のエステを受けた後にプロのスタイリストが化粧をし、
さらにphotoshopで原型がなくなるまで加工した
くらいきれいに描画されます。
というのは冗談にしても、Rでのグラフの書き方はggplot2で覚えたほうがよいかと思いますので、
以下、ggplot2での描画の仕方を紹介していきます。


今回、ゴール数のモデリングが分析の目的となりますので
まずは、ゴール数をヒストグラムにしてみます。




ggplot2でヒストグラム

残念ながら0点の試合が最も多く、平均ゴール数は1.08となります。

これをhome/awayで切り分けてみたヒストグラムは下記となります。






※meltは、指定した変数ごとにデータが集計される
※geom_histgramはpositionで描画の仕方を指定(dodgeは横に並べて描画)
ggplot2でヒストグラム2

※横軸がゴール数、縦軸がカウント数(そのゴール数が起きた試合数)。
やはり、homeの方が得点しやすいようですが、3点ゴールした試合はawayの方が多いようです。
これは対戦相手(下位チームとのawayゲーム)によるものかもしれません。

次に、shoot数や、CKやFKなどの変数も加味していきながら、散布図でも確認してみます。
まずは、単純なshoot数ごとのゴール数の分布です。





ggplot2で散布図

シュート数が増えるとゴール数が増える右肩上がりのグラフです。
これをhome/awayでわけてみます。





ggplot2で散布図

同様に、CKやFKなどでも確認してみます。

ggplot2で散布図2

ggplot2で散布図3

ggplot2で散布図4

CKはやや相関ありそうですが、FKはゴールから遠い距離の場合もカウントされており、ゴールへの影響が少ないようです。
俊輔の出場時間も、一見、そこまでシュート数やゴール数に相関があるようには見えません。


さて、前置きが長くなりましたが、概要をplotで把握したところで、いよいよポワソン分布でモデリングしてみます。
「モデル1:ゴールは何にも影響を受けず一定の値をとるモデル」
「モデル2:ゴールはシュート数の影響を受けるモデル」
「モデル3:ゴールはシュート数に加えCKの影響を受けるモデル」
「モデル4:ゴールはシュート数に加えFKの影響を受けるモデル」
「モデル5:ゴールはシュート数に加えFK,home/awayの影響を受けるモデル」
「モデル6:ゴールはシュート数に加えFK,俊輔出場時間の影響を受けるモデル」

上記複数モデルの比較のための指標がAIC(Akaike Information Criterion)です。
ざっくり言うと、単純な「当てはまりの良さ」ではなく、
「出来るだけ少ないパラメータでまあまあ当てはまりが良いモデル」を選択出来ます。
これは、オーバーフィッティングなモデルを回避するために有効な指標となります。

RではAICを簡単に求めることができます。
Rのコードおよび、各モデルのAICは以下の通りです。




モデルAIC
モデル1:ゴールは何にも影響を受けず一定の値をとるモデル95.17
モデル2:ゴールはシュート数の影響を受けるモデル91.14
モデル3:ゴールはシュート数に加えCKの影響を受けるモデル93.14
モデル4:ゴールはシュート数に加えFKの影響を受けるモデル87.74
モデル5:ゴールはシュート数に加えFK,home/awayの影響を受けるモデル87.87
モデル6:ゴールはシュート数に加えFK,俊輔出場時間の影響を受けるモデル89.63

上記を見ていただいてわかる通り、「モデル4:ゴールはシュート数に加えFKの影響を受けるモデル」が、
最もAICが低い、つまり最低限のパラメータで当てはまりの良いモデル、となりました。
2014年度は、俊輔の直接FKからのゴールは0でしたが、FKの流れからのゴールはあったようで、
モデルの当てはまりにもあらわれております。
一方、CKからのゴールもあったと思いますが、単純にCKの数が多ければその分ゴールが増える、
というわけではないようです。

ggplot2で散布図5

さらに詳細な、パス成功率やポゼッション率、などのオープンデータなどがあれば、
いろんな変数をかけあわせることができそうです。

いろんなモデルをポワソン分布で作ってAICで比較することがしたかったのですが、
大半の時間をマリノスのホームページからデータを集計する事に費やしてしまったため
むしろ、それ以降は、簡単なggplot2の使い方紹介、
およびモデリングのあてはめは、Rの1行で終わってしまいました。


※モデルの選択などの詳細は『データ解析のための統計モデリング入門』などが
参考になると思います。