Procedimento recomendado para análise fatorial em dados dicotômicos com R

10

Eu tenho que executar uma análise fatorial em um conjunto de dados composto de variáveis ​​dicotômicas (0 = sim, 1 = não) e não sei se estou no caminho certo.

Usando tetrachoric()eu crio uma matriz de correlação, na qual eu corro fa(data,factors=1). O resultado está bem próximo dos resultados que recebo ao usar o MixFactor , mas não é o mesmo.

  1. Tudo bem ou você recomendaria outro procedimento?
  2. Por que fa()funciona e factanal()produz um erro? ( Fehler in solve.default(cv) : System ist für den Rechner singulär: reziproke Konditionszahl = 4.22612e-18)
cada
fonte
11
Não falo (alemão?), Mas parece que o erro se deve ao fato de a matriz tetracórica ser singular (não invertível). Mesmo com uma amostra de bom tamanho, algumas estimativas de matrizes de correlação policórica podem deixar de ser matrizes de correlação adequadas. Meu palpite é que fa () está usando componentes principais e factanal () está fazendo a máxima probabilidade máxima de FA, mas isso não é óbvio para mim na documentação de fa ().
JMS
@cada Quantos itens / assuntos você possui? E qual método é implementado no MixFactor?
chl 30/05
11
@cada Por que você está executando a análise fatorial? Se você pretende estimar a capacidade do participante, a TRI pode ser uma abordagem melhor. na questão de fa versus factanal, fa usa residual mínimo por padrão, enquanto factanal usa um método ML.
Richiemorrisroe #
@chl: muito poucos! Comecei a pesquisa e agora existem apenas 45 assuntos. Eu não posso recolher novos dados em teh momento e é por isso que eu tento fazer o máximo de código r possível ...
Cada
11
@cada Um CFA com 45 assuntos seria surrealista :-) Vou tentar acrescentar meus pensamentos mais tarde.
chl 31/05

Respostas:

12

Em resumo, com n = 45 assuntos, você fica com abordagens descritivas baseadas em correlação e multivariadas. No entanto, como esse questionário deve ser unidimensional, esse sempre é um bom começo.

O que eu faria:

  • Calcule correlações aos pares para seus 22 itens; relate o intervalo e a mediana - isso fornecerá uma indicação da consistência relativa das respostas dos itens observados (correlações acima de 0,3 são geralmente consideradas indicativas de boa validade convergente, mas é claro que a precisão dessa estimativa depende do tamanho da amostra) ; uma maneira alternativa de estudar a consistência interna do questionário seria calcular o alfa de Cronbach , embora com n = 45 o intervalo de confiança associado (use o bootstrap para isso) seja relativamente grande.
  • Calcular a correlação ponto-biserial entre os itens e a pontuação da escala resumida; ele lhe dará uma idéia do poder discriminativo de cada item (como cargas na FA), onde valores acima de 0,3 são indicativos de uma relação satisfatória entre cada item e sua escala correspondente.
  • Use um PCA para resumir a matriz de correlação (ela produz uma interpretação equivalente ao que seria obtido de uma análise de correspondência múltipla no caso de itens com pontuação dicotômica). Se o seu instrumento se comportar como uma escala unidimensional para sua amostra, observe um eixo dominante de variação (conforme refletido no primeiro valor próprio).

2(1r2)/(n)

chl
fonte
Muito obrigado! Sua resposta é tão detalhada e realmente muito útil! Obrigado!
cada
3

Este tópico possui uma boa posição do Google para o erro "System ist for rechner singulär: reziproke Konditionszahl" usando factanal (em inglês: "o sistema é computacionalmente singular: número de condição recíproco") - portanto, devo adicionar um comentário:

Quando a matriz de correlação é calculada a priori (por exemplo, para excluir os valores ausentes em pares), verifique se factanal () não considera que a matriz são os dados a serem analisados ​​(https://stat.ethz.ch/pipermail/r- help / 2007-October / 142567.html).

PREVIOUS: matrix = cor(data, use="pairwise.complete.obs")  # For example
WRONG: factanal(matrix, 3, rotation="varimax")
RIGHT: factanal(covmat=matrix, factors=3, rotation="varimax")

BurninLeo

BurninLeo
fonte