首页 > 解决方案 > R相关性分析:一组变量的ggcorrplot和ggpairs-vs-另一组(并非全部反对)

问题描述

我想用ggcorplot和做一个简单的相关性分析ggpairs。但是,我只想将一组连续变量与另一组进行比较,而不是全部对比。让我在下面解释我的意思。

我正在使用mtcars此示例的数据。我执行以下操作:

data(mtcars)
mtcars
summary(mtcars)
mtcars$vs <- as.character(mtcars$vs)

grDevices::pdf(file="test1.pdf", height=6, width=6)
print(
ggcorrplot::ggcorrplot(round(cor(mtcars[,1:7]), 1), p.mat = ggcorrplot::cor_pmat(mtcars[,1:7]),
                       hc.order=TRUE, type='lower', method = "circle")
)
grDevices::dev.off()

grDevices::pdf(file="test2.pdf", height=10, width=10)
print(
GGally::ggpairs(mtcars, columns=1:7, ggplot2::aes(colour=vs), legend = 1,
               lower = list(continuous = GGally::wrap("smooth", alpha = 0.5, size=2)),
               upper = list(continuous = GGally::wrap("cor", size=3.5))) +
  ggplot2::theme_light() + ggplot2::theme(legend.position = "bottom")
)
grDevices::dev.off()

这会产生以下图:

测试1

测试2

但是,我不希望所有变量都针对所有变量,我真正想要的是比较变量mpg, cyl, disphp在 x 轴上)与变量drat, wt, qsec(在 y 轴上)。

理想情况下,我们不会裁剪图,而是只进行适当的计算以节省时间。事实上,想象我的起始数据被分隔在 2 个输入数据帧中,具有不同的连续变量(但相同的行名和分类变量,在这种情况下使用vs),所以更像这样:

mydata1 <- mtcars[,c(8,1:4)]
mydata2 <- mtcars[,c(8,5:7)]

> head(mydata1)
                  vs  mpg cyl disp  hp
Mazda RX4          0 21.0   6  160 110
Mazda RX4 Wag      0 21.0   6  160 110
Datsun 710         1 22.8   4  108  93
Hornet 4 Drive     1 21.4   6  258 110
Hornet Sportabout  0 18.7   8  360 175
Valiant            1 18.1   6  225 105
> head(mydata2)
                  vs drat    wt  qsec
Mazda RX4          0 3.90 2.620 16.46
Mazda RX4 Wag      0 3.90 2.875 17.02
Datsun 710         1 3.85 2.320 18.61
Hornet 4 Drive     1 3.08 3.215 19.44
Hornet Sportabout  0 3.15 3.440 17.02
Valiant            1 2.76 3.460 20.22

知道如何解决这个问题吗?不确定ggcorrplot并且ggpairs是最好的,但如果可能的话,我会坚持使用它们,只是因为我更熟悉,或者至少是产生类似ggplot2输出的东西。谢谢!

标签: rggplot2correlationggpairsggcorrplot

解决方案


推荐阅读