Soy un estudiante graduado en ciencias de la computación. He estado haciendo un análisis factorial exploratorio para un proyecto de investigación. Mis colegas (que lideran el proyecto) usan SPSS, mientras que yo prefiero usar R. Esto no importó hasta que descubrimos una gran discrepancia entre los dos paquetes estadísticos.
Estamos utilizando la factorización del eje principal como método de extracción (tenga en cuenta que soy muy consciente de la diferencia entre PCA y análisis factorial, y que no estamos utilizando PCA , al menos no intencionalmente). Por lo que he leído, esto debe corresponder al método de "eje principal" en R, y, o bien "principal eje de factoring" o "mínimos cuadrados no ponderados" en SPSS, según la documentación R . Estamos utilizando un método de rotación oblicua (específicamente, promax ) porque esperamos factores correlacionados y estamos interpretando la matriz de patrones .
Al ejecutar los dos procedimientos en R y SPSS, existen grandes diferencias. La matriz de patrones da diferentes cargas. Aunque esto da más o menos el mismo factor a las relaciones variables, existe una diferencia de hasta 0.15 entre las cargas correspondientes, lo que parece más de lo que se esperaría con una implementación diferente del método de extracción y las rotaciones de Promax. Sin embargo, esa no es la diferencia más sorprendente.
La varianza acumulativa explicada por los factores es de alrededor del 40% en los resultados de SPSS y del 31% en los resultados de R. Esta es una gran diferencia, y ha llevado a mis colegas a querer usar SPSS en lugar de R. No tengo ningún problema con esto, pero una diferencia tan grande me hace pensar que podríamos estar interpretando algo incorrectamente, lo cual es un problema.
Al ensuciar aún más las aguas, SPSS informa diferentes tipos de varianza explicada cuando ejecutamos factorización de mínimos cuadrados no ponderados. La proporción de la varianza explicada por los valores propios iniciales es del 40%, mientras que la proporción de la varianza explicada de las sumas de extracción de cargas cuadradas (SSL) es del 33%. Esto me lleva a pensar que los valores propios iniciales no son el número apropiado para mirar (sospecho que esta es la variación explicada antes de la rotación, aunque es tan grande que está más allá de mí). Aún más confuso, SPSS también muestra Rotation SSL, pero no calcula el porcentaje de varianza explicada (SPSS me dice que tener factores correlacionados significa que no puedo agregar SSL para encontrar la varianza total, lo que tiene sentido con las matemáticas que he visto). Los SSL informados de R no coinciden con ninguno de estos, y R me dice que describe el 31% de la varianza total. Los SSL de R coinciden más con los SSL de rotación. Los valores propios de R de la matriz de correlación original coinciden con los valores propios iniciales de SPSS.
Además, tenga en cuenta que he jugado con el uso de diferentes métodos, y que ULS y PAF de SPSS parecen coincidir con el método de PA de R más cercano.
Mis preguntas especificas:
- ¿Qué diferencia debería esperar entre R y SPSS con implementaciones de análisis factorial?
- ¿Cuál de las sumas de cargas cuadradas de SPSS debería interpretar, valores propios iniciales, extracción o rotación?
- ¿Hay otros problemas que podría haber pasado por alto?
Mis llamadas a SPSS y R son las siguientes:
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)
fuente
Respuestas:
En primer lugar, hago una segunda recomendación para mirar la solución antes de la rotación. El análisis factorial tal como se implementa en SPSS es un procedimiento complejo con varios pasos, comparar el resultado de cada uno de estos pasos debería ayudarlo a identificar el problema.
Específicamente puedes correr
para ver la matriz de correlación que SPSS está utilizando para llevar a cabo el análisis factorial. Luego, en R, prepare la matriz de correlación usted mismo ejecutando
Cualquier discrepancia en la forma en que se manejan los valores faltantes debe ser evidente en esta etapa. Una vez que haya verificado que la matriz de correlación es la misma, puede alimentarla a la función fa y ejecutar su análisis nuevamente:
Si aún obtiene resultados diferentes en SPSS y R, el problema no es la falta de valores relacionados.
A continuación, puede comparar los resultados del propio análisis factorial / método de extracción.
y
Nuevamente, compare las matrices de factores / comunalidades / suma de cargas cuadradas. Aquí puede esperar algunas pequeñas diferencias, pero ciertamente no de la magnitud que describe. Todo esto te daría una idea más clara de lo que está sucediendo.
Ahora, para responder sus tres preguntas directamente:
fuente
fa
función en R es delpsych
paquete. Lafactanal
función del paquete base debería funcionar de manera similar, peropsych
vale la pena usarla para otros fines de todos modos. De hecho, como se trata de datos de Likert, sería aconsejable utilizar lospsych
paquetes en sufa.poly
lugar: consulte la documentación de ayuda .Recientemente, descubrí que la mayoría de las discrepancias en el análisis de factores entre SPSS y R (con el paquete Psych) se aclaran cuando los datos se tratan como faltantes en cada programa, la matriz de correlación se muestra exactamente igual en cada uno y no se utiliza rotación oblicua.
Una discrepancia restante se encuentra en la serie de valores que aparecen en el gráfico de pantalla que indica valores propios después de la extracción. En "scree (cor (mydata))" de R, estos "factores" no coinciden con los enumerados en la tabla Explicación de varianza de SPSS en "Sumas de extracción de cargas cuadradas". Tenga en cuenta que los "componentes" del diagrama de pantalla R coinciden con el diagrama de pantalla de SPSS, que también coincide con los "Valores propios iniciales" de la tabla Explicación de varianza.
También he encontrado que la "Proporción Var" explicada por cada factor es, en R, a veces informada como (la proporción para un factor dado) / (la cantidad explicada por todos los factores), mientras que en otras ocasiones es (la proporción para un factor dado) (el número de elementos en el análisis). Entonces, si obtiene el primero, es, aunque no es una coincidencia, al menos proporcional y derivable de lo que SPSS informa en "Sumas de extracción de cargas cuadradas ...% de variación".
Sin embargo, la introducción de la rotación oblimin en cada programa crea discrepancias considerables en la carga de elementos o la variación de los factores explica que no he podido resolver.
fuente
El método de rotación predeterminado en R es oblimin, por lo que esto probablemente causará la diferencia. Como prueba, ejecute un PAF / oblimin en SPSS y R y encontrará resultados casi idénticos.
fuente
No sé qué causa las diferencias en las cargas de patrones, pero supongo que la diferencia en% de la varianza explicada se debe a: Resultados del análisis de componentes principales. La segunda parte muestra los resultados de los resultados del análisis de factores no rotados y los terceros resultados después de la rotación (si se usa). - el hecho de que la función fa (o más precisamente su método de impresión) calcula incorrectamente SSL para factores oblicuos. Para obtener el% de varianza total explicado por factor, debe calcular la suma de las cargas estructurales al cuadrado por factor y dividirlo por el número de variables. Sin embargo, no puede sumar estos (en caso de rotaciones oblicuas) para obtener el% de varianza explicado por todos los factores. Para conseguir esto,
fuente
Esta respuesta es aditiva a las anteriores. Como sugiere Gala en su respuesta, primero se debe determinar si las soluciones proporcionadas por R (por ejemplo, fa en psicología) y SPSS son diferentes antes de la rotación. Si son lo mismo, mire la configuración de rotación en cada programa. (Para SPSS, puede encontrar todas las configuraciones en la entrada manual de referencia para FACTOR).
Una configuración importante a tener en cuenta es la normalización de Kaiser . Por defecto, SPSS realiza la normalización de Kaiser durante la rotación, mientras que algunas funciones R como 'fa' no lo hacen. Puede controlar esa configuración en SPSS especificando / CRITERIOS = NOKAISER / KAISER, para verificar si elimina cualquier discrepancia entre los resultados con cada programa.
fuente