どの変数がどのPCAコンポーネントを説明し、その逆ですか?


14

このデータの使用:

head(USArrests)
nrow(USArrests)

私はこうしてPCAを行うことができます:

plot(USArrests)
otherPCA <- princomp(USArrests)

新しいコンポーネントを入手できます

otherPCA$scores

そして、コンポーネントによって説明される分散の割合

summary(otherPCA)

しかし、どの変数がほとんどの主成分によって説明されているかを知りたい場合はどうすればよいですか?逆もまた同様です。たとえば、PC1またはPC2は主に説明されていmurderますか?これどうやってするの?

たとえば、PC1の80%がmurderまたはで説明されていると言えますかassault

私はここで負荷が私を助けると思うが、彼らは私がそれを理解するように説明された分散ではなく方向性を示す、例えば

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   

2
負荷の兆候は任意であることに注意してください。3つの犯罪変数はすべて正の相関関係にありますが、上記の負荷の兆候からそれをうまく処理できます。
ニックコックス14

残念ながら、この質問に対する受け入れられた答えは間違っていると思います。以下に自分の回答を掲載しました。
アメーバは、モニカーを復活させる

回答:


10

あなたは正しいです、ローディングはここであなたを助けることができます。それらは、変数と主成分間の相関を計算するために使用できます。さらに、すべての主成分に対する1つの変数の2乗荷重の合計は1に等しくなります。したがって、2乗荷重は、1つの主成分によって説明される1つの変数の分散の割合を示します。

princompの問題は、「非常に高い」負荷しか表示されないことです。しかし、負荷は共分散行列の固有ベクトルであるためeigen、R のコマンドを使用してすべての負荷を取得できます。

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

これで、マトリックスに目的の情報ができましたexplvar


あなたは、ランダムな男ありがとう、あなたはおそらく、たとえば私を示すことができたassaultか、urban pop我々はこれを行うことができますか?以下のためのマトリックス中にのみ1つの相関が存在するので、部分的混乱assault
user1320502が

1
申し訳ありませんが、回答を改善しましたが、あなたがすでに私の投稿にコメントしていることに気付きませんでした。攻撃は、PC1で-0.995でロードされます。したがって、この値を2乗した後、PC1が変数攻撃の分散の99%を説明すると結論付けることができます。アーバンポップの値を2乗した後、PC3はアーバンポップの分散の4%を、PC2は95.5%を説明すると結論付けることができます。
random_guy 14

1
OPは、PCAのどれだけが変数に起因するかについて尋ねませんか?あなたの答えは、変数のどれくらいがCPAで説明できるかについてです
ハイゼンベルグ14

2
w=(0.3,0.3,...0.3)1109.9w0.1

2
申し訳ありませんが、上記のコメントで私が間違っていると思いますか?そうでない場合は、潜在的な混乱を取り除くために回答を編集できます。これは、将来の読者にとって非常に役立ちます。これらの問題をより詳細に説明しようとして、自分で答えを投稿しました。
アメーバは、モニカーを復活させる

9

受け入れられた答えは危険なほど誤解を招く可能性があると思います(-1)。 OPには少なくとも4つの異なる質問が混在しています。私はそれらを次々と考えます。


  • Q1。与えられたPCの分散は、与えられた元の変数によってどの程度説明されますか?特定の元の変数の分散は、特定のPCによってどの程度説明されますか?

r2riVisiLiLi=(si)1/2Vi。その要素は、このPCと元の変数との相関関係です。

ViLi

さらに、PCAが(相関ではなく)共分散で行われた場合、ローディングでは相関ではなく共分散も得られます。相関を取得するには、PCAに従って手動で相関を計算する必要があります。[現在受け入れられている答えはそれについて不明確です。]

  • 80%

r2R2

r2R2

  • 80%

r=0.9r=0.9r2R2=0.90.95>1R2

特定の分散量を説明するサブセットを選択する方法は、@ FrankHarrell(+1)によって提案されました。


+1、これは受け入れられた答えでなければなりません。
紳士


6

Rにバンドルされた米国の逮捕データはここの例にすぎませんが、問題の負荷計算は共分散行列の PCAからのものであることに注意してください。変数は異なるスケールで測定されるため、それはarbitrary意的と無意味の間のどこかにあります。

都市人口はパーセントのように見えます。カリフォルニアは91%で最高です。

3つの犯罪変数は、人口規模に関連して表される犯罪の逮捕数と思われます(おそらく一定期間)。おそらく、それは1000か10000あたりの逮捕かどうかにかかわらずどこかに文書化されています。

与えられたユニットのアサルト変数の平均は約171であり、平均殺人は約8です。したがって、負荷の説明は、パターンの大部分がアーチファクトであるということです。変数の非常に異なる変動性に依存します。

したがって、データには殺人などよりも暴行の逮捕が多いという意味がありますが、その既知の(または驚くべきではない)事実が分析を支配しています。

これは、統計の他の部分と同様に、PCAで何をしているかを考える必要があることを示しています。

これをさらに進めると:

  1. 私は、都市部の割合は分析から除外したほうが良いと主張します。都市にいることは犯罪ではありません。もちろん、犯罪に影響する変数の代用になるかもしれません。

  2. 私の考えでは、相関行列に基づくPCAの方が理にかなっています。別の可能性は、逮捕率ではなく、逮捕率の対数を使用することです(すべての値は正です。以下を参照)。

注:@random_guyの答えは、共分散行列を意図的に使用しています。

以下に要約統計を示します。私はStataを使用しましたが、それはまったく重要ではありません。

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.