我有大型数据集,我正在进行相关性的探索性筛选。我想进行相关性测试以识别显着相关的变量,然后将这些变量相互映射。
data <- data.frame(a = 1:10, b = c(1.5*(1:9), 10), c = 2*(1:10), d = sample(1:5, 10, replace = T))
cor_data <- corr.test(data)
sig_cor <- ifelse(cor_data$p <0.05, cor_data$r, NA)
sig_cor_long <- sig_cor %>%
data.frame() %>%
mutate(var1 = rownames(sig_cor)) %>%
gather(var2, value = r, -var1) %>%
drop_na(r) %>%
filter(r != 1)
这标识对a-b和b-c显着相关,所以我想绘制那些。如何自动选择从sig_cor_long中选择配对变量的过程,从数据中通过ggplot进行绘图?我想为每个相关对创建的示例图是:
ggplot(data, aes(a, b)) +
geom_smooth(method = 'lm')+
geom_point(shape = 21, color = 'darkblue', fill = 'white')
我希望有一个函数输入到ggplot中,告诉它绘制sig_cor_long中标识的所有var1和var2对,原始数据都是数据。
答案 0 :(得分:0)
好的,这是一种绘图的方法,例如所有具有显着相关性的图(在列表中,因此您可以对它们做任何事情)
do.call(gridExtra::grid.arrange,
ifelse(cor_data$p <0.05, cor_data$r, NA) %>%
as.data.frame() %>%
rownames_to_column() %>%
gather(pair, val, -rowname) %>%
drop_na() %>%
filter(val != 1) %$%
map2(rowname, pair, ~ggplot() + geom_smooth(method = "lm", aes(data[, .x], data[, .y])) + geom_point(aes(data[, .x], data[, .y])))
)