R数据中的多维尺度



我想要一个根据下表的多维缩放图(这只是整个表的较短形式(。

我一直在尝试用R来做这件事(我在这里很新…(但现在。我甚至不确定这种类型的数据是否适合多维缩放。整个表格应该反映语义(语言(图(这就是为什么我认为MDS应该是好的(,行意味着信息提供者看到了一些图片,并为图片给出了不同的表达(列(,所以他们对它们的描述不同。列中的数字并不是从1到10之类的范围内的判断,但它们显示了有多少人使用pic1、pic2等表达方式。

有人能帮我解释一下MDS实际上是我尝试使用的合适模型吗?(对不起,我只是在最近几天读了很多关于不同方法的文章后太困惑了…(如果是这样的话,这里是我使用的编码(只是为了确定(。

非常感谢你的建议!

daten <- structure(list(photos = c("p1", "p5", "p8", "p13", "p19", "p23", "p29", "p34", "p36", "p40", "p59", "p2", "p14"), expression1 = c(18,  8, 11, 15, 14, 16, 10, 12, 15, 18, 18, 0, 0), expression2 = c(0,  0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0), expression3 = c(0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 1, 1), expression4 = c(0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 15, 17), expression5 = c(0, 3, 5, 0, 0, 0,  1, 5, 1, 0, 0, 0, 0), expression6 = c(0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0), expression7 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0), expression8 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0)), row.names = c(NA, -13L), class = c("tbl_df", "tbl", "data.frame"))
library("tibble")
has_rownames(daten)
cr<-column_to_rownames(daten, var="photo")
has_rownames(cr)
matr_cr <- as.matrix(cr[,-1])
matr_cr
d<-dist(matr_cr)
fit <- cmdscale(d, eig = TRUE, k = 2)
x <- fit$points[, 1]
y <- fit$points[, 2]
plot(x, y, xlab="Coordinate 1", ylab="Coordinate 2",
main="Multidimensional Scaling", type="n")
text(x, y, labels = row.names(matr_cr), cex=.6, col="red")
cr

绘制多维数据很困难,具体取决于数据类型和分析。首先,如果你有几个变量,对数据进行聚类可能很有用,一种可能的方法是k-表示你可以在"ClusterR"包中找到它。另一种可能的方法是通过旋转轴来变换变量,以便通过主成分分析(PCA(降低维度,您可以在http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/

如果您希望在没有先前分析的情况下按原样绘制数据,您可以使用ggplot2包来绘制更有用、更优雅的图。为了绘制不同的数据属性,你可以尝试改变代表不同维度的大小、颜色、形状等比例。此选项的问题在于无法绘制多个尺寸。

如果我很了解你,你有照片和人(线人(对照片进行评论。批评者在不同的层面(维度(上是分开的。若是这样的话,你们会得到图片、评审员和每个级别的评审,这些都是2+N个变量。请注意,您可以在这类数据中轻松绘制多达5个维度,通过设置x轴和y轴,您可以获得2个维度,然后您可以对另一个维度使用尺寸比例,对另一维度使用颜色比例,根据您的数据和偏好,您可以对第五个维度使用文本或形状比例。我没有在表中看到你提供的线人(评审员(维度。在下文中,您将发现使用ggplot2绘制的两个示例,请注意,对于形状比例,必须使用离散变量。为了获得美丽的图表和有意义的图表,你必须尝试哪种类型的量表对你的每个变量都更好,并且强烈依赖于你的数据。最后,如果你通常有几个维度,你应该首先尝试评估你的数据是否被聚类或进行PCA。

library(ggplot2)
daten <- structure(list(photos = c("p1", "p5", "p8", "p13", "p19", "p23", "p29", "p34", "p36", "p40", "p59", "p2", "p14"), expression1 = c(18,  8, 11, 15, 14, 16, 10, 12, 15, 18, 18, 0, 0), expression2 = c(0,  0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0), expression3 = c(0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 1, 1), expression4 = c(0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 15, 17), expression5 = c(0, 3, 5, 0, 0, 0,  1, 5, 1, 0, 0, 0, 0), expression6 = c(0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0), expression7 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0), expression8 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0)), row.names = c(NA, -13L), class = c("tbl_df", "tbl", "data.frame"))
# with shape scale
ggplot(data = daten,aes(x=photos, y=expression1, col=expression2, size=expression3, shape=as.factor(expression4))) +
geom_point()
# with text scale
ggplot(data = daten,aes(x=expression4, y=expression1, col=expression2, size=expression3, label=photos)) +
geom_text()

相关内容

  • 没有找到相关文章

最新更新