Подтвердить что ты не робот

Какая хорошая стратегия, чтобы получить достойный обзор больших корреляционных матриц или пар?

Часто некоторые data.frame содержат 20 + переменных, и вы хотите получить первый обзор (структуры корреляции). Даже на 30-дюймовом экране вы быстро бежите из космоса, и по-прежнему трудно понять сообщение. Существуют ли какие-либо установленные стратегии, чтобы подчеркнуть, что важно? Я знаю, что этот вопрос несколько общий, но я задавался вопросом снова и снова и никогда не был панацею, чтобы вылечить ее. И я слышал о summary.

4b9b3361

Ответ 1

Я использовал heatmap() (или, скорее, базовую функцию image()) для этой цели. У меня больше нет кода, и, как я помню, мне пришлось играть с цветовой палитрой, чтобы получить что-то, что имело смысл для диапазона [-1, 1].

Вот простой пример:

R> set.seed(42)
R> X <- matrix(rnorm(100*20), nrow=100)
R> XC <- cor(X)
R> image(XC)        # color range could do with improvements here

correlation as image() plot

Вы играете в другие трюки, пуская один нижний или верхний треугольник и помещая там текст. Пакет PerformanceAnalytics имеет функцию chart.Correlation(), которая делает это (из исходной матрицы данных), но она намного медленнее и не будет масштабироваться к крупным матрицам в соответствии с вашим первоначальным вопросом. Я уверен, что есть другие...

Ответ 2

Ну, я просто должен опубликовать свой собственный пакет здесь:)

Вы можете использовать qgraph для визуализации корреляционной матрицы как сети. Это будет отображать переменные как узлы и корреляции в качестве ребер, соединяющих узлы. Зеленые края указывают положительные корреляции, а красные края указывают на отрицательные корреляции. Чем шире и насыщены края, тем сильнее абсолютная корреляция.

Например (это первый пример на странице справки), следующий код будет отображать корреляционную матрицу из 240 переменных данных.

library("qgraph")
data(big5)
data(big5groups)
qgraph(cor(big5),minimum=0.25,cut=0.4,vsize=2,groups=big5groups,legend=TRUE,borders=FALSE)
title("Big 5 correlations",line=-2,cex.main=2)

enter image description here

Вы также можете группировать сильно коррелированные узлы вместе (использует Fruchterman-Reingold), который создает довольно четкое представление о том, как выглядит структура вашей корреляционной матрицы:

enter image description here

И многое другое. Еще несколько примеров см. на моем сайте:

http://sachaepskamp.com/?page_id=73

Ответ 3

С помощью pairs вы можете быстро сгенерировать матрицы рассеяния. Если присутствует слишком много переменных, вы можете использовать инструменты Rattle:

enter image description here Другие примеры: http://rattle.togaware.com/rattle-screenshots.html

На самом деле трещина сама по себе не выполняет большую часть анализа (как правильно указал dwin), но он предлагает (imho) простые инструменты для быстрого запуска дерева корреляции, корреляционной матрицы, такой как выше, без необходимости манипулировать вашим набором данных убедитесь, что, например, в наборе данных присутствуют только числовые переменные,...

Ответ 4

Как насчет выполнения СПС по корреляционной матрице? Тогда угол между переменными показывает их корреляцию.

library(HSAUR)
heptathlon
round(cor(heptathlon[,-8]),2)   # correlations [without score]

require(vegan)
PCA <-  rda(heptathlon[,-8], scale=TRUE)   # run a PCA
biplot(PCA, display = "species")   # correlation biplot
#  The angles between descriptors in the biplot reflect their correlations

enter image description here

Ответ 5

Часто структура столбцов матрицы может быть представлена ​​в случайном порядке. В таком случае я бы хотел сделать несколько переупорядочений. Для визуализации и работы с разреженными матрицами я часто делаю какое-то переупорядочивание, такое как Reverse Cuthill-McKee или какая-то другая форма переупорядочения полосы пропускания, и это может быть применено к другим контекстам, чтобы облегчить визуализацию.

Для корреляционной матрицы вы можете скруглить корреляции низкой величины (например, внутри (-eps, + eps)), чтобы создать разреженность, а затем переупорядочить для проверки структуры.

Хорошо, если вы можете найти блоки связанных объектов. Это переупорядочение плюс тепловые карты (с использованием одного градиента цвета для отрицательной корреляции, другое для положительной корреляции) может быть очень полезным.