Przeprowadziłem analizę składowych głównych (PCA) z R przy użyciu dwóch różnych funkcji ( prcomp
i princomp
) i zauważyłem, że wyniki PCA różnią się znakiem. Jak to możliwe?
Rozważ to:
set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x
PC1 PC2
[1,] -4.508620 -0.2567655
[2,] -3.373772 -1.1369417
[3,] -2.679669 1.0903445
[4,] -1.615837 0.7108631
[5,] -0.548879 0.3093389
[6,] 0.481756 0.1639112
[7,] 1.656178 -0.9952875
[8,] 2.560345 -0.2490548
[9,] 3.508442 0.1874520
[10,] 4.520055 0.1761397
set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
Comp.1 Comp.2
[1,] 4.508620 0.2567655
[2,] 3.373772 1.1369417
[3,] 2.679669 -1.0903445
[4,] 1.615837 -0.7108631
[5,] 0.548879 -0.3093389
[6,] -0.481756 -0.1639112
[7,] -1.656178 0.9952875
[8,] -2.560345 0.2490548
[9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397
Dlaczego znaki ( +/-
) różnią się w obu analizach? Gdybym wtedy używał głównych składowych PC1
i PC2
jako predyktorów w regresji, tj. lm(y ~ PC1 + PC2)
Całkowicie zmieniłoby to moje rozumienie wpływu dwóch zmiennych w y
zależności od zastosowanej metody! Jak więc mogę powiedzieć, że PC1
ma to np. Pozytywny wpływ y
i PC2
np. Negatywny wpływ na y
?
Ponadto: jeśli znak komponentów PCA nie ma znaczenia, czy dotyczy to również analizy czynnikowej (FA)? Czy dopuszczalne jest odwrócenie (odwrócenie) znaku wyników poszczególnych składników PCA / FA (lub obciążeń, jako kolumny macierzy obciążeń)?
źródło
Odpowiedzi:
PCA jest prostą transformacją matematyczną. Jeśli zmienisz znaki komponentu (ów), nie zmienisz wariancji zawartej w pierwszym komponencie. Ponadto po zmianie znaków wagi (
prcomp( ... )$rotation
) również zmieniają znak, więc interpretacja pozostaje dokładnie taka sama:przedstawia
i
pca2$loadings
pokażDlaczego więc interpretacja pozostaje taka sama?
Wykonujesz regresję PCA dla
y
składnika 1. W pierwszej wersji (prcomp
) powiedz, że współczynnik jest dodatni: im większy składnik 1, tym większe y. Co to znaczy, jeśli chodzi o oryginalne zmienne? Ponieważ waga zmiennej 1 (1:10
a) jest dodatnia, oznacza to, że im większa zmienna 1, tym większe y.Teraz użyj drugiej wersji (
princomp
). Ponieważ składnik ma zmieniony znak, im większy y, tym mniejszy składnik 1 - współczynnik y <na PC1 jest teraz ujemny. Ale tak samo jest z ładowaniem zmiennej 1; oznacza to, że im większa zmienna 1, tym mniejszy składnik 1, tym większe y - interpretacja jest taka sama.Być może najłatwiejszym sposobem na sprawdzenie tego jest użycie biplota.
przedstawia
Ten sam biplot dla drugiego wariantu pokazuje
Jak widać, obrazy są obracane o 180 °. Jednak związek między wagami / ładunkami (czerwone strzałki) a punktami danych (czarne kropki) jest dokładnie taki sam; dlatego interpretacja składników pozostaje niezmieniona.
źródło
princomp
. Podczas projekcji moje rzutowane dane są również odwracane w znakach w niektórych wymiarach. Moim celem jest dokonanie klasyfikacji współczynników. Znak nadal nie ma znaczenia?To pytanie jest często zadawane na tym forum, dlatego chciałbym uzupełnić doskonałą odpowiedź @ stycznia o nieco bardziej ogólne uwagi.
Zarówno w analizie głównych składników (PCA), jak i analizie czynnikowej (FA) używamy oryginalnych zmiennychx1, x2), . . . xre z1, z2), . . . zk x1 z1 z2) x1≈ 2 z1+ 3 z2) 2) 3)
Wniosek jest taki, że dla każdego komponentu PCA lub FA znak jego ocen i ładunków jest arbitralny i bez znaczenia. Można go odwrócić, ale tylko wtedy, gdy znak zarówno wyników, jak i ładunków zostanie odwrócony w tym samym czasie.
źródło
princomp
. Podczas projekcji moje rzutowane dane są również odwracane w znakach w niektórych wymiarach. Moim celem jest dokonanie klasyfikacji współczynników. Znak nadal nie ma znaczenia?źródło