Análisis Factorial
datos <- read.csv("EAM_2019.csv", sep = ";", dec = ",", header = T)
print(head(datos))
ï..ciiu personal_mujer personal_hombre gasto_personal gasto_financiero
1 1051 36 140 9352991 3240559
2 1030 40 176 7334998 1468298
3 3290 15 172 6668544 1547666
4 3091 88 373 22088759 35203208
5 3290 18 53 5219070 2861773
6 3290 18 53 5219070 2861773
costos_gastos_produccion gastos_adm_ventas inversion_AF ventas
1 6846304 22920307 4979745 192609248
2 5941761 12310286 5615593 115741258
3 6996020 2564695 773444 44580029
4 4175751 171278876 10501572 162509864
5 11037978 13691919 6423171 87324374
6 11037978 13691919 6423171 87324374
Pruebas para el Análisis Factorial:
Matriz de correlaciones:
library("corrplot")
corrplot 0.92 loaded
corr <- cor(datos[,2:9])
corrplot(corr, method = "circle")
corrplot(corr, method = "number")
![../../_images/output_6_0.png](../../_images/output_6_0.png)
![../../_images/output_6_1.png](../../_images/output_6_1.png)
Determinante de la matriz de correlaciones:
Determinante cercano a cerco indica alta multicolinealidad. Esto significa que algunas variables son linealmente dependientes y una o más variables podrían ser expresadas como combinación lineal de otras variables y la técnica del Análisis Factorial es pertinente para analizar las variables.
det(corr)
Test de Bartlett o test de esfericidad:
Se evalúa si la matriz de correlaciones es la identidad \(I\). Significa que las intercorrelaciones entre las variables son cero y el modelo de Análisis Factorial es inadecuado.
Se acepta la hipótesis nula si \(Valor-p > 0,05\)
bartlett.test(datos[,2:9])
Bartlett test of homogeneity of variances
data: datos[, 2:9]
Bartlett's K-squared = 29209, df = 7, p-value < 2.2e-16
Se rechaza la hipótesis nula porque \(Valor-p = 2,2e-16 < 0,05\), la matriz de correlaciones no es la Identidad. La aplicación del Análisis Factorial es adecuada. Esta afirmación también está soportada por el Determinante cercano a cero.
Kaiser-Meyer-Olkin - KMO:
Con esta prueba se busca si entre las variables hay factores comunes. Si las variables comparten factores comunes, el coeficiente de correlación parcial entre pares de variables es cercano a cero. Con los coeficientes de correlación parcial se mide el grado de relación lineal entre dos variables sin el efecto de las demás. Si se tienen coeficientes de correlación parcial altos, la aplicación del Análisis Factorial no es el adecuado.
Para comprobar lo anterior se calcula una Medida de Adecuación de la Muestra de KMO, \(0<=KMO<=1\).
Con KMO cercano a cero indica que las correlaciones entre pares de variables no pueden ser explicadas por otras variables.
Donde,
\(r^2_{ij(p)}\): coeficiente de correlación parcial entre \((X_i, X_i)\).
Para esta prueba instalar el paquete: install.packages("psych")
library(psych)
KMO(datos[,2:9])
Kaiser-Meyer-Olkin factor adequacy
Call: KMO(r = datos[, 2:9])
Overall MSA = 0.67
MSA for each item =
personal_mujer personal_hombre gasto_personal
0.63 0.63 0.67
gasto_financiero costos_gastos_produccion gastos_adm_ventas
0.47 0.85 0.64
inversion_AF ventas
0.84 0.63
Como \(KMO = 0,67\) es aceptable aplicar el Análisis Factorial porque sí hay presencia de factores comunes.
Determinación de la cantidad de factores:
1. Determinación “a priori”.
2. Regla de Kaiser: Eigenvalores mayores que 1,0.
3. Criterio del porcentaje de la varianza: varianza explicada por encima del 70%.
4. Criterio de Sedimentación: técnica del codo.
Regla de Kaiser y criterio de sedimentación:
plot(eigen(corr)$values, type = "b")
![../../_images/output_23_0.png](../../_images/output_23_0.png)
Criterio del porcentaje de la varianza:
Se usará la función factanal()
de la librería stats
.
Se hará una prueba con 4 factores: factors = 4
.
factanal(datos[,2:9], factors = 4)
Call:
factanal(x = datos[, 2:9], factors = 4)
Uniquenesses:
personal_mujer personal_hombre gasto_personal
0.611 0.209 0.005
gasto_financiero costos_gastos_produccion gastos_adm_ventas
0.908 0.166 0.005
inversion_AF ventas
0.958 0.005
Loadings:
Factor1 Factor2 Factor3 Factor4
personal_mujer 0.531 0.325
personal_hombre 0.150 0.869 0.118
gasto_personal 0.326 0.880 0.278 0.192
gasto_financiero 0.272
costos_gastos_produccion 0.593 0.218 0.593 0.289
gastos_adm_ventas 0.971 0.104 0.141 0.143
inversion_AF 0.153
ventas 0.939 0.173 0.289
Factor1 Factor2 Factor3 Factor4
SS loadings 2.319 1.907 0.580 0.328
Proportion Var 0.290 0.238 0.072 0.041
Cumulative Var 0.290 0.528 0.601 0.642
Test of the hypothesis that 4 factors are sufficient.
The chi square statistic is 7.29 on 2 degrees of freedom.
The p-value is 0.0262
Extracción de factores:
Método de Eje principal o Factor Principal.
Máxima Verosimilitud.
En esta sesión se extraerán los factores por Máxima Verosimilitud. La
función factanal()
solo extraer los factores por este método. Para
aplicar los otros métodos se recomienda usar la función fa()
de la
librería psych
, con el argumento fm = "pa"
para el método de Eje
principal o Factor Principal.
Por ejemplo:
fa(datos[,2:9], nfactors = 4, rotate = "none", fm = "pa")
Rotación de los factores:
La función factanal()
por defecto rota los factores por Varimax,
pero se puede cambiar el método de rotación con el argumento:
rotation =
: "varimax"
, "quartimax"
, "equamax"
. Estos
métodos son rotaciones ortogonales.
Para algunos métodos de rotación instalar la librería
install.packages("GPArotation")
library(GPArotation)
fit <- factanal(datos[,2:9], factors = 3, rotation = "varimax")
fit
Call:
factanal(x = datos[, 2:9], factors = 3, rotation = "varimax")
Uniquenesses:
personal_mujer personal_hombre gasto_personal
0.660 0.162 0.005
gasto_financiero costos_gastos_produccion gastos_adm_ventas
0.902 0.296 0.048
inversion_AF ventas
0.971 0.005
Loadings:
Factor1 Factor2 Factor3
personal_mujer 0.527 0.247
personal_hombre 0.203 0.892
gasto_personal 0.408 0.869 0.271
gasto_financiero 0.299
costos_gastos_produccion 0.722 0.249 0.349
gastos_adm_ventas 0.971
inversion_AF 0.131
ventas 0.986 0.141
Factor1 Factor2 Factor3
SS loadings 2.666 1.923 0.362
Proportion Var 0.333 0.240 0.045
Cumulative Var 0.333 0.574 0.619
Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 50.96 on 7 degrees of freedom.
The p-value is 9.38e-09
Uniquenesses
- \(\Psi\): Unicidad: proporción de la varianza no
explicada.
print(fit$uniquenesses)
personal_mujer personal_hombre gasto_personal
0.66023136 0.16158472 0.00500000
gasto_financiero costos_gastos_produccion gastos_adm_ventas
0.90243324 0.29566162 0.04824951
inversion_AF ventas
0.97090998 0.00500000
Comunalidad - \(\Lambda\): \(1-\Psi\). Proporción de la varianza que sí se puede explicar por cada variable. También son suma de las cargas al cuadrado por cada variable.
print(apply(fit$loadings^2, 1, sum))
personal_mujer personal_hombre gasto_personal
0.33971591 0.83841043 0.99500077
gasto_financiero costos_gastos_produccion gastos_adm_ventas
0.09756084 0.70433543 0.95175045
inversion_AF ventas
0.02914470 0.99505497
``SS loadings:`` suma de las cargas al cuadrado por cada factor. La regla de Kaiser dice que cada factor debe tener un valor mayor a 1.
Valor p: \(H_0\) es que los factores seleccionados son los adecuados. Se acepta si valor p > 0,05. Se rechaza si valor p es pequeño (< 0,05).
Cálculo de las puntuaciones o cargas factoriales:
Método de Regresión.
Método de Barlett.
Se agrega el argumento:
scores =
: "regression"
o "Bartlett"
. Por defecto hace el
cálculo con scores = "regression"
fit <- factanal(datos[,2:9], factors = 3, rotation = "varimax", scores = "regression")
fit
Call:
factanal(x = datos[, 2:9], factors = 3, scores = "regression", rotation = "varimax")
Uniquenesses:
personal_mujer personal_hombre gasto_personal
0.660 0.162 0.005
gasto_financiero costos_gastos_produccion gastos_adm_ventas
0.902 0.296 0.048
inversion_AF ventas
0.971 0.005
Loadings:
Factor1 Factor2 Factor3
personal_mujer 0.527 0.247
personal_hombre 0.203 0.892
gasto_personal 0.408 0.869 0.271
gasto_financiero 0.299
costos_gastos_produccion 0.722 0.249 0.349
gastos_adm_ventas 0.971
inversion_AF 0.131
ventas 0.986 0.141
Factor1 Factor2 Factor3
SS loadings 2.666 1.923 0.362
Proportion Var 0.333 0.240 0.045
Cumulative Var 0.333 0.574 0.619
Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 50.96 on 7 degrees of freedom.
The p-value is 9.38e-09
Realizar el Análisis Factorial con más factores y otros métodos de rotación.