Часто некоторые data.frame
содержат 20 + переменных, и вы хотите получить первый обзор (структуры корреляции). Даже на 30-дюймовом экране вы быстро бежите из космоса, и по-прежнему трудно понять сообщение. Существуют ли какие-либо установленные стратегии, чтобы подчеркнуть, что важно? Я знаю, что этот вопрос несколько общий, но я задавался вопросом снова и снова и никогда не был панацею, чтобы вылечить ее. И я слышал о summary
.
Какая хорошая стратегия, чтобы получить достойный обзор больших корреляционных матриц или пар?
Ответ 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
Вы играете в другие трюки, пуская один нижний или верхний треугольник и помещая там текст. Пакет 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)
Вы также можете группировать сильно коррелированные узлы вместе (использует Fruchterman-Reingold), который создает довольно четкое представление о том, как выглядит структура вашей корреляционной матрицы:
И многое другое. Еще несколько примеров см. на моем сайте:
Ответ 3
С помощью pairs
вы можете быстро сгенерировать матрицы рассеяния. Если присутствует слишком много переменных, вы можете использовать инструменты Rattle:
Другие примеры: 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
Ответ 5
Часто структура столбцов матрицы может быть представлена в случайном порядке. В таком случае я бы хотел сделать несколько переупорядочений. Для визуализации и работы с разреженными матрицами я часто делаю какое-то переупорядочивание, такое как Reverse Cuthill-McKee или какая-то другая форма переупорядочения полосы пропускания, и это может быть применено к другим контекстам, чтобы облегчить визуализацию.
Для корреляционной матрицы вы можете скруглить корреляции низкой величины (например, внутри (-eps, + eps)), чтобы создать разреженность, а затем переупорядочить для проверки структуры.
Хорошо, если вы можете найти блоки связанных объектов. Это переупорядочение плюс тепловые карты (с использованием одного градиента цвета для отрицательной корреляции, другое для положительной корреляции) может быть очень полезным.