Capítulo 2 Trayectorias de sintomatologia depresiva. Modelo Latent Class Mixed Model (LCMM)
2.1 Identificar trayectorias:
Modelos de trayectorias lineales:
Se usa el modelo de 1 clase para fijar los valores iniciales a iterar:
load(file.path('..', 'inputs', 'modelos_lcmm.RData'))
Comparación resultados
# Comparar resultados:
<- summarytable(lcmm3_lin, lcmm4_lin, lcmm5_lin) resultados_comparados
postprob(lcmm3_lin)
##
## Posterior classification:
## class1 class2 class3
## N 461.0 1370.00 82.00
## % 24.1 71.62 4.29
##
## Posterior classification table:
## --> mean of posterior probabilities in each class
## prob1 prob2 prob3
## class1 0.8217 0.1326 0.0458
## class2 0.0617 0.9383 0.0000
## class3 0.1291 0.0000 0.8709
##
## Posterior probabilities above a threshold (%):
## class1 class2 class3
## prob>0.7 77.44 92.85 82.93
## prob>0.8 62.69 88.18 74.39
## prob>0.9 41.43 81.09 59.76
##
postprob(lcmm4_lin)
##
## Posterior classification:
## class1 class2 class3 class4
## N 392.00 1346.00 98.00 77.00
## % 20.49 70.36 5.12 4.03
##
## Posterior classification table:
## --> mean of posterior probabilities in each class
## prob1 prob2 prob3 prob4
## class1 0.7853 0.1343 0.0521 0.0282
## class2 0.0613 0.9342 0.0045 0.0000
## class3 0.1376 0.0435 0.7797 0.0392
## class4 0.0978 0.0000 0.0248 0.8774
##
## Posterior probabilities above a threshold (%):
## class1 class2 class3 class4
## prob>0.7 69.13 92.35 68.37 83.12
## prob>0.8 51.28 88.19 50.00 75.32
## prob>0.9 27.81 80.76 37.76 61.04
##
postprob(lcmm5_lin)
##
## Posterior classification:
## class1 class2 class3 class4 class5
## N 129.00 80.00 48.00 1243.00 413.00
## % 6.74 4.18 2.51 64.98 21.59
##
## Posterior classification table:
## --> mean of posterior probabilities in each class
## prob1 prob2 prob3 prob4 prob5
## class1 0.7675 0.0243 0.0432 0.0051 0.1600
## class2 0.0374 0.8124 0.0238 0.0025 0.1239
## class3 0.0970 0.0549 0.8455 0.0000 0.0025
## class4 0.0018 0.0004 0.0000 0.8932 0.1045
## class5 0.0850 0.0456 0.0003 0.1747 0.6945
##
## Posterior probabilities above a threshold (%):
## class1 class2 class3 class4 class5
## prob>0.7 68.22 72.50 75.00 88.17 52.06
## prob>0.8 44.96 58.75 70.83 78.76 22.76
## prob>0.9 27.91 45.00 52.08 64.60 0.00
##
::kbl(resultados_comparados[,1:4],
kableExtradigits = 1)
G | loglik | npm | BIC | |
---|---|---|---|---|
lcmm3_lin | 3 | -22642.0 | 9 | 45352.1 |
lcmm4_lin | 4 | -22555.4 | 12 | 45201.5 |
lcmm5_lin | 5 | -22530.1 | 15 | 45173.5 |
::kbl(resultados_comparados[,5:9],
kableExtradigits = 1)
%class1 | %class2 | %class3 | %class4 | %class5 | |
---|---|---|---|---|---|
lcmm3_lin | 24.1 | 71.6 | 4.3 | NA | NA |
lcmm4_lin | 20.5 | 70.4 | 5.1 | 4 | NA |
lcmm5_lin | 6.7 | 4.2 | 2.5 | 65 | 21.6 |
2.2 Principales trayectorias
Según criterios de información debería estar entre 4 y 5 clases:
summary(lcmm4_lin)
## Heterogenous linear mixed model
## fitted by maximum likelihood method
##
## hlme(fixed = phq9 ~ ola, mixture = ~ola, subject = "idencuesta",
## ng = 4, data = elsoc_salud_long)
##
## Statistical Model:
## Dataset: elsoc_salud_long
## Number of subjects: 1913
## Number of observations: 7518
## Number of latent classes: 4
## Number of parameters: 12
##
## Iteration process:
## Convergence criteria satisfied
## Number of iterations: 40
## Convergence criteria: parameters= 1.4e-06
## : likelihood= 1.5e-06
## : second derivatives= 1e-11
##
## Goodness-of-fit statistics:
## maximum log-likelihood: -22555.4
## AIC: 45134.8
## BIC: 45201.47
##
##
## Maximum Likelihood Estimates:
##
## Fixed effects in the class-membership model:
## (the class of reference is the last class)
##
## coef Se Wald p-value
## intercept class1 1.60697 0.17336 9.269 0.00000
## intercept class2 2.76869 0.17449 15.867 0.00000
## intercept class3 0.23970 0.26032 0.921 0.35717
##
## Fixed effects in the longitudinal model:
##
## coef Se Wald p-value
## intercept class1 11.03683 0.59999 18.395 0.00000
## intercept class2 3.05637 0.17041 17.935 0.00000
## intercept class3 2.61047 0.81512 3.203 0.00136
## intercept class4 19.70159 0.78596 25.067 0.00000
## ola class1 -0.56535 0.18629 -3.035 0.00241
## ola class2 0.46852 0.05640 8.307 0.00000
## ola class3 3.79455 0.32909 11.530 0.00000
## ola class4 -1.22304 0.28494 -4.292 0.00002
##
## coef Se
## Residual standard error: 4.15204 0.03821
<- predictY(lcmm4_lin, data.frame(ola = 1:4))
pred_lcmm4_lin
plot(pred_lcmm4_lin, ylim = c(0, 27))
summary(lcmm5_lin)
## Heterogenous linear mixed model
## fitted by maximum likelihood method
##
## hlme(fixed = phq9 ~ ola, mixture = ~ola, subject = "idencuesta",
## ng = 5, data = elsoc_salud_long)
##
## Statistical Model:
## Dataset: elsoc_salud_long
## Number of subjects: 1913
## Number of observations: 7518
## Number of latent classes: 5
## Number of parameters: 15
##
## Iteration process:
## Convergence criteria satisfied
## Number of iterations: 44
## Convergence criteria: parameters= 2.8e-05
## : likelihood= 3.6e-05
## : second derivatives= 7e-11
##
## Goodness-of-fit statistics:
## maximum log-likelihood: -22530.07
## AIC: 45090.14
## BIC: 45173.49
##
##
## Maximum Likelihood Estimates:
##
## Fixed effects in the class-membership model:
## (the class of reference is the last class)
##
## coef Se Wald p-value
## intercept class1 -1.13363 0.27773 -4.082 0.00004
## intercept class2 -1.60297 0.20873 -7.680 0.00000
## intercept class3 -2.22890 0.27204 -8.193 0.00000
## intercept class4 0.97249 0.14158 6.869 0.00000
##
## Fixed effects in the longitudinal model:
##
## coef Se Wald p-value
## intercept class1 17.29624 1.14421 15.116 0.00000
## intercept class2 3.60754 0.92278 3.909 0.00009
## intercept class3 19.54451 1.02567 19.055 0.00000
## intercept class4 2.99012 0.19379 15.429 0.00000
## intercept class5 7.05194 0.92131 7.654 0.00000
## ola class1 -2.12546 0.30092 -7.063 0.00000
## ola class2 3.71429 0.33522 11.080 0.00000
## ola class3 -0.59843 0.39151 -1.529 0.12639
## ola class4 0.39012 0.06903 5.652 0.00000
## ola class5 0.49307 0.29497 1.672 0.09460
##
## coef Se
## Residual standard error: 4.08242 0.03853
<- predictY(lcmm5_lin, data.frame(ola = 1:4))
pred_lcmm5_lin
plot(pred_lcmm5_lin, ylim = c(0, 27))
# Librerías básicas
library(tidyverse)
load(file.path('..', 'inputs', 'datos_elsoc_preparados.RData'))
<- elsoc_salud_wide elsoc_salud_modelo