Rについて
をベースに学んでいく。
今回は多次元尺度法(PP.97-105)を扱う。
8. 多次元尺度法
多次元尺度法は、個体間の親近性データを2次元または3次元空間に配置する方法である。データから“距離(ないし類似度)”を計測し、それに基づき座標値を求め、視覚的にその相対的関係を考察する。類似したものは近方に、そうでないものは遠方に配置される。
8.1 距離
個の個体に個の項目を有するデータがあるとする。データが量的であれば何らかの距離の定義に基づき距離行列を求めることができる。ここでは個体と個体の距離を表す。
数学的に集合上の距離は以下を満たすような関数を指す:
- 非負性:
- 同一律:
- 対称律:
- 三角不等式:
対称律から、距離行列の上三角部分は無視しても問題ない。
距離はさまざまなものを定義し得る。とおいて、いくつかの距離を紹介する。
8.1.1 Euclid距離
8.1.2 Manhattan距離
8.1.3 Minkowsky距離
8.1.4 最大距離
これは距離とも呼ばれるものである。
8.1.5 Canberra距離
8.1.5 Mahalanobis距離
同じ分布に従う2つの確率ベクトルの分散共分散行列がであるとき
で定義する。
なおを1つの集団と考え、これらの平均ベクトルをまた分散共分散行列をとおくとき、とその集団との距離は
で定義する。
8.2 類似度
距離と逆の概念として類似度がある。類似度の場合、値が大きいほど個体間の関連性が強いと判断する。これにもいくつかの定義があり得る。
8.3 計量MDSのケーススタディ
関数を用いて実証してみる。距離行列から以下の変換
によりを計算し、その固有ベクトルを点の座標とする方式である。
#################### ### 多次元尺度法 ### #################### library(ggplot2) library(MASS) # data(eurodist) eur_cmd <- data.frame(x = cmdscale(eurodist)[,1], y = cmdscale(eurodist)[,2], loc = row.names(cmdscale(eurodist))) row.names(eur_cmd) <- NULL ggplot(eur_cmd,aes(x = x, y = y)) + geom_point() + geom_text(aes(label = loc), hjust = 0.5, vjust = -0.5) # 推定値の当てはまりの良さは相関係数で測る dhat <- dist(eur_cmd) cor(eurodist,dhat)^2 # irisでやってみる data(iris) iris_dist <- dist(iris[-5], method = "euclid") iris_cmd <- data.frame(x = cmdscale(iris_dist)[,1],y = cmdscale(iris_dist)[,2], name = factor(c(rep("S",50),rep("C",50),rep("V",50)))) ggplot(iris_cmd,aes(x = x, y = y, color = name)) + geom_point() + theme_light() + theme(plot.title = element_text(hjust = 0.5),legend.position = "none", legend.title=element_text(size = 10), legend.text=element_text(size = 10))