Построение партитур из загрузок princomp в R

Я хотел бы иметь возможность построить оценки анализа главных компонентов с использованием его загрузок, но я не могу понять, что на самом деле делает функция princomp, когда вычисляет оценки набора данных. Игрушечный пример:

cc <- matrix(1:24,ncol=4)
PCAcc <- princomp(cc,scores=T,cor=T)
PCAcc$loadings

Loadings:
     Comp.1 Comp.2 Comp.3 Comp.4
[1,]  0.500  0.866              
[2,]  0.500 -0.289  0.816       
[3,]  0.500 -0.289 -0.408 -0.707
[4,]  0.500 -0.289 -0.408  0.707

PCAcc$scores

       Comp.1        Comp.2        Comp.3 Comp.4
[1,] -2.92770 -6.661338e-16 -3.330669e-16      0
[2,] -1.75662 -4.440892e-16 -2.220446e-16      0
[3,] -0.58554 -1.110223e-16 -6.938894e-17      0
[4,]  0.58554  1.110223e-16  6.938894e-17      0
[5,]  1.75662  4.440892e-16  2.220446e-16      0
[6,]  2.92770  6.661338e-16  3.330669e-16      0

Насколько я понимаю, оценки представляют собой линейную комбинацию нагрузок и исходных данных, измененных. Попытка "рукой":

rescaled <- t(t(cc)-apply(cc,2,mean))
rescaled%*%PCAcc$loadings

     Comp.1        Comp.2        Comp.3 Comp.4
[1,]     -5 -1.332268e-15 -4.440892e-16      0
[2,]     -3 -6.661338e-16 -3.330669e-16      0
[3,]     -1 -2.220446e-16 -1.110223e-16      0
[4,]      1  2.220446e-16  1.110223e-16      0
[5,]      3  6.661338e-16  3.330669e-16      0
[6,]      5  1.332268e-15  4.440892e-16      0

Столбцы отключены с коэффициентом 1.707825, 2 и 1.333333 соответственно. Почему это? Поскольку матрица данных игрушек имеет одинаковую дисперсию в каждом столбце, нормализация здесь не требуется. Любая помощь с благодарностью.

Спасибо!

1 ответ

Тебе нужно

scale(cc,PCAcc$center,PCAcc$scale)%*%PCAcc$loadings

или проще

predict(PCAcc,newdata=cc)
Другие вопросы по тегам