UnsplashのSora Saganoが撮影した写真
前回までは回帰分析をしていましたが、
今回はR言語でクラスタリングをしてみようと思います。
まず、クラスタリング用のデータフレームとして、aggregate()関数とmean()関数を使って3年間の平均の値のデータフレームを作成します。
あんまり相関の強い変数は使いたくないので、各変数の相関係数を調べてみます。
numとritsuが -0.301, numとtworatioが -0.506, ritsuとtworatioが 0.230 と相関が低いので、この3つの変数を使ってクラスタリングをしましょう。
とりあえず、この3つの変数の散布図を作成してみます。
クラスタリングは、今回はhierarchy clustering をやってみます。
まず、num, ritsu, towratioだけのデータフレームを作ります。
head()関数ではじめの数行を表示しています。
rownames()関数でデータフレームの行名を設定してます。
つぎの作業は、
scale()関数で変数を平均値0、標準偏差1に標準化します。
summary()関数でデータフレームのサマリーを表示しました。3つの変数のMeanが0になっていることがわかります。
次は dist()関数で距離を計算します。
これは、正直いってよくわかりません。
こうして作成したdistanceオブジェクトをhclust()関数で処理します。
plot()関数で結果を表示できます。
Tokyoがポツンと一軒家状態ですね。Tokyoは特殊なんですね。
Aichi, Kanagawa, Osakaが固まっていたりしていて、なんとなくなるほどね、と思います。
このクラスターの樹形図を基にして、3つのグループにわけてみましょう。
イメージは上の図のように3つにわけます。
df_clがsclae()関数の作用でマトリックスに変換されているので、as.data.frame()関数でデータフレームに戻しています。cutree()関数でk=3にして3つのクラスターにわけています。Aichi, Chiba, Ehimeが1、Akita, Aomorim Fukiが2とグループ化されました。
散布図にしてどのようにクラスタリングされたのかを見てみます。
plot()関数の中で、type = "n" にしてプロットしないようにして、text()関数で文字を表示しています。きれいににグループ化されていることが確認できます。
他の2つの組み合わせも確認しましょう。
うまく3つのクラスターに分けられていることが確認できました。
今回は以上です。
次回は
です。
初めから読むには、
です。
今回使用した関数は
aggregate()関数 : データフレームの値の集計
mean()関数 : 平均値を計算
cor()関数 : 相関係数を計算
plot()関数 : 散布図を描く
head()関数 : データフレームのはじめの数行を表示
rownames()関数 : でデータフレームの行名を表示
summary()関数 : データフレームのサマリーを表示
dist()関数 : 各観測間の距離を計算
hclust()関数 : 距離からクラスターを作成
as.data.frame()関数 : マトリックスをデータフレームに変換
cutree()関数 : クラスターをグループ分け
text()関数 : グラフの中に文字を表示
でした。