回答:
これは、@ ttnphnsによるコメントで提供された洞察に満ちたヒントに基づいています。
ほぼ相関する変数を隣接させると、それらの共通の基礎となる要因のPCAへの寄与が増加します。 これは幾何学的に見ることができます。点群として示されているXY平面内のこれらのデータを検討します。
相関関係はほとんどなく、ほぼ等しい共分散があり、データは中心にあります。PCAは(どのように実行されても)2つのほぼ等しい成分を報告します。
ここで、等しい3番目の変数と、わずかな量のランダムエラーをスローします。の相関行列は、2番目と3番目の行と列の間(と)を除いて、小さな非対角係数でこれを示します。Y (X 、Y 、Z )Y Z
幾何学的に、すべての元のポイントをほぼ垂直にずらし、前の画像をページの平面から持ち上げます。この擬似3Dポイントクラウドは、(以前と同じ方法で生成されたものの、異なるデータセットに基づいて)側面透視図でリフティングを説明しようとします。
これらのポイントは元々青い面にあり、赤い点まで持ち上げられます。元の軸は右を指します。結果として生じる傾斜により、YZ方向に沿ってポイントが引き伸ばされ、分散への寄与が2倍になります。その結果、これらの新しいデータのPCAは依然として2つの主要な主成分を識別しますが、一方は他方の2倍の分散を持ちます。
この幾何学的な期待は、いくつかのシミュレーションで証明されていますR
。このために、2番目、3番目、4番目、5番目の2番目の変数の準共線コピーを作成し、からという名前を付けることにより、「リフティング」手順を繰り返しました。以下は、最後の4つの変数がどのように相関しているかを示す散布図マトリックスです。X 5
PCAは相関関係を使用して行われ(これらのデータには実際には関係ありませんが)、最初の2つの変数、次に3、...、最後に5つの変数を使用します。合計分散に対する主成分の寄与のプロットを使用して結果を示します。
最初は、ほとんど無相関の2つの変数があるため、寄与はほぼ等しくなります(左上隅)。2番目と相関する1つの変数を追加した後(幾何学的な図とまったく同じ)、まだ2つの主要なコンポーネントがあり、一方は他方のサイズの2倍になっています。(3番目のコンポーネントは完全な相関の欠如を反映しています。3D散布図のパンケーキのような雲の「厚さ」を測定します。)別の相関変数()を追加すると、最初のコンポーネントは合計の約4分の3になります; 5番目を追加すると、最初のコンポーネントは全体の5分の4近くになります。4つすべての場合、ほとんどのPCA診断手順では、2番目以降のコンポーネントは重要ではないと考えられます。最後のケースでは '考慮に値する1つの主要なコンポーネント。
ほぼ冗長な変数を含めると、PCAがその寄与を過度に強調する可能性があるため、変数のコレクションの同じ基礎的(ただし「潜在的」)側面を測定すると考えられる変数を破棄するメリットがあることがわかります。そのような手順について数学的に正しい(または間違っている)ものはありません。分析の目的とデータの知識に基づいた判断の呼び出しです。しかし、他の変数と強く相関していることが知られている変数を脇に置くと、PCAの結果に大きな影響を与える可能性があることは十分に明らかです。
これがR
コードです。
n.cases <- 240 # Number of points.
n.vars <- 4 # Number of mutually correlated variables.
set.seed(26) # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta # The variables.
cor(y) # Verify their correlations are as intended.
plot(data.frame(y)) # Show the scatterplot matrix.
# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))
# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)
@whuberと同じプロセスとアイデアをさらに説明しますが、負荷プロットを使用します。負荷はPCA結果の本質であるためです。
その後、最初の2つの主成分の負荷のプロットが表示されます。プロット上の赤いスパイクは、変数間の相関関係を示しているため、いくつかのスパイクの束は、密接に相関する変数のクラスターが見つかる場所です。コンポーネントは灰色の線です。コンポーネントの相対的な「強度」(相対的な固有値の大きさ)は、線の重みで与えられます。
「コピー」を追加すると、次の2つの効果が見られます。
@whuberが既にやったので、私は道徳を再開しません。
線自体をコンポーネントとして選択できます。]コンポーネント上のデータポイント(200人の被験者)の座標はコンポーネントスコアであり、200-1で割られた平方和はコンポーネントの固有値です。
(ただし、3番目の変数を追加すると、とにかく偏向する可能性があります)。可変ベクトルとコンポーネントラインの間の角度(コサイン)は、それらの間の相関関係です。ベクトルは単位長さであり、コンポーネントは直交しているため、これは座標、ローディングに他なりません。コンポーネントへの負荷の二乗の合計がその固有値です(コンポーネントは、このサブジェクト空間内でそれを最大化するように方向付けするだけです)
追加2。で追加、彼らは一緒に水と油のような互換性がないかのように私は、「変数空間」と「対象空間」について話した上で。私はそれを再考しなければならなかったし、少なくともPCAについて話すとき、両方のスペースは最終的に同型であり、そのおかげですべてのPCAの詳細を正しく表示できます-データポイント、変数軸、コンポーネント軸、変数ポイント、-単一の歪みのないバイプロット上。
以下は、散布図(可変空間)とローディングプロット(遺伝的起源による対象空間であるコンポーネント空間)です。一方に表示できるものはすべて、もう一方にも表示できます。写真は同一であり、互いに45度だけ回転します(この特定のケースでは反射します)。それは変数v1とv2のPCAでした(標準化されたため、分析されたのはrでした)。写真の黒い線は軸としての変数です。緑/黄色の線は軸としてのコンポーネントです。青い点はデータクラウド(対象)です。赤い点は、点(ベクトル)として表示される変数です。
The software was free to choose any orthogonal basis for that space, arbitrarily
は変数空間の丸い雲に適用されると思います(つまり、回答の最初の図のようなデータ散布図)が、プロットの読み込みは対象空間であり、ケースではなく変数がポイント(ベクトル)です。
論文の詳細がなければ、この相関性の高い変数の破棄は、計算能力やワークロードを節約するためだけに行われたと推測します。PCAが高度に相関する変数に対して「壊れる」理由はわかりません。PCAによって検出されたベースにデータを投影し直すと、データが白くなります(または相関が解除されます)。これがPCAの背後にある全体のポイントです。
まあ、それはあなたのアルゴリズムに依存します。高度に相関した変数は、悪条件のマトリックスを意味する場合があります。それに敏感なアルゴリズムを使用する場合、それは理にかなっているかもしれません。しかし、私は、固有値と固有ベクトルを抽出するために使用される最新のアルゴリズムのほとんどが、これに対して堅牢であることを言っています。相関の高い変数を削除してください。固有値と固有ベクトルは大きく変化しますか?もしそうなら、悪条件が答えかもしれません。高度に相関した変数は情報を追加しないため、PCA分解は変更されません
使用する主なコンポーネントの選択方法によって異なりますか?
固有値が1を超える主成分を使用する傾向があるため、影響はありません。
そして、上記の例から、スクリープロット法でさえ、通常正しい方法を選択します。エルボーの前にすべてを守ってください。ただし、単純に「支配的な」固有値を持つ主成分を選択すると、誤った方向に進むことになります。しかし、それはがれきプロットを使用する正しい方法ではありません!