Кластеризація змінних на основі співвідношень між ними


23

Запитання:

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

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

Прошу вибачення, якщо щось із цього не дуже зрозуміло. Будь ласка, повідомте мене, я уточню конкретні деталі.


1
Чи не зробить факторний аналіз не завдання для Qn 1? Питання 2 трохи розпливчасте. "Зв'язок" видається синонімом "кореляції" або, принаймні, однією формою відносин є лінійна залежність і кореляція захоплює це. Можливо, вам потрібно уточнити qn 2.

Ви заявили, що хочете зробити. Яке Ваше запитання? Це стосується впровадження чи відповідний ваш підхід до аналізу? чи щось інше?
Джеромі Англім

Відповіді:


14

Ось простий приклад роботи з R за допомогою bfiнабору даних: bfi - це набір даних з 25 тестових елементів особистості, організованих навколо 5 факторів.

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

Аналіз кластеризації hiearchical з використанням евклідової відстані між змінними на основі абсолютної кореляції між змінними можна отримати так:

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

alt текст Дендрограма показує, як елементи, як правило, кластеризуються з іншими предметами відповідно до теоретизованих групувань (наприклад, N (невротизм) елементів групуються разом). Він також показує, наскільки деякі елементи в кластерах схожіші (наприклад, 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
Привіт, Джеромі. Питання: що означає розбирати abs (cor (...))? Чи не матриця cor - це та, де більша кількість вказує більше на відношення, а в матриці відстані - навпаки? (Я підозрюю, що я щось пропускаю, ви можете, будь ласка, поясніть?)
Тал Галілі

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

1
використання 1-абс (кор ...) мало б більше сенсу для мене :)
Тал Галілі

@Tal Так. Я згоден. Я швидко оглянувся. У цьому випадку вектор відстаней (евклідова abs cor з 1-abs cor) корелює навколо .96, тому це не має великої різниці.
Джеромі Англім

1
@Tal варіант dist: кожна змінна має вектор абсолютних кореляцій. Змінні з більш подібними векторами мали б менші евклідові відстані: en.wikipedia.org/wiki/Euclidean_distance
Джеромі Англім

2

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

1-abs(cor(x))

Коли ви переходите до перетворення цієї матриці в об’єкт відстані, якщо ви використовуєте функцію dist, ви будете приймати відстані між вашими кореляціями. Замість цього ви хочете використовувати as.dist()функцію, яка просто перетворить ваші попередньо обчислені відстані в "dist"об'єкт.

Застосування цього методу до прикладу Алгліма

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.