Guillermo Cázares Cruz - A01283709 (llegué tarde, así que la primera parte del archivo me lo compartió Victor Manuel Muñoz Tirado - A01423434)
22-02-2024
Los Modelos de Ecuaciones Estructurales (Sem) es una técnica de análisis de estadistica multivariada, que permite analizar paterones complejos de relaciones entre variables, realizar comparaciones entre e intragrupos, y validar modelos teóricos y empiricos.
Holzinger y Swineford realizaron exámenes de habilidad mental a adolescentes de 7° y 8° de dos escuelas (Pasteur y Grand-white).
La base de datos esta incluida como paquete en R e incluye las siguientes variables y columnas:
id: identificador
sex: género (1 Hombre, 2 Mujer)
ageyr: años
agemo: meses
school: escuela
grade: grado
x1: percepción visual
x2: juego con cubos
x3: juego con pastillas / espaciales
x4: comprension de párrafos
x5: completar oraciones
x6: significados de palabras
x7: sumas aceleradas
x8: conteo acelerado de puntos
x9: discriminacion acelerada de mayusculas rectas y curvas
Se busca identificar las relaciones entre las habilidades visual (x1,x2,x3), textual (x4,x5,x6) y velocidad (x7,x8,x9) de los adolescentes.
#install.packages('lavaan')
#install.packages('lavaanPlot')
library(lavaan)
library(lavaanPlot)
#lavaan = Latent variable analysis (no se observa, se infiere)
df1 <- HolzingerSwineford1939
str(df1)
## 'data.frame': 301 obs. of 15 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 11 ...
## $ sex : int 1 2 2 1 2 2 1 2 2 2 ...
## $ ageyr : int 13 13 13 13 12 14 12 12 13 12 ...
## $ agemo : int 1 7 1 2 2 1 1 2 0 5 ...
## $ school: Factor w/ 2 levels "Grant-White",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ grade : int 7 7 7 7 7 7 7 7 7 7 ...
## $ x1 : num 3.33 5.33 4.5 5.33 4.83 ...
## $ x2 : num 7.75 5.25 5.25 7.75 4.75 5 6 6.25 5.75 5.25 ...
## $ x3 : num 0.375 2.125 1.875 3 0.875 ...
## $ x4 : num 2.33 1.67 1 2.67 2.67 ...
## $ x5 : num 5.75 3 1.75 4.5 4 3 6 4.25 5.75 5 ...
## $ x6 : num 1.286 1.286 0.429 2.429 2.571 ...
## $ x7 : num 3.39 3.78 3.26 3 3.7 ...
## $ x8 : num 5.75 6.25 3.9 5.3 6.3 6.65 6.2 5.15 4.65 4.55 ...
## $ x9 : num 6.36 7.92 4.42 4.86 5.92 ...
colSums(is.na(df1))
## id sex ageyr agemo school grade x1 x2 x3 x4 x5
## 0 0 0 0 0 1 0 0 0 0 0
## x6 x7 x8 x9
## 0 0 0 0
Regresión (~) Variable que depende de otras
Variables latentes (=~) No se observa, se infiere
Varianzas y covarianzas (~~) Relaciones entre variables latnetes y observadas (Varianza entre si misma, covarianza entre otras)
Intercepto (~1) Valor esperado cuando las demas variables son cero
modelo1 <- ' # Regresiones
# Variables latentes
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
velocidad =~ x7 + x8 + x9
# Varianzas y covarianzas
# Intercepto
'
fit <- cfa(modelo1, df1)
summary(fit)
## lavaan 0.6.17 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
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## visual =~
## x1 1.000
## x2 0.554 0.100 5.554 0.000
## x3 0.729 0.109 6.685 0.000
## textual =~
## x4 1.000
## x5 1.113 0.065 17.014 0.000
## x6 0.926 0.055 16.703 0.000
## velocidad =~
## x7 1.000
## x8 1.180 0.165 7.152 0.000
## x9 1.082 0.151 7.155 0.000
##
## Covariances:
## Estimate Std.Err z-value P(>|z|)
## visual ~~
## textual 0.408 0.074 5.552 0.000
## velocidad 0.262 0.056 4.660 0.000
## textual ~~
## velocidad 0.173 0.049 3.518 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .x1 0.549 0.114 4.833 0.000
## .x2 1.134 0.102 11.146 0.000
## .x3 0.844 0.091 9.317 0.000
## .x4 0.371 0.048 7.779 0.000
## .x5 0.446 0.058 7.642 0.000
## .x6 0.356 0.043 8.277 0.000
## .x7 0.799 0.081 9.823 0.000
## .x8 0.488 0.074 6.573 0.000
## .x9 0.566 0.071 8.003 0.000
## visual 0.809 0.145 5.564 0.000
## textual 0.979 0.112 8.737 0.000
## velocidad 0.384 0.086 4.451 0.000
lavaanPlot(fit, coef=TRUE, cov=TRUE)
Dentro de los grupos, la variable mayormente relacionada de cada grupo es: conteo acelerado de puntos (velocidad), completar oraciones (textual), y juego con pastillas / espaciales (visual).
Entre los diferentes grupos, el par que está mayormente relacionado es visual y textual (0.41), mientras que el par menormente relacionado es textual y velocidad (0.17).
La base de datos contiene distintas mediciones sobre la democracia política e industralización en paises en desarrollo durante 1960 y 1965
La tabla incluye los siguientes datos:
y1: Calificaciones sobre libertada de prensa en 1960
y2: Libertad de la oposición política en 1960
y3: Imparcialidad de elecciones en 1960
y4: Eficacia de la legislatura electa en 1960
y5: Calificaciones sobre libertad de prensa en 1965
y6: Libertad de la oposición política en 1965
y7: Imparcialidad de elecciones en 1965
y8: Eficacia de la legislatura electa en 1965
x1: PIB per cápita en 1960
x2: Consumo de energía inanimada per cápita en 1960
x3: Porcentaje de la fuerza laboral en la industria en 1960
df2 <- PoliticalDemocracy
colSums(is.na(df2))
## y1 y2 y3 y4 y5 y6 y7 y8 x1 x2 x3
## 0 0 0 0 0 0 0 0 0 0 0
str(df2)
## 'data.frame': 75 obs. of 11 variables:
## $ y1: num 2.5 1.25 7.5 8.9 10 7.5 7.5 7.5 2.5 10 ...
## $ y2: num 0 0 8.8 8.8 3.33 ...
## $ y3: num 3.33 3.33 10 10 10 ...
## $ y4: num 0 0 9.2 9.2 6.67 ...
## $ y5: num 1.25 6.25 8.75 8.91 7.5 ...
## $ y6: num 0 1.1 8.09 8.13 3.33 ...
## $ y7: num 3.73 6.67 10 10 10 ...
## $ y8: num 3.333 0.737 8.212 4.615 6.667 ...
## $ x1: num 4.44 5.38 5.96 6.29 5.86 ...
## $ x2: num 3.64 5.06 6.26 7.57 6.82 ...
## $ x3: num 2.56 3.57 5.22 6.27 4.57 ...
modelo2 <- ' # Regresiones
Politica1965 ~ Politica1960 + Economia1960
Politica1960 ~ Economia1960
# Variables latentes
Politica1965 =~ y5 + y6 + y7 + y8
Politica1960 =~ y1 + y2 + y3 + y4
Economia1960 =~ x1 + x2 + x3
# Varianzas y covarianzas
# Intercepto
'
Se utilizó Pol1970 ~ Eco1960 en vez del otro posible orden debido a que daba mejores resultados.
fit_2 <- cfa(modelo2, df2)
summary(fit_2)
## lavaan 0.6.17 ended normally after 42 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 25
##
## Number of observations 75
##
## Model Test User Model:
##
## Test statistic 72.462
## Degrees of freedom 41
## P-value (Chi-square) 0.002
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## Politica1965 =~
## y5 1.000
## y6 1.258 0.164 7.651 0.000
## y7 1.282 0.158 8.137 0.000
## y8 1.310 0.154 8.529 0.000
## Politica1960 =~
## y1 1.000
## y2 1.354 0.175 7.755 0.000
## y3 1.044 0.150 6.961 0.000
## y4 1.300 0.138 9.412 0.000
## Economia1960 =~
## x1 1.000
## x2 2.182 0.139 15.714 0.000
## x3 1.819 0.152 11.956 0.000
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## Politica1965 ~
## Politica1960 0.864 0.113 7.671 0.000
## Economia1960 0.453 0.220 2.064 0.039
## Politica1960 ~
## Economia1960 1.474 0.392 3.763 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .y5 2.390 0.447 5.351 0.000
## .y6 4.343 0.796 5.456 0.000
## .y7 3.510 0.668 5.252 0.000
## .y8 2.940 0.586 5.019 0.000
## .y1 1.942 0.395 4.910 0.000
## .y2 6.490 1.185 5.479 0.000
## .y3 5.340 0.943 5.662 0.000
## .y4 2.887 0.610 4.731 0.000
## .x1 0.082 0.020 4.180 0.000
## .x2 0.118 0.070 1.689 0.091
## .x3 0.467 0.090 5.174 0.000
## .Politica1965 0.115 0.200 0.575 0.565
## .Politica1960 3.872 0.893 4.338 0.000
## Economia1960 0.448 0.087 5.169 0.000
lavaanPlot(fit_2, coef=TRUE, cov=TRUE)
Dentro de los grupos, la variable mayormente relacionada de cada grupo es: Consumo de energía inanimada per cápita en 1960 (Economia1960), Libertad de la oposición política en 1960 (Politica1960), y Imparcialidad de elecciones en 1965 (Politica1965).
Entre los diferentes grupos, el par que está mayormente relacionado es Politica1960 y Economia1960 (1.47), mientras que el par menormente relacionado es Politica1965 y Economia1960 (0.45).