在R中查找相关性超过一定百分比的数据集中的列数

在R中查找相关性超过一定百分比的数据集中的列数,r,R,我正在研究一个有48个变量的数据集,通过在R中看到相关图,大多数变量高度相关。我试图找到相关的变量数量>70% 我的数据框称为diagnostics\u data,我使用的代码是: cor_data <- cor(diagnosed_data) corrplot::corrplot(cor_data, method = "number", title = "correlation plot b/w the attributes") cor_dat

我正在研究一个有48个变量的数据集,通过在R中看到相关图,大多数变量高度相关。我试图找到相关的变量数量>70%

我的数据框称为
diagnostics\u data
,我使用的代码是:

cor_data <- cor(diagnosed_data) 
corrplot::corrplot(cor_data, method = "number", 
                   title = "correlation plot b/w the attributes")

cor_data让我们使用
mtcars
数据集,它有10个变量(而不是48个变量)

存在
10(10-1)/2个
唯一相关对。如果你看一下相关矩阵,它对应于对角线上方的元素。通过检查这些上三角元素的相关性是否大于0.7(或小于-0.7),我们可以看到有多少唯一对高度相关:

cor_mat     <- cor(mtcars)
unique_cors <- cor_mat[upper.tri(cor_mat)]
sum(abs(unique_cors) > 0.7)
# [1] 19 

让我们使用
mtcars
数据集,它有10个变量(而不是48个变量)

存在
10(10-1)/2个
唯一相关对。如果你看一下相关矩阵,它对应于对角线上方的元素。通过检查这些上三角元素的相关性是否大于0.7(或小于-0.7),我们可以看到有多少唯一对高度相关:

cor_mat     <- cor(mtcars)
unique_cors <- cor_mat[upper.tri(cor_mat)]
sum(abs(unique_cors) > 0.7)
# [1] 19 

这将帮助您将结果存储在数据框中,并对其进行进一步分析。同时使用
mtcars
数据集

library(dplyr)

t(combn(names(mtcars), 2)) %>%                          # get all pairwise combinations of variables
  data.frame(., stringsAsFactors = F) %>%               # save as dataframe
  rowwise() %>%                                         # for each row (pair)
  mutate(cor_value = cor(mtcars[X1], mtcars[X2])) %>%   # calculate correlation value
  ungroup()                                             # forget the grouping

# # A tibble: 55 x 3
#      X1    X2  cor_value
#   <chr> <chr>      <dbl>
# 1   mpg   cyl -0.8521620
# 2   mpg  disp -0.8475514
# 3   mpg    hp -0.7761684
# 4   mpg  drat  0.6811719
# 5   mpg    wt -0.8676594
# 6   mpg  qsec  0.4186840
# 7   mpg    vs  0.6640389
# 8   mpg    am  0.5998324
# 9   mpg  gear  0.4802848
# 10   mpg  carb -0.5509251
# # ... with 45 more rows

这将帮助您将结果存储在数据框中,并对其进行进一步分析。同时使用
mtcars
数据集

library(dplyr)

t(combn(names(mtcars), 2)) %>%                          # get all pairwise combinations of variables
  data.frame(., stringsAsFactors = F) %>%               # save as dataframe
  rowwise() %>%                                         # for each row (pair)
  mutate(cor_value = cor(mtcars[X1], mtcars[X2])) %>%   # calculate correlation value
  ungroup()                                             # forget the grouping

# # A tibble: 55 x 3
#      X1    X2  cor_value
#   <chr> <chr>      <dbl>
# 1   mpg   cyl -0.8521620
# 2   mpg  disp -0.8475514
# 3   mpg    hp -0.7761684
# 4   mpg  drat  0.6811719
# 5   mpg    wt -0.8676594
# 6   mpg  qsec  0.4186840
# 7   mpg    vs  0.6640389
# 8   mpg    am  0.5998324
# 9   mpg  gear  0.4802848
# 10   mpg  carb -0.5509251
# # ... with 45 more rows

请提供您尝试过的代码以及一个最小的可复制示例。Hi@amrrs,下面是我用来绘制所有变量cor_数据70%之间相关性图的代码。但是我想在代码的帮助下找到关联度大于70%的变量的数量。希望这是清楚的。谢谢:)与什么相关的变量数?相关性意味着两个变量的比较。你的意思是变量对的数量吗?请提供你尝试过的代码以及一个最小可复制的示例。Hi@amrrs,下面是我用来绘制所有变量相关图70%的代码。但是我想在代码的帮助下找到关联度大于70%的变量的数量。希望这是清楚的。谢谢:)与什么相关的变量数?相关性意味着两个变量的比较。你是说变量对的数量吗?