13. Análisis factorial exploratorio

Análisis factorial exploratorio en SPPS

La opción para realizar un análisis factorial en SPSS se encuentra bajo el menú de análisis: Analyze > Dimension Reduction > Factor… En la ventana que aparece se especifican las variables que se incluirá en el análisis, así como opciones para estadísticas descriptivas, métodos de extracción, métodos de rotación, y para almacenar las puntuaciones factoriales, entre otros (véase las figuras 1 a 5):

Figura 1. Selección de variables.
Figura 2. Estadísticas descriptivas.
Figura 3. Métodos de extracción de factores.
Figura 4. Métodos de rotación.
Figura 5. Puntuaciones factoriales.

Un resultado típico incluye la tabla de comunalidades, la tabla de varianza explicada, la gráfica de sedimentación (‘scree plot’) y la matriz de pesos factoriales. Si se especifica un método de rotación de los factores, SPSS también presentará la matriz de pesos factoriales rotados.

Análisis factorial exploratorio en R

El paquete ‘psych’ contiene 185 funciones para realizar análisis sicométricos y relacionados, incluyendo análisis factorial exploratorio, análisis factorial confirmatorio y modelos de ecuaciones estructurales. En el artículo anterior vimos algunas de las que se utilizan para llevar a cabo el análisis de confiabilidad. La documentación de este paquete es extensa y se puede encontrar aquí. En este artículo voy a discutir algunas útiles para llevar a cabo el análisis factorial exploratorio. En particular, haremos uso de las funciones fa(), fa.parallel(), factor.plot() y fa.diagram().

La función para llevar a cabo el análisis factorial es fa(). Hay cerca de 30 opciones que se pueden incluir en esta función. Como mínimo, se deben incluir dos argumentos: el nombre del dataframe y la especifiación ‘nfactors=’ para especificar el número de factores a extraer. El dataframe puede ser un archivo con datos crudos, o matrices de correlaciones o de covarianzas. El argumento ‘rotate=’ tiene 15 opciones de métodos para rotar los ejes incluyendo “varimax”, “quartimax” y “geominT” para llevar a cabo rotaciones ortogonales, y “promax”, “oblimin”, y “geominQ” para rotaciones oblicuas. Otra opción importante es ‘fm=’ que permite especificar el método de factorización, incluyendo ‘minres’ para regresión, ‘ols’, para el método de cuadrados mínimos ordinario, ‘wls’, para cuadrados mínimos pesados, y ‘ml’ para verosimilitud máxima. La opción ‘minres’ es la que se utiliza por omisión.

Quizás la mejor manera de iniciar el análisis factorial exploratorio es determinar el número de factores a extrar. Para ello ‘psych’ incluye las funciones fa.parallel() y scree(). La primera de ellas hace uso del método de simulaciones de Monte Carlo para visualizar el número de factores no espúreos. Esta función requiere, como mínimo que se especifique el nombre de la base de datos, el método de extracción, ‘fm=’, y el tipo de autovalores a representar, ‘fa=’. Para el método de extracción puede utilizar las opciones ‘minres’, ‘ml’, etc. discutidas arriba. Para el tipo de autovalores las opciones son tres: ‘pc’ para factorización de ejes principales, ‘pc’ para componentes principales, o ‘both’, para ambas. En el caso de el análisis factorial se debe utilizar la primera de estas opciones únicamente.

La función factor.plot() prepara la gráfica de pesos factoriales. Esta función tiene como argumento el resultado del análisis factorial. Finalmente, la función fa.diagram() presenta una gráfica del modelo factorial analizado, incluyendo en ella los pesos factoriales y correlaciones.

Para el siguiente ejemplo, haremos uso de la base de datos Thurstone disponible en el paquete ‘psych’:

> library(psych)
> head(Thurstone)
Sentences Vocabulary Sent.Completion First.Letters
Sentences 1.000 0.828 0.776 0.439
Vocabulary 0.828 1.000 0.779 0.493
Sent.Completion 0.776 0.779 1.000 0.460
First.Letters 0.439 0.493 0.460 1.000
Four.Letter.Words 0.432 0.464 0.425 0.674
Suffixes 0.447 0.489 0.443 0.590
Four.Letter.Words Suffixes Letter.Series Pedigrees

Comenzaremos el análisis determinando el número de factores:

> fa.parallel(Thurstone,fa='fa',fm='pa')

El resultado es la siguiente gráfica:

El número de factores no espúreos está dato por el número de autovalores que quedan por encima de la línea entre cortada, 3. Así que ahora llevaremos a cabo en análisis factorial con tres factores:

> Rating3 <- fa(Thurstone,nfactors=3)
> Rating3

El resultado de este análisis es:

Factor Analysis using method =  minres
Call: fa(r = Thurstone, nfactors = 3)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
Sentences 0.90 -0.03 0.04 0.82 0.18 1.0
Vocabulary 0.89 0.06 -0.03 0.84 0.16 1.0
Sent.Completion 0.84 0.03 0.00 0.74 0.26 1.0
First.Letters 0.00 0.85 0.00 0.73 0.27 1.0
Four.Letter.Words -0.02 0.75 0.10 0.63 0.37 1.0
Suffixes 0.18 0.63 -0.08 0.50 0.50 1.2
Letter.Series 0.03 -0.01 0.84 0.73 0.27 1.0
Pedigrees 0.38 -0.05 0.46 0.51 0.49 2.0
Letter.Group -0.06 0.21 0.63 0.52 0.48 1.2

MR1 MR2 MR3
SS loadings 2.65 1.87 1.49
Proportion Var 0.29 0.21 0.17
Cumulative Var 0.29 0.50 0.67
Proportion Explained 0.44 0.31 0.25
Cumulative Proportion 0.44 0.75 1.00

With factor correlations of
MR1 MR2 MR3
MR1 1.00 0.59 0.53
MR2 0.59 1.00 0.52
MR3 0.53 0.52 1.00

Mean item complexity = 1.2
Test of the hypothesis that 3 factors are sufficient.

df null model = 36 with the objective function = 5.2
df of the model are 12 and the objective function was 0.01

The root mean square of the residuals (RMSR) is 0.01
The df corrected root mean square of the residuals is 0.01

Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of (regression) scores with factors 0.96 0.92 0.90
Multiple R square of scores with factors 0.93 0.85 0.82
Minimum correlation of possible factor scores 0.86 0.71 0.63

Este resultado incluye, entre otras cosas, la tabla de pesos factoriales con sus comunalidades, la varianza explicada y la correlación entre los factores.

La función fa.diagram() produce una representación gráfica del modelo factorial:

> fa.diagram(Rating3)

Por último, la función factor.plot() produce la gráfica de los pesos factoriales:

> factor.plot(Rating3)

Si desea aprender más acerca del paquete ‘psych’ visite la página del Personality Project. Ahí encontrará la documentación y tutoriales.

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *