Cargamos los datos iniciales y explorando las variables:
df=read_spss("PROFESIONALES.sav")
describe(df) %>% knitr::kable()
vars | n | mean | sd | median | trimmed | mad | min | max | range | skew | kurtosis | se | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
IDENTIFICADOR | 1 | 190 | 95.49 | 55.00 | 95.5 | 95.49 | 70.42 | 1 | 190 | 189 | 0.00 | -1.22 | 3.99 |
CENTRO | 2 | 190 | 11.64 | 7.16 | 12.0 | 11.31 | 8.90 | 1 | 25 | 24 | 0.25 | -1.16 | 0.52 |
GENERO | 3 | 187 | 0.87 | 0.34 | 1.0 | 0.95 | 0.00 | 0 | 1 | 1 | -2.14 | 2.57 | 0.02 |
EDAD | 4 | 185 | 35.25 | 9.06 | 33.0 | 34.42 | 8.90 | 5 | 62 | 57 | 0.62 | 0.46 | 0.67 |
PROFESION | 5 | 185 | 2.54 | 1.76 | 2.0 | 2.28 | 1.48 | 0 | 8 | 8 | 1.19 | 1.09 | 0.13 |
EXPERIENCIA | 6 | 182 | 96.20 | 89.06 | 72.0 | 82.70 | 71.16 | 0 | 444 | 444 | 1.34 | 1.64 | 6.60 |
ANTIGÜEDAD | 7 | 182 | 75.90 | 87.04 | 36.0 | 59.36 | 35.58 | 0 | 444 | 444 | 1.75 | 2.98 | 6.45 |
ESTUDIOS | 8 | 184 | 3.04 | 1.25 | 4.0 | 3.16 | 0.00 | 0 | 5 | 5 | -0.69 | -1.12 | 0.09 |
HORAS | 9 | 181 | 33.07 | 8.88 | 37.5 | 34.60 | 1.48 | 4 | 45 | 41 | -1.48 | 1.28 | 0.66 |
ICCAITP01 | 10 | 189 | 4.29 | 0.95 | 5.0 | 4.45 | 0.00 | 1 | 5 | 4 | -1.45 | 1.86 | 0.07 |
ICCAITP02 | 11 | 189 | 3.85 | 1.20 | 4.0 | 4.01 | 1.48 | 1 | 5 | 4 | -0.91 | -0.08 | 0.09 |
ICCAITP03 | 12 | 187 | 4.19 | 0.95 | 4.0 | 4.32 | 1.48 | 1 | 5 | 4 | -0.94 | -0.03 | 0.07 |
ICCAITP04 | 13 | 188 | 4.13 | 0.89 | 4.0 | 4.23 | 1.48 | 2 | 5 | 3 | -0.75 | -0.26 | 0.06 |
ICCAITP05 | 14 | 187 | 4.19 | 0.94 | 4.0 | 4.32 | 1.48 | 1 | 5 | 4 | -1.19 | 1.26 | 0.07 |
ICCAITP06 | 15 | 190 | 3.87 | 1.12 | 4.0 | 4.01 | 1.48 | 1 | 5 | 4 | -0.74 | -0.36 | 0.08 |
ICCAITP07 | 16 | 190 | 4.21 | 1.01 | 4.0 | 4.39 | 1.48 | 1 | 5 | 4 | -1.35 | 1.35 | 0.07 |
ICCAITP08 | 17 | 186 | 4.03 | 0.83 | 4.0 | 4.09 | 1.48 | 2 | 5 | 3 | -0.55 | -0.31 | 0.06 |
ICCAITP09 | 18 | 189 | 4.14 | 0.79 | 4.0 | 4.20 | 1.48 | 2 | 5 | 3 | -0.50 | -0.57 | 0.06 |
ICCAITP10 | 19 | 189 | 3.73 | 0.94 | 4.0 | 3.80 | 1.48 | 1 | 5 | 4 | -0.52 | 0.08 | 0.07 |
ICCAITP11 | 20 | 189 | 4.58 | 0.64 | 5.0 | 4.69 | 0.00 | 2 | 5 | 3 | -1.35 | 1.11 | 0.05 |
ICCAITP12 | 21 | 190 | 4.64 | 0.51 | 5.0 | 4.69 | 0.00 | 3 | 5 | 2 | -0.91 | -0.43 | 0.04 |
ICCAITP13 | 22 | 187 | 4.33 | 0.95 | 5.0 | 4.49 | 0.00 | 1 | 5 | 4 | -1.39 | 1.35 | 0.07 |
ICCAITP14 | 23 | 189 | 4.31 | 0.70 | 4.0 | 4.39 | 1.48 | 2 | 5 | 3 | -0.59 | -0.46 | 0.05 |
ICCAITP15 | 24 | 189 | 4.65 | 0.56 | 5.0 | 4.73 | 0.00 | 2 | 5 | 3 | -1.51 | 2.27 | 0.04 |
ICCAITP16 | 25 | 190 | 4.84 | 0.42 | 5.0 | 4.95 | 0.00 | 3 | 5 | 2 | -2.60 | 6.29 | 0.03 |
ICCAITP17 | 26 | 190 | 4.91 | 0.33 | 5.0 | 5.00 | 0.00 | 3 | 5 | 2 | -3.60 | 13.33 | 0.02 |
ICCAITP18 | 27 | 190 | 4.28 | 0.68 | 4.0 | 4.35 | 1.48 | 3 | 5 | 2 | -0.40 | -0.84 | 0.05 |
ICCAITP19 | 28 | 190 | 4.49 | 0.75 | 5.0 | 4.64 | 0.00 | 1 | 5 | 4 | -1.58 | 2.67 | 0.05 |
ICCAITP20 | 29 | 190 | 4.45 | 0.75 | 5.0 | 4.59 | 0.00 | 2 | 5 | 3 | -1.25 | 0.89 | 0.05 |
ICCAITP21 | 30 | 190 | 4.46 | 0.58 | 4.5 | 4.50 | 0.74 | 3 | 5 | 2 | -0.49 | -0.73 | 0.04 |
ICCAITP22 | 31 | 188 | 4.18 | 0.85 | 4.0 | 4.26 | 1.48 | 1 | 5 | 4 | -0.81 | 0.19 | 0.06 |
ICCAITP23 | 32 | 190 | 4.65 | 0.52 | 5.0 | 4.71 | 0.00 | 3 | 5 | 2 | -1.05 | -0.02 | 0.04 |
ICCAITP24 | 33 | 190 | 4.65 | 0.58 | 5.0 | 4.75 | 0.00 | 2 | 5 | 3 | -1.59 | 2.32 | 0.04 |
ICCAITP25 | 34 | 188 | 4.64 | 0.64 | 5.0 | 4.77 | 0.00 | 2 | 5 | 3 | -1.65 | 1.94 | 0.05 |
ICCAITP26 | 35 | 188 | 4.69 | 0.53 | 5.0 | 4.78 | 0.00 | 3 | 5 | 2 | -1.46 | 1.17 | 0.04 |
ICCAITP27 | 36 | 186 | 4.15 | 0.95 | 4.0 | 4.27 | 1.48 | 1 | 5 | 4 | -1.05 | 0.83 | 0.07 |
ICCAITP28 | 37 | 187 | 3.96 | 0.97 | 4.0 | 4.07 | 1.48 | 1 | 5 | 4 | -0.77 | 0.13 | 0.07 |
ICCAITP29 | 38 | 179 | 2.81 | 1.28 | 3.0 | 2.77 | 1.48 | 1 | 5 | 4 | 0.04 | -1.14 | 0.10 |
ICCAITP30 | 39 | 187 | 4.00 | 1.01 | 4.0 | 4.14 | 1.48 | 1 | 5 | 4 | -0.92 | 0.31 | 0.07 |
ICCAITP31 | 40 | 188 | 4.43 | 0.64 | 4.5 | 4.50 | 0.74 | 2 | 5 | 3 | -0.77 | 0.13 | 0.05 |
ICCAITP32 | 41 | 188 | 4.65 | 0.59 | 5.0 | 4.75 | 0.00 | 2 | 5 | 3 | -1.79 | 3.59 | 0.04 |
ICCAITP33 | 42 | 187 | 4.29 | 0.79 | 4.0 | 4.39 | 1.48 | 2 | 5 | 3 | -0.83 | -0.10 | 0.06 |
Solo nos interesan algunas:
varTrabajo=df %>% select (starts_with("ICCAITP")) %>% names()
dfTrabajo=df %>% select(varTrabajo) %>% filter(complete.cases(.))
Las interesantes son: ICCAITP01, ICCAITP02, ICCAITP03, ICCAITP04, ICCAITP05, ICCAITP06, ICCAITP07, ICCAITP08, ICCAITP09, ICCAITP10, ICCAITP11, ICCAITP12, ICCAITP13, ICCAITP14, ICCAITP15, ICCAITP16, ICCAITP17, ICCAITP18, ICCAITP19, ICCAITP20, ICCAITP21, ICCAITP22, ICCAITP23, ICCAITP24, ICCAITP25, ICCAITP26, ICCAITP27, ICCAITP28, ICCAITP29, ICCAITP30, ICCAITP31, ICCAITP32, ICCAITP33, pero vimos que no funcionban bien algunas de ellas
varTrabajo = varTrabajo %>% setdiff(c("ICCAITP13", "ICCAITP18", "ICCAITP27", "ICCAITP29", "ICCAITP24"))
dfTrabajo=df %>% select(varTrabajo) %>% filter(complete.cases(.))
La 24, por que casi todo el mundo dice lo mismo. Las otras por otras razones.
Veamos algo de descriptiva:
dfLong=dfTrabajo %>% gather(Item,Puntos)
table(dfLong$Puntos)
##
## 1 2 3 4 5
## 45 141 530 1588 2624
dfLong=dfLong %>% filter(Puntos<=6)
ggplot(dfLong,aes(x=Puntos)) +
geom_bar()+
theme_classic()+
facet_wrap(~Item)
Alguno de los items, como el 21 y el 22 no parecen tener mucha capacidad de discriminar
corr <- cor( dfTrabajo)
indicesKMO=KMO(corr)
dfKMO=data.frame(Variable=c("Global",names(indicesKMO$MSAi)),KMO=c(indicesKMO$MSA,indicesKMO$MSAi)) %>% as_tibble() %>%
mutate(Interpretacion=cut(KMO,breaks = c(0,.5,.6,.7,.8,.9,1),labels = c("Unacceptable","Miserable","Mediocre","Middling","Meritorious","Marvelous")))
dfKMO %>% knitr::kable()
Variable | KMO | Interpretacion |
---|---|---|
Global | 0.86 | Meritorious |
ICCAITP01 | 0.70 | Mediocre |
ICCAITP02 | 0.67 | Mediocre |
ICCAITP03 | 0.88 | Meritorious |
ICCAITP04 | 0.87 | Meritorious |
ICCAITP05 | 0.83 | Meritorious |
ICCAITP06 | 0.88 | Meritorious |
ICCAITP07 | 0.81 | Meritorious |
ICCAITP08 | 0.85 | Meritorious |
ICCAITP09 | 0.95 | Marvelous |
ICCAITP10 | 0.83 | Meritorious |
ICCAITP11 | 0.93 | Marvelous |
ICCAITP12 | 0.86 | Meritorious |
ICCAITP14 | 0.89 | Meritorious |
ICCAITP15 | 0.85 | Meritorious |
ICCAITP16 | 0.86 | Meritorious |
ICCAITP17 | 0.84 | Meritorious |
ICCAITP19 | 0.76 | Middling |
ICCAITP20 | 0.84 | Meritorious |
ICCAITP21 | 0.90 | Marvelous |
ICCAITP22 | 0.85 | Meritorious |
ICCAITP23 | 0.84 | Meritorious |
ICCAITP25 | 0.79 | Middling |
ICCAITP26 | 0.83 | Meritorious |
ICCAITP28 | 0.90 | Meritorious |
ICCAITP30 | 0.88 | Meritorious |
ICCAITP31 | 0.91 | Marvelous |
ICCAITP32 | 0.87 | Meritorious |
ICCAITP33 | 0.89 | Meritorious |
Las etiquetas que se han usado viene de aquí:
In his delightfully flamboyant style, Kaiser (1975) suggested that KMO > .9 were marvelous, in the .80s, mertitourious, in the .70s, middling, in the .60s, medicore, in the 50s, miserable, and less than .5, unacceptable.
Las correlaciones existentes entre los items de esta parte del cuestionario está reflejada en la siguiente matriz de correlaciones:
dfTrabajo=df %>% select(varTrabajo) %>% filter(complete.cases(.))
corr <- round( cor( dfTrabajo), 1)
ggcorrplot(corr, hc.order = FALSE, type = "lower", lab = TRUE,lab_size = 3)
Para explorar la estructura factorial visualmente, tal vez preferimos ver las variables ordenando por los coeficientes de correlación:8 184 3.04 1.25 4.0 3.16 0.00 0 5 5 -0.69 -1.12 0.09
ggcorrplot(corr, hc.order = TRUE, type = "lower", lab = TRUE,lab_size = 3,)
Dejemos de lado las correlaciones que no sean significativas:
p.mat <- cor_pmat(dfTrabajo)
ggcorrplot(corr, p.mat = p.mat, hc.order = TRUE, type = "lower", insig = "blank")
No tengo mucha idea de la estructura de estos items. Vamos a echarle un vistazo a las posibilidades para elegir un número adecuado de factores:
There are multiple ways to determine the appropriate number of factors in exploratory factor analysis. Routines for the Very Simple Structure (VSS) criterion allow one to compare solutions of varying complexity and for different number of factors. Graphic output indicates the “optimal” number of factors for different levels of complexity. The Velicer MAP criterion is another good choice. nfactors finds and plots several of these alternative estimates.
Así que probemos con algunas posibilidades:
fa.parallel(dfTrabajo)
## Parallel analysis suggests that the number of factors = 6 and the number of components = 3
Otros criterios para la selección del número de factores.
analisisvss=vss(dfTrabajo)
print(summary(analisisvss))
##
## Very Simple Structure
## VSS complexity 1 achieves a maximimum of 0.78 with 1 factors
## VSS complexity 2 achieves a maximimum of 0.84 with 2 factors
##
## The Velicer MAP criterion achieves a minimum of 0.03 with 3 factors
## NULL
Tal vez nos podríamos quedar con entre 2,5 y 9 factores… Aquí hay que saber del tema, especialmente… ¿qué colección de factores es más interpretable. Pongo cualquier número por seguir adelante con algo.
numFactores=6
analisisfa=fa(dfTrabajo,nfactors = numFactores)
print(summary(analisisfa))
##
## Factor analysis with Call: fa(r = dfTrabajo, nfactors = numFactores)
##
## Test of the hypothesis that 6 factors are sufficient.
## The degrees of freedom for the model is 225 and the objective function was 2.4
## The number of observations was 176 with Chi Square = 390 with prob < 5.3e-11
##
## The root mean square of the residuals (RMSA) is 0.04
## The df corrected root mean square of the residuals is 0.05
##
## Tucker Lewis Index of factoring reliability = 0.86
## RMSEA index = 0.071 and the 10 % confidence intervals are 0.054 0.075
## BIC = -773
## With factor correlations of
## MR1 MR2 MR5 MR3 MR6 MR4
## MR1 1.00 0.24 0.39 0.27 0.45 0.16
## MR2 0.24 1.00 0.44 0.39 0.31 -0.02
## MR5 0.39 0.44 1.00 0.30 0.40 0.03
## MR3 0.27 0.39 0.30 1.00 0.19 0.15
## MR6 0.45 0.31 0.40 0.19 1.00 0.16
## MR4 0.16 -0.02 0.03 0.15 0.16 1.00
## MR1 MR2 MR5 MR3 MR6 MR4
## MR1 1.00 0.24 0.39 0.27 0.45 0.16
## MR2 0.24 1.00 0.44 0.39 0.31 -0.02
## MR5 0.39 0.44 1.00 0.30 0.40 0.03
## MR3 0.27 0.39 0.30 1.00 0.19 0.15
## MR6 0.45 0.31 0.40 0.19 1.00 0.16
## MR4 0.16 -0.02 0.03 0.15 0.16 1.00
Vamos a visualizar la estructura factorial que se nos sugiere con el número de factores elegidos.
fa.diagram(analisisfa)
Agrupando por parejas según parecido (correlación), y añadiendo variables una a una (mejorando alfa de Cronbach), podríamos clasificar las variables en dimensiones así:
iclust(dfTrabajo)
## ICLUST (Item Cluster Analysis)
## Call: iclust(r.mat = dfTrabajo)
##
## Purified Alpha:
## [1] 0.92
##
## G6* reliability:
## [1] 1
##
## Original Beta:
## [1] 0.43
##
## Cluster size:
## [1] 28
##
## Item by Cluster Structure matrix:
## [,1]
## ICCAITP01 0.30
## ICCAITP02 0.27
## ICCAITP03 0.55
## ICCAITP04 0.62
## ICCAITP05 0.58
## ICCAITP06 0.56
## ICCAITP07 0.54
## ICCAITP08 0.62
## ICCAITP09 0.64
## ICCAITP10 0.59
## ICCAITP11 0.64
## ICCAITP12 0.56
## ICCAITP14 0.56
## ICCAITP15 0.51
## ICCAITP16 0.48
## ICCAITP17 0.37
## ICCAITP19 0.52
## ICCAITP20 0.60
## ICCAITP21 0.61
## ICCAITP22 0.50
## ICCAITP23 0.61
## ICCAITP25 0.43
## ICCAITP26 0.51
## ICCAITP28 0.54
## ICCAITP30 0.44
## ICCAITP31 0.72
## ICCAITP32 0.61
## ICCAITP33 0.67
##
## With eigenvalues of:
## [1] 8.5
##
## Purified scale intercorrelations
## reliabilities on diagonal
## correlations corrected for attenuation above diagonal:
## [,1]
## [1,] 0.92
##
## Cluster fit = 0.78 Pattern fit = 0.92 RMSR = 0.1
omega(dfTrabajo,nfactors = numFactores)
## Omega
## Call: omega(m = dfTrabajo, nfactors = numFactores)
## Alpha: 0.92
## G.6: 0.95
## Omega Hierarchical: 0.68
## Omega H asymptotic: 0.72
## Omega Total 0.94
##
## Schmid Leiman Factor loadings greater than 0.2
## g F1* F2* F3* F4* F5* F6* h2 u2 p2
## ICCAITP01 0.22 0.45 0.34 0.66 0.15
## ICCAITP02 0.20 0.64 0.45 0.55 0.09
## ICCAITP03 0.47 0.42 0.41 0.59 0.53
## ICCAITP04 0.53 0.62 0.68 0.32 0.41
## ICCAITP05 0.47 0.55 0.62 0.38 0.36
## ICCAITP06 0.47 0.63 0.61 0.39 0.36
## ICCAITP07 0.45 0.40 0.22 0.46 0.54 0.45
## ICCAITP08 0.56 0.61 0.72 0.28 0.44
## ICCAITP09 0.56 0.24 0.33 0.52 0.48 0.61
## ICCAITP10 0.53 0.59 0.66 0.34 0.43
## ICCAITP11 0.54 0.39 0.57 0.43 0.51
## ICCAITP12 0.46 0.33 0.37 0.63 0.57
## ICCAITP14 0.45 0.42 0.42 0.58 0.49
## ICCAITP15 0.43 0.48 0.48 0.52 0.38
## ICCAITP16 0.39 0.36 0.31 0.69 0.48
## ICCAITP17 0.30 0.41 0.26 0.74 0.34
## ICCAITP19 0.42 0.59 0.55 0.45 0.32
## ICCAITP20 0.51 0.57 0.67 0.33 0.39
## ICCAITP21 0.54 0.23 0.22 -0.29 0.53 0.47 0.56
## ICCAITP22 0.43 0.23 0.34 0.37 0.63 0.50
## ICCAITP23 0.51 0.59 0.66 0.34 0.39
## ICCAITP25 0.33 0.56 0.49 0.51 0.23
## ICCAITP26 0.41 0.63 0.63 0.37 0.26
## ICCAITP28 0.46 0.25 0.28 0.39 0.61 0.56
## ICCAITP30 0.37 0.36 0.23 0.32 0.68 0.44
## ICCAITP31 0.65 0.50 0.70 0.30 0.60
## ICCAITP32 0.56 0.56 0.65 0.35 0.48
## ICCAITP33 0.61 0.55 0.72 0.28 0.52
##
## With eigenvalues of:
## g F1* F2* F3* F4* F5* F6*
## 6.2 1.8 1.6 1.3 1.4 1.1 1.1
##
## general/max 3.5 max/min = 1.6
## mean percent general = 0.42 with sd = 0.13 and cv of 0.31
## Explained Common Variance of the general factor = 0.43
##
## The degrees of freedom are 225 and the fit is 2.4
## The number of observations was 176 with Chi Square = 390 with prob < 5.3e-11
## The root mean square of the residuals is 0.04
## The df corrected root mean square of the residuals is 0.05
## RMSEA index = 0.071 and the 10 % confidence intervals are 0.054 0.075
## BIC = -773
##
## Compare this with the adequacy of just a general factor and no group factors
## The degrees of freedom for just the general factor are 350 and the fit is 7.2
## The number of observations was 176 with Chi Square = 1175 with prob < 1e-89
## The root mean square of the residuals is 0.13
## The df corrected root mean square of the residuals is 0.13
##
## RMSEA index = 0.12 and the 10 % confidence intervals are 0.11 0.12
## BIC = -635
##
## Measures of factor score adequacy
## g F1* F2* F3* F4*
## Correlation of scores with factors 0.84 0.83 0.83 0.78 0.85
## Multiple R square of scores with factors 0.70 0.70 0.68 0.60 0.72
## Minimum correlation of factor score estimates 0.40 0.39 0.36 0.21 0.43
## F5* F6*
## Correlation of scores with factors 0.80 0.81
## Multiple R square of scores with factors 0.64 0.66
## Minimum correlation of factor score estimates 0.29 0.32
##
## Total, General and Subset omega for each subset
## g F1* F2* F3* F4*
## Omega total for total scores and subscales 0.94 0.85 0.80 0.83 0.78
## Omega general for total scores and subscales 0.68 0.41 0.37 0.46 0.30
## Omega group for total scores and subscales 0.13 0.43 0.43 0.37 0.48
## F5* F6*
## Omega total for total scores and subscales 0.77 0.48
## Omega general for total scores and subscales 0.42 0.31
## Omega group for total scores and subscales 0.35 0.18