【R】RでJリーグのクラスター分析
今回の目的は、クラスター分析の練習をしながら、Rの使い方に慣れること。
統計的な意味は皆無と考えている。
これは、10年前のデータを考えても、10年前のチーム構成(メンバー、監督など)は現在のチーム構成とは全く異なるので参考にならない、分析したところで意味を持たないということである。
今回使用するデータは、2007年3月から2013年12月までのJリーグの対戦成績。
> head(j2Data) Date Time Home Home_Score Away Away_Score Result 1 2007/3月3日(土) 14:00 Ftokyo 2 hiroshima 4 2 2 2007/3月3日(土) 14:00 yokohamaM 1 kouhu 0 1 3 2007/3月3日(土) 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"
最近隣法(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)