[R] question about Principal Component Analysis in R?

Bjørn-Helge Mevik bhs2 at mevik.net
Tue Feb 28 09:52:53 CET 2006


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




More information about the R-help mailing list