今回は、各地の気温と降水量のデータを使ってクラスター分析をしてみたいと思います。
まずは、データをR言語に読込みます。read.csv関数ですね。
まずは、階層的クラスター分析をしてみます。
この本「現場ですぐに使える!R言語プログラミング逆引き大全350の極意」を参考にやってみます。
まず、距離(または類似度)を求めるデータを行列にします。
as.matrix関数でdataを行列に変換し、rownames関数で行列の列名を都市の名前にして、head関数で行列の始めの6行を表示しています。
こうして作成した行列の距離(類似度)を計算した結果を別の行列にまとめます。
dist関数で距離の行列ができます。例えば、札幌と青森の距離(類似度)は211で、札幌と盛岡の距離(類似度)は236ですから札幌には青森のほうが似ているとわかります。
こうして作成した距離(類似度)行列をhclust関数で処理するとクラスター分析できます。
plot関数で結果が樹形図で表示されます。
樹形図の左端を拡大したところですが、岡山と高松、札幌と青森、水戸と千葉などと近接する県どうしがつながっているのがわかります近接する県は気温や降水量が似ていますからね。
いままでのクラスター分析は階層的クラスター分析と呼ばれるものです。
それとは違う、非階層的クラスター分析をしてみます。階層的クラスター分析は分析するデータの数が多いと計算量が膨大になることから、大量のデータ解析には向いていないそうです。そういうときは、非階層的クラスター分析をするそうです。
kmeans関数を使います。
kmeans(行列, X)でXがクラスターの数です。樹形図を見ると大きくわけて3つに分かれるので3にしてみました。関数の結果は$clusterでわかります。札幌や青森、秋田は3のグループ、宮崎、鹿児島、那覇は1のグループと分類されます。
$centersでクラスターの中心を、$sizeで各クラスター内のデータ数を表示します。
plot関数で散布図を描きましょう。
なんかわかりにくいですが、左下が緑、右上が黒の〇が多くプロットされています。
以上、クラスター分析でした。