[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