打印具有高于阈值的相关性的案例

时间:2018-03-27 10:27:37

标签: r conditional-statements correlation threshold

我有一个相对较大的相关矩阵(77x77)。我需要识别具有高于| .60 |的相关性的案例。下面我制作了相关数据帧,并将所有值都设为< | 0.60 |显示为NA。

cor_relation = cor(mydata, use="all.obs", method="pearson") cor_relation[abs(cor_relation) < 0.6] <- NA

然而,手动搜索案例仍然很困难&gt; | 0.60 |。 我尝试使用布尔运算符,如下所示,但它只给出了每个案例的截断摘要(即Na或True),其中我只能看到前1000个案例的摘要

cor_relation[abs(cor_relation)] >= 0.6

请帮助使用正确的代码,该代码仅打印具有相关性的案例摘要&gt; | 0.60 |

谢谢

2 个答案:

答案 0 :(得分:2)

dplyr方式:

library(dplyr)
data(mtcars)
correl <- round(cor(mtcars),2)
cor_df <- as.data.frame(as.table(correl))

现在可以对cor_df进行排序和过滤:

> cor_df %>%  arrange(desc(Freq)) %>% filter(Freq>0.6)
   Var1 Var2 Freq
1   mpg  mpg 1.00
2   cyl  cyl 1.00
3  disp disp 1.00
4    hp   hp 1.00
... and so on

> cor_df %>%  arrange(desc(Freq)) %>% filter(Freq< -0.6)
   Var1 Var2  Freq
1  carb qsec -0.66
2  qsec carb -0.66
3    am   wt -0.69
4    wt   am -0.69
... and so on

您可以总结数据:

> cor_df %>%  arrange(desc(Freq)) %>% filter(Freq< -0.6) %>% 
     summarise(mean=mean(Freq), sd=sd(Freq))
        mean         sd
1 -0.7515385 0.06949488

答案 1 :(得分:0)

以下是如何执行此操作的示例(使用虚拟数据,因为没有提供数据)

# creating dummy corr matrix
corr <- matrix(runif(25, -1, 1), nrow = 5, ncol = 5)
# selecting indices where corr[i,j] >= 0.6 
S <- which(abs(corr) >= .6, arr.ind = T)
# saving the result in a new vector
val <- corr[S]
val
[1] -0.9645378 -0.6560426 -0.7547376  0.7940875 -0.7449578 -0.8844122  0.6800387
# and finally printing a summary
summary(val)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
-0.9645 -0.8196 -0.7450 -0.3615  0.0120  0.7941