10 votos

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

Tengo que realizar un análisis factorial sobre un conjunto de datos formado por variables dicotómicas (0=sí, 1=no) y no sé si voy por buen camino.

Utilizando tetrachoric() Creo una matriz de correlaciones, sobre la que ejecuto fa(data,factors=1) . El resultado es bastante cercano a los resultados que recibo cuando se utiliza MixFactor pero no es lo mismo.

  1. ¿Está bien así o me recomendaría otro procedimiento?
  2. ¿Por qué fa() trabajo y factanal() producir un error? ( Fehler in solve.default(cv) : System ist für den Rechner singulär: reziproke Konditionszahl = 4.22612e-18 )

1 votos

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 no ser matrices de correlación adecuadas. Mi corazonada es que fa() esta usando componentes principales y factanal() esta haciendo maxima verosimilitud FA, pero eso no es obvio para mi desde la documentacion para fa().

0 votos

@cada ¿Cuántos artículos/sujetos tienes? ¿Y qué método está implementado en MixFactor?

1 votos

@cada ¿por qué realiza el análisis factorial? Si tu objetivo es estimar la capacidad de los participantes, la TRI puede ser un mejor enfoque. en cuanto a fa frente a factanal, fa utiliza el residuo mínimo por defecto, mientras que factanal utiliza un método ML.

12voto

DavLink Puntos 101

En resumen, con n=45 sujetos sólo quedan los enfoques basados en la correlación y los enfoques descriptivos multivariantes. Sin embargo, como se supone que este cuestionario es unidimensional, siempre es un buen comienzo.

Lo que yo haría:

  • Calcule las correlaciones por pares de los 22 ítems; indique el rango y la mediana, lo que dará una indicación de la coherencia relativa de las respuestas observadas (las correlaciones superiores a 0,3 se consideran generalmente 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 coherencia interna del cuestionario sería calcular Alfa de Cronbach aunque con n=45 el intervalo de confianza asociado (utilice bootstrap para ello) será relativamente grande.
  • Compute correlación punto-biserial entre los ítems y la puntuación sumada de la escala; le dará una idea del poder discriminativo de cada ítem (como las cargas en AF), donde valores superiores a 0,3 son indicativos de una relación satisfactoria entre cada ítem y su escala correspondiente.
  • Utilizar un ACP para resumir la matriz de correlaciones (produce una interpretación equivalente a la que se obtendría de un análisis de correspondencias múltiples en caso de ítems con puntuación dicotómica). Si su instrumento se comporta como una escala unidimensional para su muestra, debería observar un eje dominante de variación (como refleja el primer valor propio).

Si desea utilizar R, encontrará funciones útiles en la sección ltm y psiquiatría busque en CRAN Psicometría Vista de tareas para más paquetes. En caso de que tengas 100 sujetos, puedes intentar algún análisis CFA o SEM con intervalo de confianza bootstrap. (Tenga en cuenta que las cargas deben ser muy grandes para considerar que existe una correlación significativa entre cualquier elemento y su factor, ya que debe ser al menos dos veces el error estándar de un coeficiente de correlación fiable, $2(1-r^2)/\sqrt{n}$ .)

0 votos

¡Muchas gracias! Su respuesta es muy detallada y realmente útil. ¡Thank you!

3voto

BurninLeo Puntos 231

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: "system is computationally singular: reciprocal condition number") - por lo tanto añadiré un comentario:

Cuando la matriz de correlaciones se calcula a priori (por ejemplo, para eliminar por pares los valores que faltan), asegúrese de que factanal() no piensa que la matriz son los datos que hay que analizar (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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X