3

Matlabで主成分回帰(pcr)を学習しようとしています。ここでこのガイドを使用します:http://www.mathworks.fr/help/stats/examples/partial-least-squares-regression-and-principal-components-regression.html

それは本当に良いです、しかし私はただ一歩を理解することができません:

私たちはPCAと回帰を行います。

[PCALoadings,PCAScores,PCAVar] = princomp(X);
betaPCR = regress(y-mean(y), PCAScores(:,1:2));

次に、最初の係数を調整します。

betaPCR = PCALoadings(:,1:2)*betaPCR;
betaPCR = [mean(y) - mean(X)*betaPCR; betaPCR];
yfitPCR = [ones(n,1) X]*betaPCR;

なぜ係数は一定の1つの係数である必要があるの'mean(y) - mean(X)*betaPCR'ですか?それを説明してもらえますか?

前もって感謝します!

4

1 に答える 1

5

これは実際には数学の質問であり、コーディングの質問ではありません。PCAは一連の特徴を抽出し、それらをマトリックスに配置します。これにより、とが得られPCALoadingsますPCAScores。最初の2つの主成分とそれらの負荷を引き出し、それらを独自のマトリックスに配置します。

W = PCALoadings(:, 1:2)
Z = PCAScores(:, 1:2)

との間の関係は、X次のように概算できます。ZX

Z = (X - mean(X)) * W      <=>      X ~ mean(X) + Z * W'                  (1)

直感的にはZ、の「重要な情報」のほとんどをキャプチャしX、マトリックスWは2つの表現間で変換する方法を示します。

yこれで、の回帰を実行できますZyまず、左側と右側の両方の平均がゼロになるように、から平均を引く必要があります。

y - mean(y) = Z * beta + errors                                           (2)

yここで、その回帰を使用してfromの予測を行いXます。式(1)から式(2)に代入すると、次のようになります。

y - mean(y) = (X - mean(X)) * W * beta

            = (X - mean(X)) * beta1

定義した場所beta1 = W * beta(これはコードの3行目で行います)。再配置:

y = mean(y) - mean(X) * beta1 + X * beta1

  = [ones(n,1) X] * [mean(y) - mean(X) * beta1; beta1]

  = [ones(n,1) X] * betaPCR

これは、定義するとうまくいきます

betaPCR = [mean(y) - mean(X) * beta1; beta1]

コードの4行目のように。

于 2012-07-05T13:13:25.697 に答える