繁体   English   中英

R 中的多维比例 - 数据

[英]Multidimensional Scale in R - data

我想根据下表进行多维缩放 plot (这只是整个表格的较短形式)。

我一直在尝试在 R 中做到这一点(我在这里很新......)但现在。 我什至不确定这种类型的数据是否适合多维缩放。 整个表格应该反映一个语义(语言)map(这就是为什么我认为MDS应该是好的)并且行意味着线人看到了一些图片并且对图片给出了不同的表达(列),因此他们对它们进行了不同的描述。 列中的数字在从 1 到 10 或类似的范围内没有判断,但它们显示了有多少人使用了 pic1、pic2 等表达式。

谁能帮我解释一下 MDS 实际上是我尝试使用的合适的 model 吗? (对不起,在过去几天阅读了很多关于不同方法的内容后,我感到非常困惑......)如果是这样,这是我使用的编码(只是为了确定)。

非常感谢您的任何建议!

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-means,您可以在 package“ClusterR”中找到它。 另一个可能要做的事情是通过旋转轴来转换变量,以便使用主成分分析 (PCA) 降低维度,您可以在 http 中的R 中找到有关 PCA 的更多信息://www.sthda.com/english/文章/31-principal-component-methods-in-r-practical-guide/

如果您选择 plot 您的数据,因为它没有以前的分析,您可以使用 ggplot2 package 来制作更有用和更优雅的图。 对于 plot 您的不同数据属性,您可以尝试更改代表不同维度的大小、颜色、形状等比例。 这个选项的问题是你不能 plot 几个维度。

如果我理解你的话,你会得到图片和对图片进行评论的人(线人)。 批评者在不同的层次(维度)上是分开的。 如果是这样,你会得到尺寸图片、评论者和评论的每个级别,这会产生 2+N 个变量。 请注意,您可以轻松地 plot 在此类数据中最多 5 个维度,通过设置 x 轴和 y 轴,您可以获得 2 个维度,然后您可以将尺寸比例用于另一个维度,将色阶用于另一个维度,并且取决于您的数据和偏好,您可以使用文本或形状比例作为第五维。 我在表格中没有看到您提供的线人(审阅者)维度。 在下面,您将找到两个使用 ggplot2 的 plot 示例,请注意,对于形状比例,必须使用离散变量。 为了获得漂亮的图和有意义的图,您将不得不尝试哪种比例尺更适合您的每个变量,并且很大程度上取决于您的数据。 最后,如果您通常有多个维度,您应该首先尝试评估您的数据是聚类的还是进行 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM