【R】RでJリーグのクラスター分析

今回の目的は、クラスター分析の練習をしながら、Rの使い方に慣れること
統計的な意味は皆無と考えている。
これは、10年前のデータを考えても、10年前のチーム構成(メンバー、監督など)は現在のチーム構成とは全く異なるので参考にならない、分析したところで意味を持たないということである。

今回使用するデータは、2007年3月から2013年12月までのJリーグの対戦成績。

> head(j2Data)
             Date  Time      Home Home_Score      Away Away_Score Result
1 2007/33() 14:00    Ftokyo          2 hiroshima          4      2
2 2007/33() 14:00 yokohamaM          1     kouhu          0      1
3 2007/33() 14:00     ooita          1   niigata          1      0

      ・・・・・・・・・・・・・・・・

2140       2013/12/07() 15:30   shimizu          1    kasiwa          2      2
2141       2013/12/07() 15:30     iwata          3     ooita          1      1

これからホームチームと対戦成績を抽出する。

> tableResHome<-table(j2Data$Home,j2Data$Result)
> tableResHome
             0  1  2
  chiba     10 16 25
  Coosaka   16 32 20
  Ftokyo    22 41 39
  fukuoka    2  4 11
  Goosaka   26 56 20
  hiroshima 25 51 26
・・・・・・・・・・・
  urawa     29 53 37
  yamagata  18 14 19
  yokohamaC  2  3 12
  yokohamaM 29 56 34

これが今回の分析対象であるデータ行列である。
【Rによるデータサイエンス】クラスター分析」にて学習した内容を参考にして、クラスター分析を行う。

◎距離の算出
収まりきらないくらい膨大な量なので最後の方は省略。

> (tableResHome.d<-dist(tableResHome))
              chiba   Coosaka    Ftokyo   fukuoka   Goosaka hiroshima     iwata   kashima    kasiwa  kawasaki      kobe     kouhu     kyoto    nagoya   niigata
Coosaka   17.804494                                                                                                                                            
Ftokyo    31.064449 21.863211                                                                                                                                  
fukuoka   20.099751 32.572995 50.527220                                                                                                                        
Goosaka   43.370497 26.000000 24.535688 57.974132                                                                                                              
hiroshima 38.091994 21.863211 16.673332 54.433446  7.874008                                                                                                    
iwata     42.071368 30.380915 11.357817 61.106464 21.610183 15.132746                                                                                          
kashima   57.758116 40.902323 34.942810 72.470684 16.401219 21.236761 27.820855                                                                                
kasiwa    33.030289 20.346990  6.480741 51.487863 18.055470 10.198039 10.049876 29.171904                                                                      
kawasaki  51.584882 35.185224 27.129320 67.475922 11.401754 14.071247 19.824228  8.306624 21.400935                                                            
kobe      32.664966 19.646883  8.831761 50.862560 17.720045 10.198039 12.041595 30.512293  4.898979 22.583180                                                  
kouhu      3.741657 18.681542 32.171416 19.748418 44.147480 38.948684 43.058100 59.042358 34.073450 52.716221 33.181320                                        
kyoto      6.480741 17.349352 29.983329 22.135944 42.107007 36.891733 40.865633 55.443665 31.827661 49.668904 32.388269 10.198039                              
nagoya    47.391982 31.921779 20.904545 64.451532 11.789826 10.246951 12.961481 16.062378 15.524175  7.810250 16.155494 48.270074 46.065171                    
niigata   42.965102 29.748950 16.881943 60.909769 18.574176 13.747727 11.575837 28.178006 13.601471 20.124612 11.000000 43.058100 43.197222 12.569805          
ooita     10.246951 12.083046 20.928450 29.883106 35.014283 28.948230 31.890437 49.203658 23.021729 42.497059 22.671568 11.357817 11.180340 37.749172 33.030289
・・・・・・・・・・・・・・・・・

◎階層的クラスター分析のための関数hclustを実行

> (tableResHome.hc<-hclust(tableResHome.d))
Call:
hclust(d = tableResHome.d)
Cluster method   : complete 
Distance         : euclidean 
Number of objects: 27 

クラスター分析の種類と、使用した距離の定義を確認する。
methodがcompleteであるから最遠隣法を使用し、距離はeuclideanであることが分かる。

> tableResHome.hc$method
[1] "complete"
> tableResHome.hc$dist.method
[1] "euclidean"

hang=-1として葉の高さを揃えて可視化する。

最近隣法(single)、最遠隣法(complet)、群平均法(average)、重心法(centroid)、メディアン法(median)、ウォード法(ward)によるグラフを示す。

> par(mfrow=c(2,4))
> plot(hclust(dist(tableResHome),"single"),hang=-1)
> plot(hclust(dist(tableResHome),"complete"),hang=-1)
> plot(hclust(dist(tableResHome),"average"),hang=-1)
> plot(hclust(dist(tableResHome),"centroid"),hang=-1)
> plot(hclust(dist(tableResHome),"median"),hang=-1)
> plot(hclust(dist(tableResHome),"ward.D"),hang=-1)