Grupowanie zmiennych na podstawie korelacji między nimi


23

Pytania:

  1. Mam dużą macierz korelacji. Zamiast grupować poszczególne korelacje, chcę grupować zmienne na podstawie ich korelacji ze sobą, tj. Jeśli zmienna A i zmienna B mają podobne korelacje do zmiennych C do Z, to A i B powinny być częścią tego samego klastra. Dobrym przykładem tego są różne klasy aktywów - korelacje wewnątrz klasy aktywów są wyższe niż korelacje między klasami aktywów.

  2. Rozważam również zmienne grupujące pod względem relacji siły między nimi, np. Gdy korelacja między zmiennymi A i B jest bliska 0, działają one mniej więcej niezależnie. Jeśli nagle niektóre podstawowe warunki ulegną zmianie i powstaje silna korelacja (dodatnia lub ujemna), możemy uznać te dwie zmienne za należące do tego samego klastra. Zamiast szukać pozytywnej korelacji, szuka się relacji kontra brak relacji. Myślę, że analogią może być skupisko dodatnio i ujemnie naładowanych cząstek. Jeśli ładunek spadnie do 0, cząstka odpłynie z gromady. Jednak zarówno dodatnie, jak i ujemne ładunki przyciągają cząstki do bujnych klastrów.

Przepraszam, jeśli niektóre z nich nie są zbyt jasne. Daj mi znać, wyjaśnię konkretne szczegóły.


1
Czy analiza czynnikowa nie spełni zadania dla qn 1? Pytanie 2 jest nieco niejasne. „Związek” wydaje się synonimem „korelacji” lub przynajmniej jedną formą relacji jest relacja liniowa i korelacja to uwzględnia. Być może musisz wyjaśnić qn 2.

Stwierdziłeś, co chcesz zrobić. Jakie jest Twoje pytanie? Czy chodzi o wdrożenie, czy twoje podejście analityczne jest odpowiednie? albo coś innego?
Jeromy Anglim

Odpowiedzi:


14

Oto prosty przykład w R z wykorzystaniem bfizestawu danych: bfi to zestaw danych 25 pozycji testu osobowości zorganizowanych wokół 5 czynników.

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

Hiearchiczną analizę skupień wykorzystującą odległość euklidanu między zmiennymi w oparciu o bezwzględną korelację między zmiennymi można uzyskać w następujący sposób:

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

alternatywny tekst Dendrogram pokazuje, w jaki sposób elementy ogólnie grupują się z innymi elementami zgodnie z teoretycznymi grupami (np. Grupa przedmiotów N (neurotyczność) razem). Pokazuje także, jak niektóre elementy w klastrach są bardziej podobne (np. C5 i C1 mogą być bardziej podobne niż C5 z C3). Sugeruje również, że klaster N jest mniej podobny do innych klastrów.

Alternatywnie możesz wykonać standardową analizę czynnikową, taką jak:

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
Cześć Jeromy. P: Co to znaczy wziąć dystans abs (cor (...))? Czyż macierz kory nie jest matrycą, w której większa liczba wskazuje więcej relacji, podczas gdy w macierzy odległości jest odwrotnie? (Podejrzewam, że coś mi brakuje, czy mógłbyś wyjaśnić?)
Tal Galili,

@Tal Rozumiem, że funkcja dist przyjmuje odległość euklidesową przekazanej do niej macierzy, która w tym przypadku była absolutną macierzą korelacji. Być może bardziej dosłowną konwersją z macierzy korelacji byłaby funkcja as.dist (), która przyjmuje istniejącą macierz odległości: np. As.dist (1-abs (cor (na.omit (x)))). patrz? dist
Jeromy Anglim

1
użycie 1-abs (cor ...) miałoby dla mnie większy sens :)
Tal Galili

@Tal Tak. Zgadzam się. Rzuciłem okiem. W tym przypadku wektor odległości (euklidesowy abs abs z 1-abs cor) koreluje wokół 0,96, więc nie robi to dużej różnicy.
Jeromy Anglim

1
@Tal the dist opcja: każda zmienna ma wektor bezwzględnych korelacji. Zmienne z bardziej podobnymi wektorami miałyby mniejsze odległości euklidesowe: en.wikipedia.org/wiki/Euclidean_distance
Jeromy Anglim

2

Podczas korelacji grupowania ważne jest, aby nie obliczać odległości dwukrotnie. Gdy weźmiesz macierz korelacji, w istocie wykonujesz obliczenia odległości. Będziesz chciał przekonwertować go na prawdziwą odległość, przyjmując 1 - wartość bezwzględną.

1-abs(cor(x))

Kiedy przejdziesz do konwersji tej macierzy na obiekt odległości, jeśli użyjesz funkcji dist, będziesz mierzył odległości między swoimi korelacjami. Zamiast tego chcesz użyć as.dist()funkcji, która po prostu przekształci Twoje wcześniej obliczone odległości w "dist"obiekt.

Zastosowanie tej metody do przykładu Alglim

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

skutkuje innym dendroggramem Dendrogram klastra

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.