如何对 Wish(1971)报告的 12 国数据集进行多维缩放
How to carry out multidimensional scaling on 12-nations data set reported by Wish (1971)
我目前正在自学多维尺度。其中,我研究了 Borg & Groenen (2005):Modern multidimensional scaling : theory and applications。
在第 10 页,他们展示了 Wish (1971) 报告的真实数据集。 Wish (1971) 要求 18 名学生对法国和中国等不同国家对的全球相似性进行评分,评分标准为 9 分制,从 1 = 非常不同到 9 = 非常相似。由于数据集是公开的,我想在 R 中复制结果以供练习。作为第一步,我想复制 Borg & Groenen(2005 年,第 10 页)中也介绍的以下配置。
我是这样处理的:
library(smacof) ### this package contains the data set
data(wish) ### that is the data set
由于数据集包含相似性评级,我使用 MASS 包的 isoMDS 命令应用了非度量多维缩放。尽管教科书作者说的是 "two-dimensional MDS configuration",但我也尝试了更高维的解决方案。因此,我编写了一个循环,对包含 2 到 9 维的配置执行多维缩放。
X <- c()
for (i in 2:9) {
MDS <- isoMDS(wish, k = i)
X <- c(X, MDS$stress)
plot(MDS$points[,c(1,2)])
text(MDS$points[, 1], MDS$points[, 2], colnames(as.matrix(wish)), cex=.6,
pos = 1)
}
plot(X, type = "b") ### this allowed me to plot the stress levels associated with each configuration
None 的结果图类似于 Borg & Groenen (2005, p. 10) 中介绍的图。例如2维的映射如下:
我检查过该数据集与 Borg & Groenen(2005 年,第 10 页)报告的数据集相同。我还按如下方式尝试了公制缩放:
for (i in 2:9) {
plot(smacofSym(wish, ndim=i))
}
同样,我无法复制 Borg & Groenen(2005 年,第 10 页)报告的结果。但是,我不确定在尝试复制结果时是否犯了任何错误。
使用基础 R cmdscale
,我得到了与 Borg & Groenen 相似 的结果。
如果您查看 wish
的结构,您会发现它是
只是一个包含 66 个数字的向量。我将其解释为下三角
相似度矩阵。我把它转换成一个完整的相异矩阵,这样我
可以使用 cmdscale
和绘图。位置与位置大致对齐
来自 Borg & Groenen。
library(smacof)
data(wish)
## Construct distance matrix
SM = matrix(0, nrow=12, ncol=12)
SM[lower.tri(SM)] = wish
SM = SM + t(SM)
diag(SM) = 9
DM = 9-SM
## MDS & plotting
MDS = cmdscale(DM)
plot(MDS, pch=20, xlim=c(-4,4), ylim=c(-4,4))
text(MDS, labels = attr(wish, "Labels"), adj=c(0.5,-0.6), cex=0.8)
abline(0.5,0.3, lty=2)
abline(-1,-3.8, lty=2)
我目前正在自学多维尺度。其中,我研究了 Borg & Groenen (2005):Modern multidimensional scaling : theory and applications。
在第 10 页,他们展示了 Wish (1971) 报告的真实数据集。 Wish (1971) 要求 18 名学生对法国和中国等不同国家对的全球相似性进行评分,评分标准为 9 分制,从 1 = 非常不同到 9 = 非常相似。由于数据集是公开的,我想在 R 中复制结果以供练习。作为第一步,我想复制 Borg & Groenen(2005 年,第 10 页)中也介绍的以下配置。
我是这样处理的:
library(smacof) ### this package contains the data set
data(wish) ### that is the data set
由于数据集包含相似性评级,我使用 MASS 包的 isoMDS 命令应用了非度量多维缩放。尽管教科书作者说的是 "two-dimensional MDS configuration",但我也尝试了更高维的解决方案。因此,我编写了一个循环,对包含 2 到 9 维的配置执行多维缩放。
X <- c()
for (i in 2:9) {
MDS <- isoMDS(wish, k = i)
X <- c(X, MDS$stress)
plot(MDS$points[,c(1,2)])
text(MDS$points[, 1], MDS$points[, 2], colnames(as.matrix(wish)), cex=.6,
pos = 1)
}
plot(X, type = "b") ### this allowed me to plot the stress levels associated with each configuration
None 的结果图类似于 Borg & Groenen (2005, p. 10) 中介绍的图。例如2维的映射如下:
我检查过该数据集与 Borg & Groenen(2005 年,第 10 页)报告的数据集相同。我还按如下方式尝试了公制缩放:
for (i in 2:9) {
plot(smacofSym(wish, ndim=i))
}
同样,我无法复制 Borg & Groenen(2005 年,第 10 页)报告的结果。但是,我不确定在尝试复制结果时是否犯了任何错误。
使用基础 R cmdscale
,我得到了与 Borg & Groenen 相似 的结果。
如果您查看 wish
的结构,您会发现它是
只是一个包含 66 个数字的向量。我将其解释为下三角
相似度矩阵。我把它转换成一个完整的相异矩阵,这样我
可以使用 cmdscale
和绘图。位置与位置大致对齐
来自 Borg & Groenen。
library(smacof)
data(wish)
## Construct distance matrix
SM = matrix(0, nrow=12, ncol=12)
SM[lower.tri(SM)] = wish
SM = SM + t(SM)
diag(SM) = 9
DM = 9-SM
## MDS & plotting
MDS = cmdscale(DM)
plot(MDS, pch=20, xlim=c(-4,4), ylim=c(-4,4))
text(MDS, labels = attr(wish, "Labels"), adj=c(0.5,-0.6), cex=0.8)
abline(0.5,0.3, lty=2)
abline(-1,-3.8, lty=2)