Кластеризация переменных на основе корреляций между ними


23

Вопросов:

  1. У меня большая корреляционная матрица. Вместо того, чтобы кластеризовать отдельные корреляции, я хочу кластеризовать переменные на основе их корреляций друг с другом, т. Е. Если переменная A и переменная B имеют схожие корреляции с переменными C-Z, то A и B должны быть частью одного кластера. Хороший реальный пример этого - разные классы активов - корреляции внутри класса активов выше, чем корреляции между классами активов.

  2. Я также рассматриваю кластеризацию переменных с точки зрения строгой связи между ними, например, когда корреляция между переменными A и B близка к 0, они действуют более или менее независимо. Если вдруг некоторые базовые условия меняются и возникает сильная корреляция (положительная или отрицательная), мы можем думать об этих двух переменных как о принадлежности к одному кластеру. Таким образом, вместо того, чтобы искать положительную корреляцию, нужно искать отношения, а не отношения. Я предполагаю, что аналогия может быть кластером положительно и отрицательно заряженных частиц. Если заряд падает до 0, частица уходит от кластера. Однако как положительные, так и отрицательные заряды притягивают частицы к пышным кластерам.

Я прошу прощения, если что-то из этого не очень ясно. Пожалуйста, дайте мне знать, я уточню конкретные детали.


1
Разве факторный анализ не сделает работу за квартал 1? Вопрос 2 немного расплывчатый. «Отношения» кажется синонимом «корреляции», или, по крайней мере, одна из форм отношений - это линейные отношения, и корреляция отражает это. Возможно, вам нужно уточнить qn 2.

Вы заявили, что хотите сделать. Какой у Вас вопрос? Речь идет о реализации или уместен ли ваш подход к анализу? или что-то другое?
Джером Энглим

Ответы:


14

Вот простой пример в R с использованием bfiнабора данных: bfi - это набор данных из 25 элементов теста личности, организованных вокруг 5 факторов.

library(psych)
data(bfi)
x <- bfi 

Иерархический кластерный анализ с использованием евклидова расстояния между переменными на основе абсолютной корреляции между переменными может быть получен следующим образом:

plot(hclust(dist(abs(cor(na.omit(x))))))

альтернативный текст Дендрограмма показывает, как элементы обычно группируются с другими элементами в соответствии с теоретическими группировками (например, группа элементов N (Neuroticism) вместе). Также показано, как некоторые элементы в кластерах более похожи (например, C5 и C1 могут быть более похожими, чем C5 с C3). Это также предполагает, что кластер N менее похож на другие кластеры.

В качестве альтернативы вы можете сделать стандартный факторный анализ, например, так:

factanal(na.omit(x), 5, rotation = "Promax")


Uniquenesses:
   A1    A2    A3    A4    A5    C1    C2    C3    C4    C5    E1    E2    E3    E4    E5    N1 
0.848 0.630 0.642 0.829 0.442 0.566 0.635 0.572 0.504 0.603 0.541 0.457 0.541 0.420 0.549 0.272 
   N2    N3    N4    N5    O1    O2    O3    O4    O5 
0.321 0.526 0.514 0.675 0.625 0.804 0.544 0.630 0.814 

Loadings:
   Factor1 Factor2 Factor3 Factor4 Factor5
A1  0.242  -0.154          -0.253  -0.164 
A2                          0.570         
A3         -0.100           0.522   0.114 
A4                  0.137   0.351  -0.158 
A5         -0.145           0.691         
C1                  0.630           0.184 
C2  0.131   0.120   0.603                 
C3  0.154           0.638                 
C4  0.167          -0.656                 
C5  0.149          -0.571           0.125 
E1          0.618   0.125  -0.210  -0.120 
E2          0.665          -0.204         
E3         -0.404           0.332   0.289 
E4         -0.506           0.555  -0.155 
E5  0.175  -0.525   0.234           0.228 
N1  0.879  -0.150                         
N2  0.875  -0.152                         
N3  0.658                                 
N4  0.406   0.342  -0.148           0.196 
N5  0.471   0.253           0.140  -0.101 
O1         -0.108                   0.595 
O2 -0.145   0.421   0.125   0.199         
O3         -0.204                   0.605 
O4          0.244                   0.548 
O5  0.139                   0.177  -0.441 

               Factor1 Factor2 Factor3 Factor4 Factor5
SS loadings      2.610   2.138   2.075   1.899   1.570
Proportion Var   0.104   0.086   0.083   0.076   0.063
Cumulative Var   0.104   0.190   0.273   0.349   0.412

Test of the hypothesis that 5 factors are sufficient.
The chi square statistic is 767.57 on 185 degrees of freedom.
The p-value is 5.93e-72 

1
Привет, Джером. Q: что значит взять dist abs (cor (...))? Разве кор-матрица не та, где большее число указывает на большее соотношение, а в дистанционной матрице верно обратное? (Я подозреваю, что что-то упустил, не могли бы вы объяснить?)
Таль Галили

@ Tal Я понимаю, что функция dist принимает евклидово расстояние от матрицы, переданной ей, которая в данном случае была матрицей абсолютной корреляции. Возможно, более буквальным преобразованием из матрицы корреляции была бы функция as.dist (), которая принимает существующую матрицу расстояний: например, as.dist (1-abs (cor (na.omit (x)))). Видишь? dist
Джером Энглим

1
использование 1-abs (cor ...) имело бы больше смысла для меня :)
Tal Galili

@ Да, да. Я согласен. Я сделал быстрый взгляд. В этом случае вектор расстояний (евклидов абсор с 1-абс кор) коррелирует около 0,96, поэтому это не имеет большого значения.
Jeromy Anglim

1
@Tal опция dist: у каждой переменной есть вектор абсолютных корреляций. Переменные с более похожими векторами будут иметь меньшие евклидовы расстояния: en.wikipedia.org/wiki/Euclidean_distance
Jeromy Anglim

2

При кластеризации корреляций важно не рассчитывать расстояние дважды. Когда вы берете матрицу корреляции, вы по сути делаете расчет расстояния. Вы захотите преобразовать его в истинное расстояние, взяв 1 - абсолютное значение.

1-abs(cor(x))

Когда вы собираетесь преобразовать эту матрицу в объект расстояния, если вы используете функцию dist, вы будете измерять расстояния между вашими корреляциями. Вместо этого вы хотите использовать as.dist()функцию, которая просто преобразует ваши заранее рассчитанные расстояния в "dist"объект.

Применение этого метода к примеру Alglim

library(psych)
data(bfi)
x <- bfi 
plot(hclust(as.dist(1-abs(cor(na.omit(x))))))

приводит к другой дендрограмме Кластерная дендрограмма

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.