Графики фазовой корреляции между выходной переменной и несколькими входными переменными с помощью ggplot2
Я хочу отобразить все корреляции между выходной переменной и несколькими входными переменными.
Я уточнил, что:
- Мне не нужно вычислять коэффициенты корреляции явно
- Мне не нужна полная матрица корреляции между всеми переменными: меня не интересует отображение графиков корреляции между входными переменными.
Я могу использовать петлю или apply
позвоните, но мне интересно, есть ли лучшее и более элегантное решение с facet
функция ggplot2.
Вот упрощенный пример. Я хочу рассмотреть три возможных корреляционных графика.
library(ggplot2)
# data
output <- c(3, 5, 8, 9, 12, 13)
input_1 <- c(1, 3, 4, 6, 8, 11)
input_2 <- c(3, 8, 2, 5, 11, 1)
input_3 <- c(14, 8, 6, 4, 2, 1)
mydf <- data.frame(output, input_1, input_2, input_3)
# First Correlation plot
ggplot(data = mydf, aes(x = input_3, y = output)) +
geom_point() +
geom_smooth(method = "lm")
# Second correlation plot
ggplot(data = mydf, aes(x = input_2, y = output)) +
geom_point() +
geom_smooth(method = "lm")
# Third correlation plot
ggplot(data = mydf, aes(x = input_3, y = output)) +
geom_point() +
geom_smooth(method = "lm")
1 ответ
Решение
С комментарием выше (спасибо @PoGibas) я решаю, используя следующий код.
library(ggplot2)
library(tidyr)
# Data
output <- c(3, 5, 8, 9, 12, 13)
input_1 <- c(1, 3, 4, 6, 8, 11)
input_2 <- c(3, 8, 2, 5, 11, 1)
input_3 <- c(14, 8, 6, 4, 2, 1)
mydf <- data.frame(output, input_1, input_2, input_3)
# Change data format
mydf2 <- gather(mydf, key = "key", value = "input", -output)
# Correlation plots between the output and the input variables
ggplot(mydf2, aes(input, output)) +
geom_point() +
geom_smooth(method = "lm") +
facet_wrap(~ key)