R 如何对Wish(1971)报告的12个国家的数据集进行多维标度

R 如何对Wish(1971)报告的12个国家的数据集进行多维标度,r,multi-dimensional-scaling,R,Multi Dimensional Scaling,我目前自学多维标度。其中,我研究了博格和格罗恩2005:现代多维尺度:理论和应用 在第10页,他们展示了一组由Wish 1971报告的真实数据。Wish 1971要求18名学生对不同国家(如法国和中国)的全球相似性进行评分,评分标准为9分,从1分到9分不等。因为数据集是公开的,所以我想在R中复制结果以用于实践目的。作为第一步,我想复制同样在Borg&Groenen 2005,第。10. 我的工作如下: library(smacof) ### this

我目前自学多维标度。其中,我研究了博格和格罗恩2005:现代多维尺度:理论和应用

在第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
for (i in 2:9) {
  plot(smacofSym(wish, ndim=i))
}
由于数据集包含相似性评级,我使用MASS包的isoMDS命令应用了非度量多维缩放。尽管教科书作者提到了二维MDS配置,但我也尝试了更高维的解决方案。因此,我编写了一个循环,对包含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
同样,我无法复制博格和格罗恩2005年报告的结果,p。10然而,我不确定在尝试复制结果时是否犯了任何错误

使用基本CMDR量表,我得到了与Borg&Groenen类似的结果

如果你看看愿望的结构,你会发现它是 仅仅是一个由66个数字组成的向量。我把它解释为下三角 相似矩阵。我把它转换成一个完全不同的矩阵,这样我 可以使用cmdscale和plot。位置与位置大致对齐 来自博格和格罗恩

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)

我是个十足的白痴。Wish数据集包含相似性评级。因此,我应该将数据集转换为不同的数据集。这就是您所做的:“DM=9-SM”见上文。一旦我加入了这一步骤,我也成功地复制了结果。如果这是你一生中犯的最严重的错误,你就是天才。谢谢。顺便说一句,我有一个后续问题。您可能对它感兴趣: