打印相关性高于阈值的案例
Print cases with correlations above a threshold
我有一个相对较大的相关矩阵 (77x77)。我需要识别相关性高于 |.60| 的案例。下面我生成了相关数据框并使所有值 < |.60|显示为 NA。
cor_relation = cor(mydata, use="all.obs", method="pearson")
cor_relation[abs(cor_relation) < 0.6] <- NA
但是,手动搜索案例 > |.60| 仍然很困难。
我尝试使用布尔运算符,如下所示,但它只给我每个案例的截断摘要(即 Na 或 True),我只能看到前 1000 个案例的摘要
cor_relation[abs(cor_relation)] >= 0.6
请帮忙提供正确的代码,该代码只会打印相关性 > |.60|
的案例摘要
谢谢
这是一个如何做到这一点的例子(使用虚拟数据,因为没有提供数据)
# 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
一个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
我有一个相对较大的相关矩阵 (77x77)。我需要识别相关性高于 |.60| 的案例。下面我生成了相关数据框并使所有值 < |.60|显示为 NA。
cor_relation = cor(mydata, use="all.obs", method="pearson")
cor_relation[abs(cor_relation) < 0.6] <- NA
但是,手动搜索案例 > |.60| 仍然很困难。 我尝试使用布尔运算符,如下所示,但它只给我每个案例的截断摘要(即 Na 或 True),我只能看到前 1000 个案例的摘要
cor_relation[abs(cor_relation)] >= 0.6
请帮忙提供正确的代码,该代码只会打印相关性 > |.60|
的案例摘要谢谢
这是一个如何做到这一点的例子(使用虚拟数据,因为没有提供数据)
# 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
一个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