0

我想根据下表制作一个多维比例图(这只是整个表格的较短形式)。

我一直在尝试在 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
4

1 回答 1

0

绘制多维数据很困难,取决于数据类型和分析是做什么的。首先,如果您有多个变量,对数据进行聚类可能会很有用,一种可能的方法是 k-means,您可以在包“ClusterR”中找到它。另一个可能要做的事情是通过旋转轴来转换变量,以便使用主成分分析 (PCA) 降低维度,您可以在http://www.sthda.com/english/中找到有关 R 中 PCA 的更多信息文章/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()
于 2020-04-06T15:07:05.847 回答