Procedimiento recomendado para el análisis factorial en datos dicotómicos con R

10

Tengo que ejecutar un análisis factorial en un conjunto de datos compuesto por variables dicotómicas (0 = sí, 1 = no) y no sé si estoy en el camino correcto.

Usando tetrachoric()creo una matriz de correlación, en la que corro fa(data,factors=1). El resultado está bastante cerca de los resultados que recibo cuando uso MixFactor , pero no es lo mismo.

  1. ¿Está bien o recomendaría otro procedimiento?
  2. ¿Por qué fa()funciona y factanal()produce un error? ( Fehler in solve.default(cv) : System ist für den Rechner singulär: reziproke Konditionszahl = 4.22612e-18)
cada
fuente
1
No hablo (¿alemán?) Pero parece que el error se debe a que la matriz tetracórica es singular (no invertible). Incluso con una muestra de buen tamaño, algunas estimaciones de matrices de correlación policóricas pueden dejar de ser matrices de correlación adecuadas. Mi presentimiento es que fa () está usando componentes principales y factanal () está haciendo una probabilidad máxima FA, pero eso no es obvio para mí en la documentación de fa ().
JMS
@cada ¿Cuántos artículos / temas tienes? ¿Y qué método se implementa en MixFactor?
chl
1
@cada ¿por qué estás ejecutando el análisis factorial? Si pretende estimar la capacidad de los participantes, IRT puede ser un mejor enfoque. en cuanto a fa versus factanal, fa usa un mínimo residual por defecto, mientras que factanal usa un método ML.
richiemorrisroe
@chl: ¡muy pocos! Acabo de comenzar la encuesta y ahora solo hay 45 sujetos. No puedo recoger nuevos datos en teh momento y es por eso que trato de hacer la mayor cantidad de código r posible ...
Cada
1
@cada Un CFA con 45 sujetos sería surrealista :-) Intentaré agregar mis pensamientos más tarde.
chl

Respuestas:

12

En resumen, con n = 45 sujetos te quedan enfoques descriptivos multivariados y basados ​​en correlaciones. Sin embargo, dado que se supone que este cuestionario es unidimensional, este siempre es un buen comienzo.

Que haría yo:

  • Calcule las correlaciones por pares para sus 22 artículos; informe el rango y la mediana; esto dará una indicación de la consistencia relativa de las respuestas de los ítems observados (las correlaciones superiores a 0.3 generalmente se consideran indicativas de una buena validez convergente, pero, por supuesto, la precisión de esta estimación depende del tamaño de la muestra) ; Una forma alternativa de estudiar la consistencia interna del cuestionario sería calcular el alfa de Cronbach , aunque con n = 45 el intervalo de confianza asociado (use bootstrap para eso) será relativamente grande.
  • Calcule la correlación punto-biserial entre los ítems y el puntaje de escala sumado; le dará una idea del poder discriminativo de cada elemento (como las cargas en FA), donde los valores superiores a 0.3 son indicativos de una relación satisfactoria entre cada elemento y su escala correspondiente.
  • Use un PCA para resumir la matriz de correlación (produce una interpretación equivalente a la que se obtendría de un análisis de correspondencia múltiple en caso de ítems dicotómicamente calificados). Si su instrumento se comporta como una escala unidimensional para su muestra, debe observar un eje dominante de variación (como se refleja en el primer valor propio).

2(1r2)/(n)

chl
fuente
¡Muchas gracias! ¡Su respuesta es tan detallada y realmente muy útil! ¡Gracias!
cada
3

Este hilo tiene una buena posición en Google para el error "System ist für den Rechner singulär: reziproke Konditionszahl" usando factanal (en inglés: "el sistema es computacionalmente singular: número de condición recíproca") - por lo tanto, agregaré un comentario:

Cuando la matriz de correlación se calcula a priori (p. Ej., Para eliminar de forma inteligente los valores faltantes), asegúrese de que factanal () no piense que la matriz son los datos para analizar (https://stat.ethz.ch/pipermail/r- ayuda / 2007-octubre / 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
fuente