如何在 r 中执行多维缩放(带有示例)
在统计学中,多维尺度是一种在抽象笛卡尔空间(通常是二维空间)中可视化数据集中观察结果相似性的方法。
在 R 中执行多维缩放的最简单方法是使用内置的cmdscale()函数,该函数使用以下基本语法:
cmdscale(d, eig = FALSE, k = 2, …)
金子:
- d :距离矩阵,一般由dist()函数计算。
- eig :是否返回特征值。
- k :查看数据的维度数。默认值为2 。
下面的例子展示了如何在实际中使用这个功能。
示例:R 中的多维缩放
假设我们在 R 中有以下数据框,其中包含有关各种篮球运动员的信息:
#create data frame df <- data. frame (points=c(4, 4, 6, 7, 8, 14, 16, 19, 25, 25, 28), assists=c(3, 2, 2, 5, 4, 8, 7, 6, 8, 10, 11), blocks=c(7, 3, 6, 7, 5, 8, 8, 4, 2, 2, 1), rebounds=c(4, 5, 5, 6, 5, 8, 10, 4, 3, 2, 2)) #add row names row. names (df) <- LETTERS[1:11] #view data frame df points assists blocks rebounds A 4 3 7 4 B 4 2 3 5 C 6 2 6 5 D 7 5 7 6 E 8 4 5 5 F 14 8 8 8 G 16 7 8 10 H 19 6 4 4 I 25 8 2 3 D 25 10 2 2 K 28 11 1 2
我们可以使用以下代码通过cmdscale()函数执行多维缩放,并在 2D 空间中可视化结果:
#calculate distance matrix
d <- dist(df)
#perform multidimensional scaling
fit <- cmdscale(d, eig= TRUE , k= 2 )
#extract (x, y) coordinates of multidimensional scaling
x <- fit$points[,1]
y <- fit$points[,2]
#create scatterplot
plot(x, y, xlab=" Coordinate 1 ", ylab=" Coordinate 2 ",
main=" Multidimensional Scaling Results ", type=" n ")
#add row names of data frame as labels
text(x, y, labels=row. names (df))
原始数据框中在原始四列(得分、助攻、盖帽和篮板)中具有相似值的球员在图中彼此接近。
例如,玩家A和C彼此接近。以下是原始数据框中的它们的值:
#view data frame values for players A and C df[rownames(df) %in% c(' A ', ' C '), ] points assists blocks rebounds A 4 3 7 4 C 6 2 6 5
他们的得分、助攻、盖帽和篮板数值都非常相似,这解释了为什么他们在 2D 图中彼此如此接近。
相比之下,考虑情节中相距较远的玩家B和K。
如果我们参考原始数据中的它们的值,我们可以看到它们有很大的不同:
#view data frame values for players B and K df[rownames(df) %in% c(' B ', ' K '), ] points assists blocks rebounds B 4 2 3 5 K 28 11 1 2
因此,二维图是可视化每个玩家在数据框中所有变量上的相似程度的好方法。
具有相似统计数据的玩家被紧密地分组在一起,而具有非常不同统计数据的玩家在情节中彼此相距较远。
请注意,您还可以通过输入fit来提取图中每个玩家的精确坐标 (x, y),它是我们存储cmdscale()函数结果的变量的名称:
#view (x, y) coordinates of points in the plot
fit
[,1] [,2]
A -10.6617577 -1.2511291
B -10.3858237 -3.3450473
C -9.0330408 -1.1968116
D -7.4905743 1.0578445
E -6.4021114 -1.0743669
F -0.4618426 4.7392534
G 0.8850934 6.1460850
H 4.7352436 -0.6004609
I 11.3793381 -1.3563398
J 12.0844168 -1.5494108
K 15.3510585 -1.5696166
其他资源
以下教程解释了如何在 R 中执行其他常见任务: