Variabel pengelompokan berdasarkan korelasi di antara mereka

23

Pertanyaan:

  1. Saya memiliki matriks korelasi yang besar. Alih-alih mengelompokkan korelasi individu, saya ingin mengelompokkan variabel berdasarkan korelasi mereka satu sama lain, yaitu jika variabel A dan variabel B memiliki korelasi yang sama dengan variabel C ke Z, maka A dan B harus menjadi bagian dari cluster yang sama. Contoh kehidupan nyata yang baik dari ini adalah kelas aset yang berbeda - korelasi kelas aset intra lebih tinggi daripada korelasi kelas aset antar.

  2. Saya juga mempertimbangkan pengelompokan variabel dalam hal hubungan stregth di antara mereka, misalnya ketika korelasi antara variabel A dan B mendekati 0, mereka bertindak lebih atau kurang secara independen. Jika tiba-tiba beberapa kondisi yang mendasarinya berubah dan korelasi yang kuat muncul (positif atau negatif), kita dapat menganggap kedua variabel ini sebagai milik kelompok yang sama. Jadi alih-alih mencari korelasi positif, orang akan mencari hubungan versus tidak ada hubungan. Saya kira analogi dapat berupa sekelompok partikel bermuatan positif dan negatif. Jika muatan jatuh ke 0, partikel melayang menjauh dari cluster. Namun, muatan positif dan negatif menarik partikel ke kluster yang bercahaya.

Saya minta maaf jika beberapa dari ini tidak terlalu jelas. Tolong beri tahu saya, saya akan mengklarifikasi detail spesifik.

Eduardas
sumber
1
Apakah analisis faktor tidak berfungsi untuk qn 1? Pertanyaan 2 agak kabur. 'Hubungan' sepertinya sinonim untuk 'korelasi' atau setidaknya satu bentuk hubungan adalah hubungan linier dan korelasi yang menangkapnya. Mungkin, Anda perlu mengklarifikasi qn 2.
Anda telah menyatakan apa yang ingin Anda lakukan. Apa pertanyaan Anda? Apakah ini tentang implementasi atau apakah pendekatan analisis Anda sesuai? atau sesuatu yang lain?
Jeromy Anglim

Jawaban:

14

Berikut adalah contoh sederhana dalam R menggunakan bfidataset: bfi adalah dataset dari 25 item tes kepribadian yang disusun sekitar 5 faktor.

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

Analisis cluster hiearchical menggunakan jarak euclidan antara variabel berdasarkan korelasi absolut antara variabel dapat diperoleh seperti:

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

teks alternatif Dendrogram menunjukkan bagaimana item umumnya mengelompok dengan item lain sesuai dengan pengelompokan berteori (misalnya, N (Neuroticism) kelompok item bersama-sama). Ini juga menunjukkan bagaimana beberapa item dalam cluster lebih mirip (misalnya, C5 dan C1 mungkin lebih mirip daripada C5 dengan C3). Ini juga menunjukkan bahwa N cluster kurang mirip dengan cluster lain.

Atau Anda dapat melakukan analisis faktor standar seperti:

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 
Jeromy Anglim
sumber
1
Hai Jeromy. T: apa artinya mengambil dist of abs (cor (...))? Bukankah sebuah matriks cor adalah salah satu di mana angka yang lebih besar menunjukkan lebih dari suatu relasi, sedangkan dalam matriks jarak yang sebaliknya adalah benar? (Saya curiga saya kehilangan sesuatu, dapatkah Anda jelaskan?)
Tal Galili
@Tal Pemahaman saya adalah bahwa fungsi dist mengambil jarak euclidean dari matriks yang diteruskan ke sana, yang dalam hal ini adalah matriks korelasi absolut. Mungkin, konversi yang lebih literal dari matriks korelasi adalah fungsi as.dist () yang mengambil matriks jarak yang ada: misalnya, as.dist (1-abs (cor (na.omit (x))))). see? dist
Jeromy Anglim
1
menggunakan 1-abs (cor ...) akan lebih masuk akal bagi saya :)
Tal Galili
@Tal Ya. Saya setuju. Saya melihat sekilas. Dalam hal ini vektor jarak (euclidean abs cor dengan 1-abs cor) berkorelasi sekitar 0,96, sehingga tidak membuat banyak perbedaan.
Jeromy Anglim
1
@Tal opsi dist: setiap variabel memiliki vektor korelasi absolut. Variabel dengan vektor yang lebih mirip akan memiliki jarak euclidean yang lebih kecil: en.wikipedia.org/wiki/Euclidean_distance
Jeromy Anglim
2

Ketika Korelasi Clustering penting untuk tidak menghitung jarak dua kali. Ketika Anda mengambil matriks korelasi Anda pada dasarnya membuat perhitungan jarak. Anda akan ingin mengubahnya menjadi jarak yang benar dengan mengambil 1 - nilai absolut.

1-abs(cor(x))

Ketika Anda pergi untuk mengkonversi matriks ini ke objek jarak, jika Anda menggunakan fungsi dist Anda akan mengambil jarak antara korelasi Anda. Alih-alih, Anda ingin menggunakan as.dist()fungsi yang hanya akan mengubah jarak yang telah Anda hitung menjadi sebuah "dist"objek.

Menerapkan metode ini pada contoh Alglim

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

menghasilkan dendroggram yang berbeda Cluster Dendrogram

Justin Leiterman
sumber