install.packages("lavaan")
install.packages("readxl")
library(lavaan)
## Warning: package 'lavaan' was built under R version 4.5.2
## This is lavaan 0.7-2
## lavaan is FREE software! Please report any bugs.
library(readxl)
datos_hs <- HolzingerSwineford1939
modelo_hs <- '
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
'
ajuste_hs <- cfa(modelo_hs, data = datos_hs)
summary(ajuste_hs, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.7-2 ended normally after 35 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 21
##
## Number of observations 301
##
## Model Test User Model:
##
## Test statistic 85.306
## Degrees of freedom 24
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 918.852
## Degrees of freedom 36
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.931
## Tucker-Lewis Index (TLI) 0.896
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -3737.745
## Loglikelihood unrestricted model (H1) -3695.092
##
## Akaike (AIC) 7517.490
## Bayesian (BIC) 7595.339
## Sample-size adjusted Bayesian (SABIC) 7528.739
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.092
## 90 Percent confidence interval - lower 0.071
## 90 Percent confidence interval - upper 0.114
## P-value H_0: RMSEA <= 0.050 0.001
## P-value H_0: RMSEA >= 0.080 0.840
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.065
##
## Goodness of Fit Index:
##
## Goodness of Fit Index (GFI) 0.959
## 90 Percent confidence interval - lower 0.939
## 90 Percent confidence interval - upper 0.976
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## visual =~
## x1 1.000 0.900 0.772
## x2 0.554 0.100 5.554 0.000 0.498 0.424
## x3 0.729 0.109 6.685 0.000 0.656 0.581
## textual =~
## x4 1.000 0.990 0.852
## x5 1.113 0.065 17.014 0.000 1.102 0.855
## x6 0.926 0.055 16.703 0.000 0.917 0.838
## speed =~
## x7 1.000 0.619 0.570
## x8 1.180 0.165 7.152 0.000 0.731 0.723
## x9 1.082 0.151 7.155 0.000 0.670 0.665
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## visual ~~
## textual 0.408 0.074 5.552 0.000 0.459 0.459
## speed 0.262 0.056 4.660 0.000 0.471 0.471
## textual ~~
## speed 0.173 0.049 3.518 0.000 0.283 0.283
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .x1 0.549 0.114 4.833 0.000 0.549 0.404
## .x2 1.134 0.102 11.146 0.000 1.134 0.821
## .x3 0.844 0.091 9.317 0.000 0.844 0.662
## .x4 0.371 0.048 7.779 0.000 0.371 0.275
## .x5 0.446 0.058 7.642 0.000 0.446 0.269
## .x6 0.356 0.043 8.277 0.000 0.356 0.298
## .x7 0.799 0.081 9.823 0.000 0.799 0.676
## .x8 0.488 0.074 6.573 0.000 0.488 0.477
## .x9 0.566 0.071 8.003 0.000 0.566 0.558
## visual 0.809 0.145 5.564 0.000 1.000 1.000
## textual 0.979 0.112 8.737 0.000 1.000 1.000
## speed 0.384 0.086 4.451 0.000 1.000 1.000
fitMeasures(ajuste_hs, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 85.306 24.000 0.000 0.931 0.896 0.092 0.065
mi_hs <- modindices(ajuste_hs)
head(mi_hs[order(-mi_hs$mi), ], 5)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 30 visual =~ x9 36.411 0.577 0.519 0.515 0.515
## 76 x7 ~~ x8 34.145 0.536 0.536 0.859 0.859
## 28 visual =~ x7 18.631 -0.422 -0.380 -0.349 -0.349
## 78 x8 ~~ x9 14.946 -0.423 -0.423 -0.805 -0.805
## 33 textual =~ x3 9.151 -0.272 -0.269 -0.238 -0.238
modelo_hs2 <- '
visual =~ x1 + x2 + x3 + x9
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
'
ajuste_hs2 <- cfa(modelo_hs2, data = datos_hs)
fitMeasures(ajuste_hs2, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 52.382 23.000 0.000 0.967 0.948 0.065 0.045
Afirmacion: la estructura de tres factores del estudio de Holzinger y Swineford se sostiene, pero necesita un ajuste en el item x9 para tener un ajuste aceptable. Razon: el modelo original trata cada item como si midiera un solo factor, cuando en la practica el item x9 comparte varianza con la habilidad visual ademas de la de velocidad, y esa restriccion de mas es lo que estaba deteriorando el ajuste. Evidencia: el modelo inicial dio CFI de 0.931, TLI de 0.896 y RMSEA de 0.092, todos fuera de los criterios recomendados, y el indice de modificacion mas alto (36.4) apuntaba justamente a que x9 cargara en visual. Al liberar ese parametro el chi cuadrada bajo de 85.3 a 52.4 y los indices pasaron a CFI de 0.967, TLI de 0.948 y RMSEA de 0.065, ya dentro de lo aceptable.
datos_pd <- PoliticalDemocracy
modelo_pd <- '
# modelo de medicion
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
# modelo estructural
dem60 ~ ind60
dem65 ~ ind60 + dem60
# errores correlacionados: son los mismos indicadores medidos dos veces
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8
'
ajuste_pd <- sem(modelo_pd, data = datos_pd)
summary(ajuste_pd, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.7-2 ended normally after 68 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 31
##
## Number of observations 75
##
## Model Test User Model:
##
## Test statistic 38.125
## Degrees of freedom 35
## P-value (Chi-square) 0.329
##
## Model Test Baseline Model:
##
## Test statistic 730.654
## Degrees of freedom 55
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.995
## Tucker-Lewis Index (TLI) 0.993
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -1547.791
## Loglikelihood unrestricted model (H1) -1528.728
##
## Akaike (AIC) 3157.582
## Bayesian (BIC) 3229.424
## Sample-size adjusted Bayesian (SABIC) 3131.720
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.035
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.092
## P-value H_0: RMSEA <= 0.050 0.611
## P-value H_0: RMSEA >= 0.080 0.114
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.044
##
## Goodness of Fit Index:
##
## Goodness of Fit Index (GFI) 1.000
## 90 Percent confidence interval - lower 0.959
## 90 Percent confidence interval - upper 1.000
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## ind60 =~
## x1 1.000 0.670 0.920
## x2 2.180 0.139 15.742 0.000 1.460 0.973
## x3 1.819 0.152 11.967 0.000 1.218 0.872
## dem60 =~
## y1 1.000 2.223 0.850
## y2 1.257 0.182 6.889 0.000 2.794 0.717
## y3 1.058 0.151 6.987 0.000 2.351 0.722
## y4 1.265 0.145 8.722 0.000 2.812 0.846
## dem65 =~
## y5 1.000 2.103 0.808
## y6 1.186 0.169 7.024 0.000 2.493 0.746
## y7 1.280 0.160 8.002 0.000 2.691 0.824
## y8 1.266 0.158 8.007 0.000 2.662 0.828
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## dem60 ~
## ind60 1.483 0.399 3.715 0.000 0.447 0.447
## dem65 ~
## ind60 0.572 0.221 2.586 0.010 0.182 0.182
## dem60 0.837 0.098 8.514 0.000 0.885 0.885
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .y1 ~~
## .y5 0.624 0.358 1.741 0.082 0.624 0.296
## .y2 ~~
## .y4 1.313 0.702 1.871 0.061 1.313 0.273
## .y6 2.153 0.734 2.934 0.003 2.153 0.356
## .y3 ~~
## .y7 0.795 0.608 1.308 0.191 0.795 0.191
## .y4 ~~
## .y8 0.348 0.442 0.787 0.431 0.348 0.109
## .y6 ~~
## .y8 1.356 0.568 2.386 0.017 1.356 0.338
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .x1 0.082 0.019 4.184 0.000 0.082 0.154
## .x2 0.120 0.070 1.718 0.086 0.120 0.053
## .x3 0.467 0.090 5.177 0.000 0.467 0.239
## .y1 1.891 0.444 4.256 0.000 1.891 0.277
## .y2 7.373 1.374 5.366 0.000 7.373 0.486
## .y3 5.067 0.952 5.324 0.000 5.067 0.478
## .y4 3.148 0.739 4.261 0.000 3.148 0.285
## .y5 2.351 0.480 4.895 0.000 2.351 0.347
## .y6 4.954 0.914 5.419 0.000 4.954 0.443
## .y7 3.431 0.713 4.814 0.000 3.431 0.322
## .y8 3.254 0.695 4.685 0.000 3.254 0.315
## ind60 0.448 0.087 5.173 0.000 1.000 1.000
## .dem60 3.956 0.921 4.295 0.000 0.800 0.800
## .dem65 0.172 0.215 0.803 0.422 0.039 0.039
fitMeasures(ajuste_pd, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 38.125 35.000 0.329 0.995 0.993 0.035 0.044
resultado_pd <- standardizedSolution(ajuste_pd)
resultado_pd[resultado_pd$op == "~", ]
## lhs op rhs est.std se z pvalue ci.lower ci.upper
## 12 dem60 ~ ind60 0.447 0.103 4.323 0.00 0.244 0.649
## 13 dem65 ~ ind60 0.182 0.070 2.587 0.01 0.044 0.320
## 14 dem65 ~ dem60 0.885 0.051 17.405 0.00 0.786 0.985
Afirmacion: la industrializacion de 1960 si influye en el nivel de democracia politica, pero su efecto sobre 1965 es casi todo indirecto: lo que mas explica la democracia de 1965 es la democracia que ya habia en 1960. Razon: las instituciones democraticas son estables en el tiempo, asi que un pais que ya era democratico tiende a seguir siendolo, mientras que la industrializacion actua mas como una condicion de fondo que empuja el nivel inicial. Evidencia: el coeficiente estandarizado de dem60 sobre dem65 es de 0.885, muy por encima del efecto directo de ind60 sobre dem65 que es de apenas 0.182, mientras que ind60 sobre dem60 es de 0.447. El modelo ajusta muy bien: chi cuadrada de 38.1 con 35 grados de libertad y un valor p de 0.329, que al no ser significativo indica que el modelo no se separa de los datos, ademas de CFI de 0.995, TLI de 0.993 y RMSEA de 0.035.
archivo <- list.files(pattern = "SEM.*\\.xlsx$")
archivo <- archivo[!grepl("^~\\$", archivo)]
print(archivo)
## [1] "Actividad 3 SEM Data (1).xlsx" "Actividad 3 SEM Data (2).xlsx"
## [3] "Actividad 3 SEM Data.xlsx"
datos <- read_excel(archivo[1])
names(datos) <- trimws(names(datos))
datos <- as.data.frame(datos)
print(nrow(datos))
## [1] 223
print(names(datos))
## [1] "ID" "GEN" "EXPER" "EDAD" "RPD01" "RPD02" "RPD03" "RPD05" "RPD06"
## [10] "RPD07" "RPD08" "RPD09" "RPD10" "RRE02" "RRE03" "RRE04" "RRE05" "RRE06"
## [19] "RRE07" "RRE10" "RMA02" "RMA03" "RMA04" "RMA05" "RMA06" "RMA07" "RMA08"
## [28] "RMA09" "RMA10" "RCO02" "RCO03" "RCO04" "RCO05" "RCO06" "RCO07" "EN01"
## [37] "EN02" "EN04" "EN05" "EN06" "EN07" "EN08" "EVI01" "EVI02" "EVI03"
## [46] "EDE01" "EDE02" "EDE03" "EAB01" "EAB02" "EAB03"
modelo_rec <- '
desapego =~ RPD01 + RPD02 + RPD03 + RPD05 + RPD06 + RPD07 + RPD08 + RPD09 + RPD10
relajacion =~ RRE02 + RRE03 + RRE04 + RRE05 + RRE06 + RRE07 + RRE10
maestria =~ RMA02 + RMA03 + RMA04 + RMA05 + RMA06 + RMA07 + RMA08 + RMA09 + RMA10
control =~ RCO02 + RCO03 + RCO04 + RCO05 + RCO06 + RCO07
recuperacion =~ desapego + relajacion + maestria + control
'
ajuste_rec <- cfa(modelo_rec, data = datos)
fitMeasures(ajuste_rec, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 1221.031 430.000 0.000 0.888 0.879 0.091 0.075
cargas <- standardizedSolution(ajuste_rec)
cargas <- cargas[cargas$op == "=~", c("lhs", "rhs", "est.std")]
head(cargas[order(cargas$est.std), ], 10)
## lhs rhs est.std
## 21 maestria RMA06 0.579
## 34 recuperacion maestria 0.603
## 16 relajacion RRE10 0.698
## 32 recuperacion desapego 0.713
## 17 maestria RMA02 0.730
## 5 desapego RPD06 0.745
## 1 desapego RPD01 0.788
## 3 desapego RPD03 0.797
## 25 maestria RMA10 0.798
## 18 maestria RMA03 0.800
mi_rec <- modindices(ajuste_rec)
mi_rec <- mi_rec[mi_rec$op == "~~", ]
head(mi_rec[order(-mi_rec$mi), c("lhs", "rhs", "mi")], 8)
## lhs rhs mi
## 311 RPD06 RPD08 109.338
## 385 RPD09 RPD10 96.902
## 556 RMA02 RMA03 47.245
## 229 RPD02 RPD07 40.479
## 430 RRE02 RRE03 34.218
## 471 RRE04 RRE05 30.999
## 508 RRE06 RRE07 29.815
## 232 RPD02 RPD10 20.910
modelo_rec2 <- '
desapego =~ RPD03 + RPD05 + RPD07 + RPD09
relajacion =~ RRE02 + RRE04 + RRE05 + RRE07
maestria =~ RMA04 + RMA05 + RMA07 + RMA08
control =~ RCO03 + RCO04 + RCO05 + RCO06
recuperacion =~ desapego + relajacion + maestria + control
'
ajuste_rec2 <- cfa(modelo_rec2, data = datos)
fitMeasures(ajuste_rec2, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 165.376 100.000 0.000 0.979 0.975 0.054 0.053
cargas2 <- standardizedSolution(ajuste_rec2)
cargas2[cargas2$op == "=~", c("lhs", "rhs", "est.std")]
## lhs rhs est.std
## 1 desapego RPD03 0.824
## 2 desapego RPD05 0.917
## 3 desapego RPD07 0.820
## 4 desapego RPD09 0.823
## 5 relajacion RRE02 0.831
## 6 relajacion RRE04 0.903
## 7 relajacion RRE05 0.938
## 8 relajacion RRE07 0.780
## 9 maestria RMA04 0.875
## 10 maestria RMA05 0.847
## 11 maestria RMA07 0.885
## 12 maestria RMA08 0.868
## 13 control RCO03 0.909
## 14 control RCO04 0.888
## 15 control RCO05 0.924
## 16 control RCO06 0.867
## 17 recuperacion desapego 0.720
## 18 recuperacion relajacion 0.875
## 19 recuperacion maestria 0.545
## 20 recuperacion control 0.810
modelo_ene <- '
energia =~ EN01 + EN02 + EN04 + EN05 + EN06 + EN07 + EN08
'
ajuste_ene <- cfa(modelo_ene, data = datos)
fitMeasures(ajuste_ene, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 47.222 14.000 0.000 0.986 0.978 0.103 0.012
standardizedSolution(ajuste_ene)[1:7, c("rhs", "est.std")]
## rhs est.std
## 1 EN01 0.893
## 2 EN02 0.933
## 3 EN04 0.924
## 4 EN05 0.939
## 5 EN06 0.940
## 6 EN07 0.928
## 7 EN08 0.946
mi_ene <- modindices(ajuste_ene)
mi_ene <- mi_ene[mi_ene$op == "~~", ]
head(mi_ene[order(-mi_ene$mi), c("lhs", "rhs", "mi")], 5)
## lhs rhs mi
## 25 EN02 EN07 11.977
## 30 EN04 EN08 11.122
## 34 EN06 EN07 9.621
## 22 EN02 EN04 9.477
## 16 EN01 EN02 5.065
modelo_ene2 <- '
energia =~ EN04 + EN05 + EN06 + EN08
'
ajuste_ene2 <- cfa(modelo_ene2, data = datos)
fitMeasures(ajuste_ene2, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 3.165 2.000 0.205 0.999 0.997 0.051 0.005
datos$REC <- rowMeans(datos[, c("RPD03", "RPD05", "RPD07", "RPD09",
"RRE02", "RRE04", "RRE05", "RRE07",
"RMA04", "RMA05", "RMA07", "RMA08",
"RCO03", "RCO04", "RCO05", "RCO06")])
datos$ENE <- rowMeans(datos[, c("EN04", "EN05", "EN06", "EN08")])
datos$ENG <- rowMeans(datos[, c("EVI01", "EVI02", "EVI03",
"EDE01", "EDE02", "EDE03",
"EAB01", "EAB02", "EAB03")])
modelo_sendero <- '
ENE ~ a*REC
ENG ~ b*ENE + c*REC
indirecto := a*b
total := c + a*b
'
ajuste_sendero <- sem(modelo_sendero, data = datos, se = "bootstrap", bootstrap = 1000)
summary(ajuste_sendero, standardized = TRUE)
## lavaan 0.7-2 ended normally after 1 iteration
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 5
##
## Number of observations 223
##
## Model Test User Model:
##
## Test statistic 0.000
## Degrees of freedom 0
##
## Parameter Estimates:
##
## Standard errors Bootstrap
## Number of requested bootstrap draws 1000
## Number of successful bootstrap draws 1000
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## ENE ~
## REC (a) 1.031 0.061 16.787 0.000 1.031 0.747
## ENG ~
## ENE (b) 0.390 0.080 4.859 0.000 0.390 0.451
## REC (c) 0.245 0.105 2.345 0.019 0.245 0.206
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .ENE 1.290 0.127 10.134 0.000 1.290 0.442
## .ENG 1.345 0.189 7.130 0.000 1.345 0.616
##
## Defined Parameters:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## indirecto 0.402 0.086 4.684 0.000 0.402 0.337
## total 0.647 0.085 7.596 0.000 0.647 0.543
parameterEstimates(ajuste_sendero, standardized = TRUE)[, c("lhs", "op", "rhs", "est", "se", "pvalue", "std.all")]
## lhs op rhs est se pvalue std.all
## 1 ENE ~ REC 1.031 0.061 0.000 0.747
## 2 ENG ~ ENE 0.390 0.080 0.000 0.451
## 3 ENG ~ REC 0.245 0.105 0.019 0.206
## 4 ENE ~~ ENE 1.290 0.127 0.000 0.442
## 5 ENG ~~ ENG 1.345 0.189 0.000 0.616
## 6 REC ~~ REC 1.535 0.000 NA 1.000
## 7 indirecto := a*b 0.402 0.086 0.000 0.337
## 8 total := c+a*b 0.647 0.085 0.000 0.543
modelo_medicion <- '
# experiencias de recuperacion, segundo orden
desapego =~ RPD03 + RPD05 + RPD07 + RPD09
relajacion =~ RRE02 + RRE04 + RRE05 + RRE07
maestria =~ RMA04 + RMA05 + RMA07 + RMA08
control =~ RCO03 + RCO04 + RCO05 + RCO06
recuperacion =~ desapego + relajacion + maestria + control
# energia recuperada
energia =~ EN04 + EN05 + EN06 + EN08
# engagement, segundo orden
vigor =~ EVI01 + EVI02 + EVI03
dedicacion =~ EDE01 + EDE02 + EDE03
absorcion =~ EAB01 + EAB02 + EAB03
engagement =~ vigor + dedicacion + absorcion
# estructural
energia ~ a*recuperacion
engagement ~ b*energia + c*recuperacion
indirecto := a*b
total := c + a*b
'
ajuste_medicion <- sem(modelo_medicion, data = datos)
fitMeasures(ajuste_medicion, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 864.747 367.000 0.000 0.928 0.921 0.078 0.064
estimados <- parameterEstimates(ajuste_medicion, standardized = TRUE)
estimados[estimados$op %in% c("~", ":="), c("lhs", "op", "rhs", "est", "se", "pvalue", "std.all")]
## lhs op rhs est se pvalue std.all
## 37 energia ~ recuperacion 1.139 0.124 0.00 0.813
## 38 engagement ~ energia 0.397 0.105 0.00 0.434
## 39 engagement ~ recuperacion 0.320 0.156 0.04 0.250
## 79 indirecto := a*b 0.452 0.126 0.00 0.353
## 80 total := c+a*b 0.772 0.108 0.00 0.604
segundo_orden <- standardizedSolution(ajuste_medicion)
segundo_orden <- segundo_orden[segundo_orden$op == "=~", ]
segundo_orden[segundo_orden$lhs %in% c("recuperacion", "engagement"), c("lhs", "rhs", "est.std")]
## lhs rhs est.std
## 17 recuperacion desapego 0.724
## 18 recuperacion relajacion 0.805
## 19 recuperacion maestria 0.594
## 20 recuperacion control 0.846
## 34 engagement vigor 0.899
## 35 engagement dedicacion 0.987
## 36 engagement absorcion 0.904
Afirmacion: las experiencias de recuperacion influyen en el engagement laboral principalmente a traves de la energia recuperada, con una mediacion parcial, y la estructura de medicion de los tres constructos se sostiene una vez depurada. Razon: desconectarse del trabajo, relajarse, hacer actividades retadoras y decidir sobre el propio tiempo libre no impactan el engagement por si solos, sino en la medida en que efectivamente le devuelven energia al colaborador; esa energia es la que despues se traduce en vigor, dedicacion y absorcion en el trabajo. Evidencia: en el modelo de senderos el efecto indirecto estandarizado es de 0.337 contra un efecto directo de 0.206, y en el modelo de medicion con latentes el patron se repite con 0.353 de indirecto contra 0.250 de directo, ambos significativos. El modelo de medicion completo alcanza CFI de 0.928, TLI de 0.921, RMSEA de 0.078 y SRMR de 0.064, un ajuste aceptable considerando que tiene 367 grados de libertad. En el segundo orden de recuperacion, la dimension que menos aporta es maestria (0.594) y la que mas, control (0.846), mientras que en engagement las tres dimensiones cargan muy alto, entre 0.899 y 0.987.
| Indicador | Modelo 1 (tres etapas) | Modelo 2 (dos etapas) |
|---|---|---|
| Chi cuadrada | 124.25 (25 gl) | 12.09 (3 gl) |
| GFI | 0.91 | 0.99 |
| CFI | 0.89 | 0.98 |
| RMSEA | 0.14 | 0.16 |
| Caminos significativos | 12 de 14 | 7 de 15 |
| Varianza en satisfaccion | 0.42 | 0.37 |
| Varianza en motivacion | 0.38 | 0.32 |
| AIC | 294.48 | 80.09 |
| CAIC | 446.29 | 227.56 |
Afirmacion: los autores eligieron el Modelo 1 porque un modelo se evalua por su coherencia teorica y por la utilidad de lo que estima, no nada mas por sus indices de ajuste. Razon: el Modelo 2 ajusta mejor pero es un modelo mas simple y con coeficientes que contradicen decadas de teoria sobre diseƱo del trabajo, mientras que el Modelo 1 reproduce el mecanismo que la teoria propone, donde los estados psicologicos son el nucleo causal del modelo. Evidencia: aunque el Modelo 2 saca mejor GFI (0.99 contra 0.91), mejor CFI (0.98 contra 0.89) y menor AIC (80.09 contra 294.48), ocho de sus nueve caminos hacia los resultados salen no significativos, explica menos varianza en dos de las tres variables dependientes y tiene peor RMSEA (0.16 contra 0.14).