问题描述
我用ggpairs
得到了以下图:
我想知道哪对具有最大绝对相关性。但是,当某些对(例如功率跨度,功率长度,跨度长度等)被图覆盖时,我应该如何确定呢?另外,有没有比查看图像更容易的方式(以文本格式)查看相关性了?
解决方法
Power
和Span
之间的相关系数与Span
和Power
之间的相关系数相同。相关系数是根据点与最佳拟合线之间的平方差的总和来计算的,因此哪个序列位于哪个轴上无关紧要。因此,您可以在右上方阅读相关系数,并在左下方查看散点图。
cor
函数返回两个向量之间的相关系数。顺序无关紧要。
set.seed(123)
x <- runif(100)
y <- rnorm(100)
cor(x,y)
[1] 0.05564807
cor(y,x)
[1] 0.05564807
如果将data.frame(或类似数据)馈送到cor()
,则将获得每对变量之间的相关系数的相关矩阵。
set.seed(123)
df <- data.frame(x= rnorm(100),y= runif(100),z= rpois(100,1),w= rbinom(100,1,.5))
cor(df)
x y z w
x 1.00000000 0.05564807 0.13071975 -0.14978770
y 0.05564807 1.00000000 0.09039201 -0.09250531
z 0.13071975 0.09039201 1.00000000 0.11929637
w -0.14978770 -0.09250531 0.11929637 1.00000000
您可以在此矩阵中看到围绕对角线的对称性。
如果要以编程方式识别最大(非统一)相关系数,则可以执行以下操作:
library(dplyr)
library(tidyr)
cor(df) %>%
as_data_frame(rownames = "var1") %>%
pivot_longer(cols = -var1,names_to = "var2",values_to = "coeff") %>%
filter(var1 != var2) %>%
arrange(desc(abs(coeff)))
# A tibble: 12 x 3
var1 var2 coeff
<chr> <chr> <dbl>
1 x w -0.150
2 w x -0.150
3 x z 0.131
4 z x 0.131
5 z w 0.119
6 w z 0.119
7 y w -0.0925
8 w y -0.0925
9 y z 0.0904
10 z y 0.0904
11 x y 0.0556
12 y x 0.0556