«Кластеризация» корреляционной матрицы - PullRequest
0 голосов
/ 18 октября 2018

Я хотел бы «привести в порядок» или «кластеризовать» корреляции данной матрицы данных таким образом, чтобы высококоррелированные переменные появлялись рядом друг с другом.Например, если у меня есть такие данные:

n <- 1000
my_corr <- matrix(c(1,   0.8, 0.8, 0,   0, 0,
                    0.8, 1,   0.8, 0,   0,   0,
                    0.8, 0.8, 1,   0,   0, 0,
                    0,   0,   0,   1,   0.9, 0.9,
                    0,   0,   0,   0.9, 1,   0.9,
                    0,   0,   0,   0.9, 0.9, 1), nrow = 6)
my_chol <- chol(my_corr)
# Edit: Rui is right, I should have used replicate
#d <- do.call(cbind, lapply(1:6, function(x) rnorm(n)))
d <- replicate(6, rnorm(n))
d <- d %*% my_chol
d <- cbind(d[, -c(2, 4)], d[, 2], d[, 4])

Корреляции такие:

library(GGally)
ggcorr(d)

enter image description here

Однако, «хочу» будет выглядеть так:

enter image description here

Как мне это сделать, если я не знаю решение / возможно ли это с предвстроенная функция?

1 Ответ

0 голосов
/ 18 октября 2018

corrplot имеет эту опцию:

my_corr <- matrix(c(1,   0.8, 0.8, 0,   0, 0,
                    0.8, 1,   0.8, 0,   0,   0,
                    0.8, 0.8, 1,   0,   0, 0,
                    0,   0,   0,   1,   0.9, 0.9,
                    0,   0,   0,   0.9, 1,   0.9,
                    0,   0,   0,   0.9, 0.9, 1), nrow = 6)

corrplot::corrplot(my_corr, order = "AOE", type = "lower", method = "color")

enter image description here

Здесь , вы можете в значительной степени изменить все и сделатьэто больше похоже на ggcorr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...