それらの間の相関に基づくクラスタリング変数


23

質問:

  1. 大きな相関行列があります。個々の相関をクラスタリングする代わりに、相互の相関に基づいて変数をクラスタリングします。つまり、変数Aと変数Bが変数C〜Zと同様の相関を持っている場合、AとBは同じクラスターの一部である必要があります。これの良い実例は、さまざまな資産クラスです。資産内クラス相関は、資産間クラス相関よりも高くなっています。

  2. また、変数AとBの相関が0に近い場合、それらは多かれ少なかれ独立して作用するなど、変数間の厳密な関係の観点から変数をクラスタリングすることも検討しています。根本的な条件が突然変化し、強い相関(正または負)が発生した場合、これら2つの変数は同じクラスターに属していると考えることができます。したがって、正の相関関係を探すのではなく、関係と関係なしを探します。類推は、正と負に帯電した粒子のクラスターになり得ると思います。電荷が0になると、粒子はクラスターから離れます。ただし、正電荷と負電荷の両方が粒子を魅力的なクラスターに引き付けます。

これのいくつかがあまり明確でない場合、私は謝罪します。特定の詳細を明確にします。


1
因子分析はqn 1の仕事をしませんか?質問2は少しあいまいです。「関係」は「相関」の同義語と思われるか、少なくとも1つの関係の形式は線形関係であり、相関はそれをキャプチャします。おそらく、qn 2を明確にする必要があります。

あなたがしたいことを述べました。あなたの質問は何ですか?それは実装に関するものですか、それとも分析アプローチが適切かどうかです。または、他の何か?
ジェロミーアングリム

回答:


14

以下に、bfiデータセットを使用したRの簡単な例を示します。bfiは、5つの要素で構成された25個の性格テスト項目のデータセットです。

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

変数間の絶対相関に基づく変数間のユークリダン距離を使用した階層クラスター分析は、次のように取得できます。

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

代替テキスト 樹状図は、一般的に、理論化されたグループ化に従って、アイテムが他のアイテムとどのようにクラスター化するかを示します(たとえば、N(神経症)アイテムがグループ化される)。また、クラスター内のいくつかのアイテムがより類似していることも示しています(たとえば、C5とC1はC3を備えたC5よりも類似している可能性があります)。また、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:abs(cor(...))のdistを取るとはどういう意味ですか?corマトリックスは、より大きな数がより多くの関係を示すものではありませんが、距離マトリックスでは反対のことが当てはまりますか?(何か不足していると思われる、説明して
いただけ

@Tal私の理解では、dist関数は、渡された行列のユークリッド距離を取得します。この場合、これは絶対相関行列です。おそらく、相関行列からのよりリテラルな変換は、既存の距離行列をとるas.dist()関数です。たとえば、as.dist(1-abs(cor(na.omit(x))))。distを参照してください
ジェロミーアングリム

1
1-abs(cor ...)を使用すると、私にとってより意味があります。)
タルガリリ

@Talはい。同意する。ちょっと見てみました。この場合、距離のベクトル(abs corと1-abs corのユークリッド)は.96前後で相関するため、大きな違いはありません。
ジェロミーアングリム

1
@Tal distオプション:各変数には絶対相関のベクトルがあります。より多くの同様のベクターを持つ変数は、小さいユークリッド距離を持っているでしょう:en.wikipedia.org/wiki/Euclidean_distance
Jeromy Anglim

2

相関をクラスタリングする場合、距離を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))))))

異なる樹状図になります クラスター樹状図

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.