Realizei a análise de componentes principais (PCA) com R usando duas funções diferentes ( prcomp
e princomp
) e observei que as pontuações do PCA diferiam no sinal. Como pode ser?
Considere isto:
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
Por que os sinais ( +/-
) diferem nas duas análises? Se eu estivesse usando componentes principais PC1
e PC2
como preditores em uma regressão, ou seja lm(y ~ PC1 + PC2)
, isso mudaria completamente minha compreensão do efeito das duas variáveis, y
dependendo de qual método eu usei! Como eu poderia dizer então que PC1
tem, por exemplo, um efeito positivo y
e PC2
, por exemplo, um efeito negativo y
?
Além disso: Se o sinal dos componentes do PCA não faz sentido, isso também é válido para a análise fatorial (FA)? É aceitável inverter (inverter) o sinal das pontuações individuais dos componentes PCA / FA (ou das cargas, como uma coluna da matriz de carga)?
fonte
Respostas:
PCA é uma simples transformação matemática. Se você alterar os sinais do (s) componente (s), não modificará a variação contida no primeiro componente. Além disso, quando você altera os sinais, os pesos (
prcomp( ... )$rotation
) também alteram o sinal, portanto a interpretação permanece exatamente a mesma:mostra
e
pca2$loadings
mostrarEntão, por que a interpretação permanece a mesma?
Você faz a regressão PCA do
y
componente 1. Na primeira versão (prcomp
), diga que o coeficiente é positivo: quanto maior o componente 1, maior o y. O que significa quando se trata das variáveis originais? Como o peso da variável 1 (1:10
em a) é positivo, isso mostra que quanto maior a variável 1, maior o y.Agora use a segunda versão (
princomp
). Como o componente mudou o sinal, quanto maior y, menor o componente 1 - o coeficiente de y <sobre PC1 agora é negativo. Mas o mesmo ocorre com o carregamento da variável 1; isso significa que, quanto maior a variável 1, menor o componente 1, maior y - a interpretação é a mesma.Possivelmente, a maneira mais fácil de ver isso é usar um biplot.
mostra
O mesmo biplot para a segunda variante mostra
Como você vê, as imagens são giradas em 180 °. No entanto, a relação entre os pesos / cargas (as setas vermelhas) e os pontos de dados (os pontos pretos) é exatamente a mesma; assim, a interpretação dos componentes é inalterada.
fonte
princomp
. Assim, durante a projeção, meus dados projetados também são invertidos em algumas dimensões. Meu objetivo é fazer a classificação dos coeficientes. O sinal ainda não importa aqui?Esta pergunta é muito solicitada neste fórum, então gostaria de complementar a excelente resposta de @ January com considerações um pouco mais gerais.
Na análise de componentes principais (PCA) e na análise fatorial (FA), usamos as variáveis originais para estimar vários componentes latentes (ou variáveis latentes) . Esses componentes latentes são fornecidos pelas pontuações dos componentes PCA ou FA. Cada variável original é uma combinação linear desses componentes com alguns pesos: por exemplo, a primeira variável original pode ser bem aproximada duas vezes mais três vezes , de modo que . Se as pontuações forem padronizadas, esses pesos ( e ) são conhecidos como cargas. Então, informalmente, pode-se dizer quex1, x2, . . . xd z1, z2, . . . zk x1 z1 z2 x1≈ 2 z1+ 3 z2 2 3
A partir daqui, podemos ver que, se pegarmos um componente latente, por exemplo, , e virarmos o sinal de suas pontuações e carregamentos, isso não terá influência no resultado (ou na interpretação), porque - 1 ⋅ - 1 = 1.z1
A conclusão é que, para cada componente PCA ou FA, o sinal de sua pontuação e carga é arbitrário e sem sentido. Ele pode ser invertido, mas apenas se o sinal de ambas as pontuações e cargas for revertido ao mesmo tempo.
fonte
princomp
. Assim, durante a projeção, meus dados projetados também são invertidos em algumas dimensões. Meu objetivo é fazer a classificação dos coeficientes. O sinal ainda não importa aqui?fonte