Корреляционный анализ 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()
В результате получаются следующие графики:
Однако я не хочу, чтобы все переменные были против всех, мне бы очень хотелось здесь сравнить переменные. mpg
, cyl
, disp
, hp
(по оси 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
-подобный вывод. Благодарность!