Co to są GMM i LCGA?
Model mieszanin wzrostu (ang. growth mixture model, GMM) i LCGA (latent class growth analysis) szukają w danych podłużnych podgrup osób o różnych trajektoriach zmian, np. „stabilnie niskich”, „rosnących” i „malejących”. Łączą krzywą wzrostu z analizą klas latentnych: przynależność do klasy jest nieobserwowana i szacowana z prawdopodobieństwem.
LCGA a GMM
LCGA, czyli podejście grupowe Nagina (1999), zakłada, że w klasie wszyscy mają tę samą trajektorię, a odchylenia to tylko błąd pomiaru. Pozwala wyodrębnić grupy zamiast je zakładać, oszacować ich udział w populacji i powiązać przynależność z cechami osób. GMM (Muthén i Shedden, 1999) dodaje w każdej klasie efekty losowe: osoby z tej samej klasy mogą mieć różne wyrazy wolne i nachylenia. GMM jest bardziej realistyczny, ale trudniej go oszacować.
Przykład
W symulacji 300 osób zmierzono pięciokrotnie; były trzy klasy, a w każdej osoby różniły się trajektoriami. LCGA z trzema klasami, liczona własnym algorytmem EM, odtworzyła je dobrze: 9.92 + 0.00t (62%), 11.94 + 2.92t (24%) i 25.15 − 2.97t (13%), entropia 0.99. BIC malał jednak dalej: 7911.4 dla trzech, 7743.0 dla czterech i 7691.9 dla pięciu klas. LCGA dodaje klasy, by opisać zmienność wewnątrz grup. Podejście dwuetapowe – współczynniki każdej osoby, potem mclust – wskazało trzy grupy.
Jak opisać w pracy
Na co uważać
- Klasy to nie zawsze typy ludzi. Bauer i Curran (2003) pokazali, że przy nienormalnym rozkładzie GMM może wskazać kilka klas, choć populacja jest jednorodna.
- Sam BIC nie wystarczy. Łącz go z entropią, wielkością najmniejszej klasy, sensem trajektorii i powtarzalnością; tak samo jak w analizie profili latentnych.
- Lokalne maksima. Uruchamiaj estymację z wielu losowych startów i sprawdzaj, czy najlepsze rozwiązanie się powtarza.
Pełną analizę trajektorii pokazuje wpis Trajektorie rozwojowe – LCGA i modele mieszanin wzrostu (GMM), a wersję z jedną trajektorią i efektami losowymi – modele wzrostu w lme4.
LCGA w R
Kod symuluje trzy klasy trajektorii ze zmiennością wewnątrz klas, liczy LCGA od jednej do pięciu klas własnym algorytmem EM (20 losowych startów), porównuje BIC i entropię, a potem stosuje podejście dwuetapowe z mclust. GMM z efektami losowymi wymaga pakietu lcmm – jego zapis pozostawiono jako niewykonany komentarz, bez wyników.
Trzy klasy trajektorii w pięciu pomiarach
R
suppressPackageStartupMessages(library(mclust))
set.seed(3561)
N <- 300; t <- 0:4 # 300 osób, 5 pomiarów
klasa <- sample(1:3, N, replace = TRUE, prob = c(.60, .25, .15))
b0 <- c(10, 12, 25)[klasa] + rnorm(N, 0, 1.5) # zmienność wewnątrz klas (jak w GMM)
b1 <- c(0, 3, -3)[klasa] + rnorm(N, 0, 0.5)
Y <- outer(b0, rep(1, 5)) + outer(b1, t) + matrix(rnorm(N * 5, 0, 2), N)
# LCGA: mieszanina trajektorii liniowych, algorytm EM, bez efektów losowych
lcga <- function(Y, K, starty = 20) {
X <- cbind(1, t); naj <- NULL
for (s in 1:starty) {
w <- matrix(runif(nrow(Y) * K), ncol = K); w <- w / rowSums(w)
ll_old <- -Inf
for (it in 1:500) {
B <- sapply(1:K, function(k) coef(lm.wfit(X[rep(1:5, nrow(Y)), ], c(t(Y)), rep(w[, k], each = 5))))
s2 <- sapply(1:K, function(k) sum(w[, k] * rowSums((Y - outer(rep(1, nrow(Y)), c(X %*% B[, k])))^2)) / (5 * sum(w[, k])))
p <- colMeans(w)
lf <- sapply(1:K, function(k) log(p[k]) + rowSums(dnorm(Y, outer(rep(1, nrow(Y)), c(X %*% B[, k])), sqrt(s2[k]), log = TRUE)))
lf <- matrix(lf, ncol = K); m <- apply(lf, 1, max)
ll <- sum(m + log(rowSums(exp(lf - m)))); w <- exp(lf - m); w <- w / rowSums(w)
if (abs(ll - ll_old) < 1e-8) break; ll_old <- ll
}
if (is.null(naj) || ll > naj$ll) naj <- list(ll = ll, B = B, p = p, w = w)
}
npar <- 4 * K - 1 # 2 współczynniki + wariancja na klasę, K - 1 proporcji
E <- if (K == 1) NA else 1 + sum(naj$w * log(pmax(naj$w, 1e-300))) / (nrow(Y) * log(K))
c(naj, BIC = -2 * naj$ll + npar * log(nrow(Y)), entropia = E)
}
wyniki <- lapply(1:5, function(K) lcga(Y, K))
round(sapply(wyniki, function(r) c(BIC = r$BIC, entropia = r$entropia)), 2)
r3 <- wyniki[[3]]
round(rbind(B = r3$B, p = r3$p), 2) # trajektorie i udziały klas (K = 3)
table(prawdziwa = klasa, LCGA = max.col(r3$w))
# podejście dwuetapowe: wyraz wolny i nachylenie każdej osoby, potem mclust
wsp <- t(apply(Y, 1, function(y) coef(lm(y ~ t))))
mc <- Mclust(wsp, G = 1:5, verbose = FALSE)
c(G = mc$G, BIC_mclust = round(mc$bic, 1))
table(prawdziwa = klasa, mclust = mc$classification)
# GMM z efektami losowymi wewnątrz klas – wymaga pakietu lcmm, niewykonany:
# m1 <- lcmm::hlme(y ~ t, random = ~ t, subject = "id", ng = 1, data = dane_dlugie)
# m3 <- lcmm::hlme(y ~ t, mixture = ~ t, random = ~ t, subject = "id", ng = 3,
# data = dane_dlugie, B = m1)Wynik w R
[,1] [,2] [,3] [,4] [,5]
BIC 9404.74 8369.04 7911.38 7743.00 7691.9
entropia NA 0.96 0.99 0.91 0.9
[,1] [,2] [,3]
9.92 25.15 11.94
t 0.00 -2.97 2.92
p 0.62 0.13 0.24
LCGA
prawdziwa 1 2 3
1 186 0 1
2 0 0 73
3 0 40 0
G BIC_mclust
3.0 -2563.1
mclust
prawdziwa 1 2 3
1 187 0 0
2 1 0 72
3 0 40 0Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet mclust). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).
- R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
- mclust (wersja 6.1.2): Scrucca, L., Fraley, C., Murphy, T. B., & Raftery, A. E. (2023). Model-based clustering, classification, and density estimation using mclust in R. Chapman and Hall/CRC. https://doi.org/10.1201/9781003277965
Najczęstsze pytania
Czym LCGA różni się od GMM?
W LCGA osoby z jednej klasy mają tę samą trajektorię, a różnice to błąd. W GMM każda klasa ma też wariancje wyrazu wolnego i nachylenia. LCGA jest prostsza i stabilniejsza, ale zwykle potrzebuje więcej klas, by opisać te same dane.
Jak wybrać liczbę klas trajektorii?
Porównaj modele z różną liczbą klas: BIC, entropię, wielkość najmniejszej klasy i to, czy trajektorie mają sens teoretyczny. Każdy model licz z wielu losowych startów. Sam spadek BIC nie przesądza o liczbie klas.
Jak policzyć LCGA i GMM w R?
Najczęściej pakietem lcmm: hlme() z argumentami mixture i ng, a dla GMM także random. W kodzie niżej LCGA policzono własnym algorytmem EM, a GMM pokazano tylko jako niewykonany zapis dla lcmm.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Trajektorie rozwojowe: LCGA i GMM
Klasy trajektorii w danych podłużnych: LCGA a GMM, wybór liczby klas, algorytm EM w R, porównanie z mclust i lista GRoLTS.
Czytaj →PoradnikModele wzrostu w lme4
Losowy wyraz wolny i nachylenie czasu, kodowanie czasu, nieregularne terminy, predyktor × czas, braki MAR, porównanie z LGM i wzór opisu APA.
Czytaj →Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Bauer, D. J., & Curran, P. J. (2003). Distributional assumptions of growth mixture models: Implications for overextraction of latent trajectory classes. Psychological Methods, 8(3), 338–363. https://doi.org/10.1037/1082-989X.8.3.338
- Muthén, B., & Shedden, K. (1999). Finite mixture modeling with mixture outcomes using the EM algorithm. Biometrics, 55(2), 463–469. https://doi.org/10.1111/j.0006-341x.1999.00463.x
- Nagin, D. S. (1999). Analyzing developmental trajectories: A semiparametric, group-based approach. Psychological Methods, 4(2), 139–157. https://doi.org/10.1037/1082-989x.4.2.139
Cytowania BibTeX
@article{bauer2003distributional, author={Bauer, Daniel J. and Curran, Patrick J.}, title={{Distributional assumptions of growth mixture models: Implications for overextraction of latent trajectory classes}}, journal={Psychological Methods}, year={2003}, volume={8}, number={3}, pages={338--363}, doi={10.1037/1082-989x.8.3.338}}@article{muthen1999finite, author={Muthén, Bengt and Shedden, Kerby}, title={{Finite mixture modeling with mixture outcomes using the EM algorithm}}, journal={Biometrics}, year={1999}, volume={55}, number={2}, pages={463--469}, doi={10.1111/j.0006-341x.1999.00463.x}}@article{nagin1999analyzing, author={Nagin, Daniel S.}, title={{Analyzing developmental trajectories: A semiparametric, group-based approach}}, journal={Psychological Methods}, year={1999}, volume={4}, number={2}, pages={139--157}, doi={10.1037/1082-989x.4.2.139}}