collect, analyze, and visualize data
/ produced by Hiroyuki Shinoda
collect, analyze, and visualize data
Article
2015.2.28
マリノスのゴールをポワソン分布でモデリングしAICで評価

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

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

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

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

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

※wikipediaより

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

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

【横浜F・マリノスの2014年のJ1全試合のゴールデータ】
※マリノスのホームページの試合データから独自集計

goal shunsuke home shoot CK FK
1 36 away 5 2 12
1 24 home 11 6 14
2 13 away 10 5 14
0 20 home 12 4 16
0 90 home 11 1 21
3 90 away 10 5 8
1 90 home 15 5 14
0 0 away 11 5 15
0 0 home 6 5 11
1 46 home 9 2 13
0 90 away 1 2 12
0 90 home 9 3 12
2 90 away 14 3 15
2 90 home 17 4 11
3 87 away 10 3 12
2 64 home 15 8 12
0 90 away 8 5 17
1 90 away 10 7 9
1 90 home 16 9 13
2 90 away 14 2 15
2 90 away 9 4 11
3 90 away 12 5 10
1 44 home 13 12 15
2 52 home 9 2 10
0 90 away 8 1 14
0 90 home 10 4 16
0 90 away 8 4 15
0 90 home 11 8 11
0 90 away 12 5 18
1 90 home 6 6 22
0 90 away 4 3 11
3 90 home 13 10 15
1 90 away 10 6 16
2 90 home 14 3 14

まずはデータをいろんな切り口でグラフにしながら眺めてみます。
ちなみに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行で終わってしまいました。

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

人気記事: