Вот один способ получить попарные корреляции всех переменных в фрейме данных:
# generate some fake data, some of whose columns are correlated
set.seed(6933)
dat <- data.frame(
a = c(rnorm(10, 1), rnorm(10, 2), rnorm(10, 3)),
b = c(rnorm(10, 2), rnorm(10, 4), rnorm(10, 6)),
c = c(rnorm(10, 5), rnorm(10, 3), rnorm(10, 7)),
d = c(rnorm(10, 3), rnorm(10, 2), rnorm(10, 1)),
e = c(rnorm(10, 9), rnorm(10, 5), rnorm(10, 2)))
# make a df of all the pairwise combinations of column names (10 rows)
corrs_df <- as.data.frame(t(combn(names(dat), m=2)))
# compute the correlation between each of the columns of `dat`
corrs_df$cor <- apply(corrs_df, 1, function(x) cor(dat[[x[1]]], dat[[x[2]]]))
Затем вы можете отфильтровать corrs_df
по некоторому значению, чтобы получить только набор пар, которые ниже (или выше) некоторый порог:
threshold <- .5
corrs_df[corrs_df$cor < threshold, ] # 9 rows remain
Вы также можете отфильтровать, находится ли абсолютное значение 1009 * корреляции выше порога, например:
corrs_df[abs(corrs_df$cor) < threshold, ] # 7 rows remain