Eu sou um estudante de graduação em ciência da computação. Fiz algumas análises fatoriais exploratórias para um projeto de pesquisa. Meus colegas (que lideram o projeto) usam o SPSS, enquanto eu prefiro o R. Isso não importou até que descobrimos uma grande discrepância entre os dois pacotes estatísticos.
Estamos usando fatoração de eixo principal como método de extração (observe que estou bem ciente da diferença entre o PCA e a análise fatorial e que não estamos usando o PCA , pelo menos não intencionalmente). Pelo que tenho lido, esta deve corresponder ao método de "eixo principal" em R, e quer "principal factoring eixo" ou "mínimos quadrados não ponderados" em SPSS, de acordo com a documentação R . Estamos usando um método de rotação oblíqua (especificamente, promax ) porque esperamos fatores correlatos e estamos interpretando a matriz de padrões .
Executando os dois procedimentos no R e no SPSS, existem grandes diferenças. A matriz de padrões fornece diferentes cargas. Embora isso dê mais ou menos o mesmo fator às relações variáveis, há uma diferença de 0,15 entre as cargas correspondentes, o que parece mais do que seria esperado por apenas uma implementação diferente do método de extração e rotações do promax. No entanto, essa não é a diferença mais surpreendente.
A variância cumulativa explicada pelos fatores é de cerca de 40% nos resultados do SPSS e 31% nos resultados de R. Essa é uma diferença enorme e levou meus colegas a querer usar o SPSS em vez de R. Não tenho nenhum problema com isso, mas uma diferença tão grande me faz pensar que podemos estar interpretando algo incorretamente, o que é um problema.
Confundindo ainda mais as águas, o SPSS relata diferentes tipos de variação explicada quando executamos fatoração de mínimos quadrados não ponderada. A proporção da variação explicada pelos valores próprios iniciais é de 40%, enquanto a proporção da variação explicada dos Soma de extração de cargas quadradas (SSL) é de 33%. Isso me leva a pensar que os autovalores iniciais não são o número apropriado para se olhar (suspeito que essa seja a variação explicada antes da rotação, embora seja tão grande que esteja além de mim). Ainda mais confuso, o SPSS também mostra o Rotation SSL, mas não calcula a porcentagem de variação explicada (o SPSS me diz que ter fatores correlatos significa que não posso adicionar SSLs para encontrar a variação total, o que faz sentido com a matemática que já vi). Os SSLs relatados de R não correspondem a nenhum deles, e R diz que descreve 31% da variação total. Os SSLs de R correspondem aos SSL de rotação mais de perto. Os autovalores de R da matriz de correlação original correspondem aos autovalores iniciais do SPSS.
Além disso, observe que eu brinquei com o uso de métodos diferentes e que o ULS e o PAF do SPSS parecem combinar o método de PA do R o mais próximo.
Minhas perguntas específicas:
- Quanta diferença devo esperar entre o R e o SPSS com implementações de análise fatorial?
- Qual das somas de cargas quadradas do SPSS devo interpretar, autovalores iniciais, extração ou rotação?
- Existem outros problemas que eu possa ter esquecido?
Minhas chamadas para SPSS e R são as seguintes:
SPSS:
FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT INITIAL KMO AIC EXTRACTION ROTATION
/FORMAT BLANK(.35)
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION PROMAX(4).
R:
library(psych)
fa.results <- fa(data, nfactors=6, rotate="promax",
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)
fonte
Respostas:
Antes de tudo, recomendo a recomendação da análise da solução antes da rotação. A análise fatorial conforme implementada no SPSS é um procedimento complexo com várias etapas, comparando o resultado de cada uma dessas etapas deve ajudá-lo a identificar o problema.
Especificamente, você pode executar
para ver a matriz de correlação que o SPSS está usando para realizar a análise fatorial. Em R, prepare você mesmo a matriz de correlação executando
Qualquer discrepância na maneira como os valores ausentes são tratados deve ser aparente nesse estágio. Depois de verificar se a matriz de correlação é a mesma, você pode alimentá-la com a função fa e executar sua análise novamente:
Se você ainda obtiver resultados diferentes no SPSS e R, o problema não está relacionado aos valores.
Em seguida, você pode comparar os resultados do próprio método de análise / extração de fatores.
e
Novamente, compare as matrizes fatoriais / comunalidades / soma das cargas quadradas. Aqui você pode esperar algumas pequenas diferenças, mas certamente não da magnitude que você descreve. Tudo isso lhe daria uma idéia mais clara do que está acontecendo.
Agora, responda suas três perguntas diretamente:
fonte
fa
função em R é dopsych
pacote. Afactanal
função do pacote base deve ter um desempenho semelhante, maspsych
vale a pena usá-la para outros fins de qualquer maneira. De fato, como se trata de dados do Likert, seria aconselhável usar ospsych
pacotesfa.poly
: consulte a documentação da ajuda .Recentemente, descobri que a maioria das discrepâncias na análise fatorial entre o SPSS e o R (com pacote Psych) desaparece quando os dados são tratados com falta de lista em cada programa, a matriz de correlação aparece exatamente a mesma em cada um e nenhuma rotação oblíqua é usada.
Uma discrepância remanescente está na série de valores que aparecem no gráfico de scree indicando valores próprios após a extração. Nos "scree (cor (mydata)) de R", esses "fatores" não correspondem aos listados na tabela Variance Explained do SPSS em "Soma de extração de cargas quadradas". Observe que os "componentes" do gráfico de scree R correspondem ao gráfico de scree do SPSS, que também corresponde aos "Autovalores iniciais" da tabela Variance Explained.
Também descobri que a "Proporção Var" explicada por cada fator é, em R, algumas vezes relatada como (a proporção de um determinado fator) / (a quantia explicada por todos os fatores), enquanto outras vezes é (a proporção para um dado fator) (o número de itens na análise). Portanto, se você obtiver a primeira, ela será, pelo menos proporcional e derivável, do que o SPSS relata em "Soma de extração de cargas quadradas ...% de variação".
Introduzir a rotação oblimin em cada programa, no entanto, cria discrepâncias consideráveis no carregamento de itens ou na variação de fatores, explicando que eu não consegui resolver.
fonte
O método de rotação padrão em R é oblimin, portanto, isso provavelmente causará a diferença. Como teste, execute um PAF / oblimin no SPSS e R e você encontrará resultados quase idênticos.
fonte
Não sei o que causa as diferenças nas cargas de padrão, mas presumo que a diferença em% da variação explicada se deva a: - você talvez esteja interpretando a primeira parte (de 2 ou 3) da tabela de variação explicada do SPSS que realmente mostra resultados da análise de componentes principais. A segunda parte mostra os resultados da análise de fatores não rotacionados e os terceiros resultados após a rotação (se usado). - o fato de que a função fa (ou mais precisamente seu método de impressão) calcula incorretamente o SSL para fatores oblíquos. Para obter a% da variação total explicada por fator, você deve calcular a soma das cargas estruturais quadradas por fator e dividir por número de variáveis. No entanto, você não pode resumir isso (no caso de rotações oblíquas) para obter a% da variação explicada por todos os fatores. Para conseguir esta,
fonte
Esta resposta é aditiva às que estão acima. Conforme sugerido por Gala em sua resposta, deve-se primeiro determinar se as soluções fornecidas por R (por exemplo, fa in psych) e SPSS são diferentes antes da rotação. Se forem iguais, verifique as configurações de rotação em cada programa. (Para o SPSS, você pode encontrar todas as configurações na entrada do manual de referência para FACTOR).
Uma configuração importante a procurar é a normalização de Kaiser . Por padrão, o SPSS faz a normalização do Kaiser durante a rotação, enquanto algumas funções R como 'fa' não. Você pode controlar essa configuração no SPSS especificando / CRITERIA = NOKAISER / KAISER, para verificar se elimina discrepâncias entre os resultados de cada programa.
fonte