Eu tentei reproduzir alguma pesquisa (usando PCA) do SPSS em R. Na minha experiência, a principal()
função do pacote psych
foi a única função que se aproximou (ou se minha memória me serve bem, inoperante) para corresponder à saída. Para combinar com os mesmos resultados que no SPSS, eu tive que usar o parâmetro principal(..., rotate = "varimax")
. Eu vi artigos falarem sobre como eles fizeram o PCA, mas com base na saída do SPSS e no uso da rotação, parece mais uma análise fatorial.
Pergunta: O PCA, mesmo após a rotação (usando varimax
), ainda é PCA? Fiquei com a impressão de que isso poderia ser de fato uma análise fatorial ... Caso contrário, quais detalhes estão faltando?
r
spss
pca
factor-analysis
factor-rotation
Roman Luštrik
fonte
fonte
principal
função que você perguntou. Se a resposta dele realmente respondeu à sua pergunta, então talvez a sua pergunta não seja formulada adequadamente; você consideraria editar? Caso contrário, acho que a resposta do doutorado está muito mais próxima de realmente responder à sua pergunta. Observe que você pode alterar a resposta aceita a qualquer momento.Respostas:
Esta questão é amplamente sobre definições de PCA / FA, portanto, as opiniões podem diferir. Minha opinião é que PCA + varimax não deve ser chamado de PCA ou FA, mas explicitamente referido, por exemplo, como "PCA com rotação de varimax".
Devo acrescentar que este é um tópico bastante confuso. Nesta resposta, quero explicar o que realmente é uma rotação ; isso exigirá um pouco de matemática. Um leitor casual pode pular diretamente para a ilustração. Somente então podemos discutir se a rotação do PCA + deve ou não ser chamada de "PCA".
Uma referência é o livro de Jolliffe "Análise de componentes principais", seção 11.1 "Rotação de componentes principais", mas acho que poderia ser mais claro.
Seja uma matriz de dados n × p que assumimos estar centrada. O PCA equivale ( veja minha resposta aqui ) a uma decomposição de valor singular: X = U S V ⊤ . Existem duas visualizações equivalentes, mas complementares, nessa decomposição: uma visualização mais "projeção" no estilo PCA e uma visualização mais "variáveis latentes" no estilo FA.X n×p X=USV⊤
De acordo com a visão no estilo PCA, encontramos várias direções ortogonais (esses são vetores próprios da matriz de covariância, também chamados de "direções principais" ou "eixos") e "componentes principais" U S (também chamado componente principal " scores ") são projeções dos dados nessas direções. Os componentes principais não estão correlacionados, o primeiro tem variação máxima possível, etc. Podemos escrever: X = U S ⋅ V ⊤ = Pontuações ⋅ Direções principais .V US
De acordo com a visão do estilo FA, encontramos alguns "fatores latentes" de variação unitária não correlacionados que dão origem às variáveis observadas por meio de "cargas". De fato, são componentes principais padronizados (não correlacionados e com variação de unidade), e se definirmos cargas comoL=VS/ √U˜=n−1−−−−−√U , então X= √L=VS/n−1−−−−−√ (Observe que S ⊤=S.) Ambas as visualizações são equivalentes. Observe que as cargas são vetores próprios dimensionados pelos respectivos valores próprios (S/ √
(Devo acrescentar entre parênteses que PCA FA≠ ; FA visa explicitamente em encontrar fatores latentes que são linearmente mapeados para as variáveis observadas através de cargas, é mais flexível do que o PCA e produz diferentes cargas É por isso que eu prefiro chamar o anterior ". Visualização no estilo da FA no PCA "e não na FA, mesmo que algumas pessoas considerem um dos métodos de FA.)
Agora, o que faz uma rotação? Por exemplo, uma rotação ortogonal, como varimax. Em primeiro lugar, ele considera somente componentes, isto é: X ≈ L K S K V ⊤ k = ~ L K G ⊤ k . Em seguida, é necessária uma matriz quadrada ortogonal k × k T e conecta T T ⊤ = I a esta decomposição: X ≈ U k S k V ⊤ k = Uk<p
Observe que o que é girado são: (1) pontuações padronizadas, (2) cargas. Mas não as pontuações brutas e nem as principais direções! Portanto, a rotação acontece no espaço latente , não no espaço original. Isso é absolutamente crucial.
Mas o ponto de vista no estilo PCA praticamente entrou em colapso. As cargas rotacionadas não correspondem mais às direções / eixos ortogonais em , ou seja, as colunas de não são ortogonais! Pior, se você [ortogonalmente] projetar os dados nas direções dadas pelas cargas rotacionadas, obterá projeções correlacionadas (!) E não poderá recuperar as pontuações. [Em vez disso, para calcular as pontuações padronizadas após a rotação, é necessário multiplicar a matriz de dados com o pseudo-inverso de cargas . Como alternativa, pode-se simplesmente girar as pontuações padronizadas originais com a matriz de rotação:Rp Lrot U˜rot=X(L+rot)⊤ U˜rot=U˜T ] Além disso, os componentes rotacionados não capturam sucessivamente a quantidade máxima de variação: a variação é redistribuída entre os componentes (mesmo embora todos os componentes rotacionados capturem exatamente a mesma variação que todos os componentes principais originais).k k
Aqui está uma ilustração. Os dados são uma elipse 2D esticada ao longo da diagonal principal. A primeira direção principal é a diagonal principal, a segunda é ortogonal a ela. Os vetores de carregamento de PCA (vetores próprios dimensionados pelos valores próprios) são mostrados em vermelho - apontando nas duas direções e também esticados por um fator constante de visibilidade. Apliquei uma rotação ortogonal em nas cargas. Os vetores de carregamento resultantes são mostrados em magenta. Observe como eles não são ortogonais (!).30∘
Uma intuição no estilo FA aqui é a seguinte: imagine um "espaço latente" onde pontos preenchem um pequeno círculo (proveniente de um Gaussiano 2D com variações de unidade). Essa distribuição de pontos é então esticada ao longo das cargas do PCA (vermelho) para se tornar a elipse de dados que vemos nesta figura. No entanto, a mesma distribuição de pontos pode ser rotacionada e esticada ao longo das cargas rotativas de PCA (magenta) para se tornar a mesma elipse de dados .
[Para realmente ver que uma rotação ortogonal de cargas é uma rotação , é preciso observar um biplot de PCA; aí os vetores / raios correspondentes às variáveis originais simplesmente girarão.]
Vamos resumir. Após uma rotação ortogonal (como o varimax), os eixos "rotados principais" não são ortogonais e as projeções ortogonais neles não fazem sentido. Portanto, deve-se abandonar todo esse ponto de vista dos eixos / projeções. Seria estranho ainda chamá-lo de PCA (que tem tudo a ver com projeções com variação máxima etc.).
Do ponto de vista do estilo FA, simplesmente rotacionamos nossos fatores latentes (padronizados e não correlacionados), o que é uma operação válida. Não há "projeções" na FA; em vez disso, fatores latentes geram as variáveis observadas por meio de carregamentos. Essa lógica ainda é preservada. No entanto, começamos com os componentes principais, que na verdade não são fatores (como PCA não é o mesmo que FA). Seria estranho chamá-lo de FA também.
Em vez de debater se alguém "deveria" chamá-lo de PCA ou FA, eu sugeriria ser meticuloso ao especificar o procedimento exato usado: "PCA seguido por uma rotação varimax".
Post Scriptum. Ele é possível considerar um procedimento de rotação alternativo, onde é inserida entre e . Isso alternaria pontuações brutas e vetores próprios (em vez de pontuações e cargas padronizadas). O maior problema com essa abordagem é que, após essa "rotação", as pontuações não serão mais correlacionadas, o que é bastante fatal para a PCA. Um pode fazê-lo, mas não é como as rotações são geralmente sendo entendida e aplicada.TT⊤ US V⊤
fonte
PCA loading vectors... are shown in red
,stretched along the rotated PCA loadings (magenta)
. Eu me pergunto como "cargas" ou seu "vetor" podem ser mostrados como eixos no gráfico de dispersão de dados. Você pode, por favor, deixar mais claro? E a idéia de "alongamento"? Obrigado.A Análise de Componentes Principais (PCA) e Análise de Fatores Comuns (CFA) são métodos distintos. Freqüentemente, eles produzem resultados semelhantes e o PCA é usado como o método de extração padrão nas rotinas de Análise Fatorial do SPSS. Isso, sem dúvida, resulta em muita confusão sobre a distinção entre os dois.
A linha inferior é, estes são dois modelos diferentes, conceitualmente. No PCA, os componentes são combinações lineares ortogonais reais que maximizam a variação total. Na FA, os fatores são combinações lineares que maximizam a parte compartilhada da variação - subjacente às "construções latentes". É por isso que a FA é frequentemente chamada de "análise fatorial comum". A FA usa uma variedade de rotinas de otimização e o resultado, diferentemente do PCA, depende da rotina de otimização usada e dos pontos de partida para essas rotinas. Simplesmente não existe uma única solução única.
Em R, a função factanal () fornece ao CFA uma extração de probabilidade máxima. Portanto, você não deve esperar que ele reproduza um resultado do SPSS baseado em uma extração de PCA. Simplesmente não é o mesmo modelo ou lógica. Não tenho certeza se você obteria o mesmo resultado se usasse a extração de máxima verossimilhança do SPSS, pois eles podem não usar o mesmo algoritmo.
Para o bem ou para o mal no R, você pode, no entanto, reproduzir a "análise fatorial" mista que o SPSS fornece como padrão. Aqui está o processo em R. Com esse código, sou capaz de reproduzir o resultado de "Análise fatorial" do componente principal do SPSS usando esse conjunto de dados. (Com exceção do sinal, que é indeterminado). Esse resultado também pode ser girado usando qualquer um dos métodos de rotação disponíveis Rs.
fonte
prcomp
ouprincomp
fazem em comparação com a abordagem mista do SPSS? O que o SPSS realmente está fazendo por extração?zz <- scale(attitude,T,T)
epc1 <- zz %*% solve(cor(attitude),lamba[,1])
. Onde lambda é o resultado da última linha do exemplo do @Brett Magills.Esta resposta é apresentar, em forma de gráfico de caminho, coisas sobre as quais @amoeba raciocinou em sua resposta profunda (mas um pouco complicada) neste tópico (eu meio que concordo com isso em 95%) e como elas me parecem .
O PCA, na sua forma adequada e mínima, é a rotação ortogonal específica dos dados correlacionados para a sua forma não correlacionada, com os principais componentes percorrendo sequencialmente cada vez menos a variabilidade geral. Se a redução de dimensionalidade é tudo o que queremos, geralmente não computamos cargas e o que elas arrastam após elas. Estamos felizes com o (brutos) principais escores dos componentes . [Observe que as anotações no gráfico não seguem exatamente as @ amebas, - eu me ater ao que adoto em algumas das minhas outras respostas.]P
No gráfico, tomo um exemplo simples de duas variáveis
p=2
e uso os dois componentes principais extraídos. Embora normalmente mantenhamos apenas alguns primeirosm<p
componentes, para a questão teórica que estamos considerando ("O PCA com rotação é um PCA ou o quê?"), Não faz diferença se manterm
ou todosp
eles; pelo menos na minha resposta particular.O truque de cargas é puxar escala (magnitude, a variabilidade, a inércia ) desligar os componentes (escores brutos) e para o coeficientes (eigenvectors) deixando o ex-estar nua "framework" (pr padronizado pontuações dos componentes) e o último a ser carnoso (cargas). Você restaura os dados igualmente bem com os dois: . Mas as cargas abrem perspectivas: (i) interpretar os componentes; (ii) ser girado; (iii) restaurar correlações / covariâncias das variáveis. Tudo isso se deve ao fato de a variabilidade dos dados ter sido gravada em cargas, como sua carga.V P z A X = P V ′ = P z A ′L V Pz A X=PV′=PzA′
E eles podem retornar essa carga de volta aos pontos de dados a qualquer momento - agora ou após a rotação . Se concebermos uma rotação ortogonal como o varimax, significa que queremos que os componentes permaneçam não correlacionados após a rotação. Somente dados com matriz de covariância esférica, quando rotacionados ortogonalmente, preservam a não correlação. E pronto, os principais componentes padronizados (que no aprendizado de máquina costumam ser chamados de "dados embranquecidos por PCA") são os dados mágicos ( são na verdade proporcionais à esquerda, ou seja, autovetores de linha dos dados). Enquanto estamos em busca da matriz de rotação varimaxP z QPz Pz Q para facilitar a interpretação das cargas, os pontos de dados aguardam passivamente em sua casta esfericidade e identidade (ou "brancura").
Depois que é encontrado, a rotação de é equivalente à maneira usual de cálculo das pontuações dos componentes principais padronizados através do inverso generalizado da matriz de carregamento - desta vez das cargas rotacionadas , (consulte a tabela ) Os componentes principais rotacionados em varimax resultantes, , não estão correlacionados, como queríamos, e os dados são restaurados por eles tão bem quanto antes da rotação: . Podemos então devolver-lhes a incrustação depositada (e, consequentemente, rodado) em - para unstandardize eles: .P z A r C z X = P z A ' = C z A ' r A r CQ Pz Ar Cz X=PzA′=CzA′r Ar C
Devemos estar cientes de que "os componentes principais rotacionados com varimax" não são mais componentes principais : usei a notação Cz, C, em vez de Pz, P, para enfatizá- la. Eles são apenas "componentes". Os componentes principais são únicos, mas podem ser muitos. Além varimax rotações irá produzir outras novas variáveis também chamados de componentes e também não correlacionadas, além de nossos queridos.C
Além disso, os principais componentes rotacionados em varimax (ou rotacionados ortogonalmente) (agora apenas "componentes"), embora permaneçam não correlacionados, ortogonais, não implicam que suas cargas também sejam ortogonais. As colunas de são mutuamente ortogonais (como eram os vetores próprios ), mas não as colunas de (consulte também a nota de rodapé aqui ).V A rA V Ar
E finalmente - girar os principais componentes brutos com nosso não é uma ação útil. Obteremos algumas variáveis correlatas com significado problemático. parecia otimizar (de alguma maneira específica) a configuração das cargas que haviam absorvido toda a balança nelas . nunca foi treinado para girar pontos de dados com toda a escala restante neles. O rotativo com será equivalente a vetores próprios rotativos com (emQP Q Q Q P Q V Q V r " C " = X V r"C" Q Q P Q V Q Vr ) e, em seguida, calculando as pontuações do componente bruto como . Esses "caminhos" observados por @amoeba em seu Postscriptum."C"=XVr
Essas ações delineadas por último (sem sentido na maior parte) nos lembram que os vetores próprios, não apenas as cargas, podiam ser girados, em geral. Por exemplo, o procedimento varimax poderia ser aplicado a eles para simplificar sua estrutura. Porém, como os vetores próprios não são tão úteis para interpretar o significado dos componentes quanto as cargas, a rotação dos vetores próprios raramente é realizada.
Portanto, o PCA com rotação varimax (ou outra) subsequente é
Não me referi à análise fatorial nesta resposta. Parece-me que o uso da palavra "espaço latente" pela @ ameba é um pouco arriscado no contexto da pergunta. No entanto, vou concordar que a rotação analítica do PCA + pode ser chamada de " visualização no estilo FA no PCA".
fonte
Em
psych::principal()
que você pode fazer diferentes tipos de rotações / transformações ao seu componente extraído Principal (s) ou '' PCs '' usando orotate=
argumento, como:"none"
,"varimax"
(Padrão),"quatimax"
,"promax"
,"oblimin"
,"simplimax"
, e"cluster"
. Você deve decidir empiricamente qual deve fazer sentido no seu caso, se necessário, dependendo de sua própria avaliação e conhecimento do assunto sob investigação. Uma pergunta-chave que pode lhe dar uma dica: qual é mais interpretável (novamente, se necessário)?Na ajuda, você pode achar o seguinte também útil:
fonte
Meu entendimento é que a distinção entre análise PCA e análise fatorial é principalmente se existe um termo de erro. Assim, o PCA pode e deve representar fielmente os dados, enquanto a análise fatorial é menos fiel aos dados nos quais é treinada, mas tenta representar tendências subjacentes ou comunalidade nos dados. Sob uma abordagem padrão, o PCA não é rotacionado, mas é matematicamente possível fazê-lo, para que as pessoas façam isso de tempos em tempos. Eu concordo com os comentaristas, em que o "significado" desses métodos está um pouco disponível e que provavelmente é aconselhável garantir que a função que você está usando faça o que você pretende - por exemplo, como você observa que o R tem algumas funções que executam um tipo diferente de PCA do que os usuários do SPSS estão familiarizados.
fonte
Graças ao caos nas definições de ambos, eles são efetivamente sinônimos. Não acredite em palavras e olhe fundo nas docas para encontrar as equações.
fonte
Embora esta pergunta já tenha uma resposta aceita , gostaria de acrescentar algo ao ponto da pergunta.
"PCA" - se bem me lembro - significa "análise de componentes principais"; portanto, enquanto você estiver analisando os componentes principais, seja sem rotação ou com rotação, ainda estamos na análise dos "componentes principais" (que foram encontrados pela decomposição inicial da matriz apropriada).
Eu formularia que, após a rotação "varimax" nos dois primeiros componentes principais, temos a "solução varimax dos dois primeiros computadores" (ou outra coisa), mas ainda estamos no quadro da análise dos componentes principais, ou menor, estão no âmbito de "pca".
Para deixar meu argumento ainda mais claro: não acho que a simples questão de rotação introduza o problema de distinguir entre EFA e CFA (a última mencionada / introduzida no problema, por exemplo, na resposta de Brett)
fonte
Achei isso o mais útil: Abdi & Williams, 2010, Análise de componentes principais .
(consulte o documento para definição de Q).
fonte