Message-ID: <m0bqwr6f16.fsf@bar.nemo-project.org>
Date: 2006-02-28T08:52:53Z
From: Bjørn-Helge Mevik
Subject: question about Principal Component Analysis in R?
In-Reply-To: <b1f16d9d0602270100m59f2b925s39715e0022a231de@mail.gmail.com> (comtech.usa@gmail.com's message of "Mon, 27 Feb 2006 01:00:06 -0800")
Michael wrote:
>> pca=prcomp(training_data, center=TRUE, scale=FALSE, retx=TRUE);
>
> Then I want to rotate the test data set using the
>
>> d1=scale(test_data, center=TRUE, scale=FALSE) %*% pca$rotation;
>> d2=predict(pca, test_data, center=TRUE, scale=FALSE);
>
> these two values are different
>
>> min(d2-d1)
> [1] -1.976152
>> max(d2-d1)
> [1] 1.535222
This is because you have subtracted a different means vector. You
should use the coloumn means of the training data (as predict does;
see the last line of stats:::predict.prcomp):
d1=scale(test_data, center=pca$center, scale=FALSE) %*% pca$rotation;
--
Bj??rn-Helge Mevik