多次元尺度構成法

R の多次元尺度構成法は古典的なものと非定量的なものがある。N個のオブジェクトがp個の変数をもつとき、オブジェクト間の距離を求めてそこからオブジェクトの地図を求めるために使われる。

参考:Rと多次元尺度法

古典的な多次元尺度構成法

cmdscale( ) 関数を使う。

# 例によって足立浩平 (2006). 多変量データ解析法――心理・教育・社会系のための入門―― ナカニシヤ出版 第14章 p135 から。感謝

# p135 表14.1B 距離的データ
mat <- matrix(c(NA, 86, 127, 62, 0, 66, 128, NA, NA, 144, 126, 132, 137, 138, NA, NA, NA, 142, 139, 99, 143, NA, NA, NA, NA, 128, 133, 134, NA, NA, NA, NA, NA, 140, 125, NA, NA, NA, NA, NA, NA, 136, NA, NA, NA, NA, NA, NA, NA), dimnames=list(c("sha", "ouy", "sei", "kyo", "rin", "jik", "kei"), c("sha", "ouy", "sei", "kyo", "rin", "jik", "kei")), nr=7)
d <- as.dist(mat) # distに変換
fit <- cmdscale(d, eig=TRUE, k=2)
fit

# プロット
x <- fit$points[,1]
y <- fit$points[,2]
plot(x, y, xlab="Coordinate 1", ylab="Coordinate 2",
  main="Metric MDS", type="n")
text(x, y, labels = row.names(mat), cex=.7)

classical mds click to view

非計量多次元尺度構成法

非計量多次元尺度構成法はMASS パッケージの isoMDS( ) 関数で実行できる。

たぶん (?) 多次元展開法と同じ

# N行 (オブジェクト) x p列 (変数) のデータ
# それぞれの行は固有の名称であること

# p139 表14.2 色の選好データ
orange <- c(6,4,5,9,5,4,6,4,4,2,1,6,2,6,1,3,1,3,4,9)
blue <- c(1,5,5,2,3,1,3,3,1,1,1,1,1,1,3,2,1,2,4,5)
grassy <- c(3,1,5,4,3,9,8,3,5,8,9,6,6,1,5,4,2,1,6,4)
green <- c(1,1,5,3,2,5,7,6,5,7,3,6,4,1,5,6,1,2,4,3)
red <- c(6,1,1,4,3,1,4,6,8,5,4,1,3,1,1,2,1,4,1,4)
yellow <- c(5,7,5,3,6,3,6,3,4,5,6,4,5,9,5,6,1,3,5,9)
purple <- c(6,9,2,5,9,5,8,3,7,6,8,1,7,2,5,3,1,1,2,8)
dat <- data.frame(orange, blue, grassy, green, red, yellow, purple)
rownames <- 1:20

library(MASS)
d <- fit(dat)
fit

# プロット
x <- fit$points[,1]
y <- fit$points[,2]
plot(x, y, xlab="Coordinate 1", ylab="Coordinate 2",main="Nonmetric MDS", type="n")
text(x, y, labels = colnames(dat), cex=.7)

nonmetric mds click to view

個人差多次元尺度構成法

INDSCALE (INdividual Differences SCALing) , ALSCALE (Alternating Least Squares SCALing) のような3要因の個人差多次元尺度構成法をRで実行することはいまのところできない。...とQuick-Rでは書いてあったが、SOMACOF, SensoMineR というパッケージやalscalという関数でできるみたい。