如何关联和可视化一个变量与多个变量的相关性

时间:2016-07-29 13:27:13

标签: r

我想使用R来可视化和计算一个变量数据[1]与许多其他变量数据的相关性[2:96]

我已经知道像psych和PerformanceAnalytics这样的软件包具有Pairs功能。

理想情况下,我想输出一个类似于Pairs输出的图表,但仅用于数据[1]和每个数据[2:96]之间的相关性,而不是每个数据元素[1:96]与自身一样,这将占用太多空间。对此有任何想法将不胜感激。

4 个答案:

答案 0 :(得分:3)

可以在您选择的变量上使用corrr包到focus(),然后使用ggplot2包来绘制结果。例如,获取/绘制mpgmtcars数据集中所有其他变量的相关性:

library(corrr)
library(ggplot2)

x <- mtcars %>% 
  correlate() %>% 
  focus(mpg)
x
#> # A tibble: 10 x 2
#>    rowname        mpg
#>      <chr>      <dbl>
#> 1      cyl -0.8521620
#> 2     disp -0.8475514
#> 3       hp -0.7761684
#> 4     drat  0.6811719
#> 5       wt -0.8676594
#> 6     qsec  0.4186840
#> 7       vs  0.6640389
#> 8       am  0.5998324
#> 9     gear  0.4802848
#> 10    carb -0.5509251

x %>% 
  mutate(rowname = factor(rowname, levels = rowname[order(mpg)])) %>%  # Order by correlation strength
  ggplot(aes(x = rowname, y = mpg)) +
    geom_bar(stat = "identity") +
    ylab("Correlation with mpg") +
    xlab("Variable")

enter image description here

答案 1 :(得分:3)

要获取带有黄土线的散点图,您可以将tidyr包与ggplot2结合使用。以下是mpg散点图与mtcars数据集中所有其他变量的示例:

library(tidyr)
library(ggplot2)

mtcars %>%
  gather(-mpg, key = "var", value = "value") %>% 
  ggplot(aes(x = value, y = mpg)) +
    facet_wrap(~ var, scales = "free") +
    geom_point() +
    stat_smooth()

enter image description here

有关其工作原理的详细信息,请参阅https://drsimonj.svbtle.com/quick-plot-of-all-variables

答案 2 :(得分:2)

使用mtcars数据和corrplot{}包:

install.packages("corrplot")
library(corrplot)
mcor <- cor(x = mtcars$mpg, y = mtcars[2:11], use="complete.obs")
corrplot(mcor, tl.srt = 25)

修改:忘记为corrplot添加一个小插图,展示更多格式化方式:https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html

答案 3 :(得分:2)

您还可以检索相关矩阵的子集以解决此问题。例如,cor(data)[,1]给出了第1列与所有其他列之间的相关性。