1 Growth Curve Modeling
각 피험자가 자기 개인적 시간 trajectory 를 가지는 random intercept + slope 모형.
\[ Y_{ij} = \beta_0 + \beta_1 t_{ij} + u_{0i} + u_{1i} t_{ij} + \varepsilon_{ij} \]
\[ \begin{pmatrix} u_{0i} \\ u_{1i} \end{pmatrix} \sim N\left(\mathbf{0}, \mathbf{G}\right), \quad \mathbf{G} = \begin{pmatrix} \sigma^2_0 & \rho \sigma_0 \sigma_1 \\ \rho \sigma_0 \sigma_1 & \sigma^2_1 \end{pmatrix} \]
각 피험자의 slope 가 다르다 — “어떤 사람은 빠르게 변하고, 어떤 사람은 느리다”.
2 Random Slope 의 의미
ANOVA 의 within-subjects 와의 차이: ANOVA 는 모든 피험자가 같은 시간 효과를 가진다고 가정 (random intercept 만). Growth curve 는 시간 효과의 개인 차이를 명시.
| 모형 | random | 시간 효과 |
|---|---|---|
| Repeated measures ANOVA | intercept | 모든 사람 같음 |
| Random intercept | intercept | 모든 사람 같음 |
| Random slope | intercept + slope | 사람마다 다름 |
발달 연구: 어린이마다 학습 속도 다름. 일부는 빠르게 학습, 일부는 천천히.
random slope 가 이 개인차를 통계적으로 잡는다: - \(\sigma^2_1 > 0\): 학습 속도의 개인차 존재. - \(\beta_1\): 평균 학습 속도. - \(\hat u_{1i}\): 피험자 \(i\) 의 평균 대비 차이 (BLUP).
random slope 없는 모형 사용 시: - 잘못된 가정 (모든 사람 같은 속도). - 실제 분산이 더 큼 → 검정력 부정확.
3 Intercept-Slope 상관
\(\rho\): 시작점이 높은 사람일수록 변화율이 어떤가?
- \(\rho < 0\): 높은 시작점 = 낮은 변화 (회귀 평균 효과). 일반적.
- \(\rho > 0\): 높은 시작점 = 높은 변화 (“rich get richer”).
- \(\rho = 0\): 무관.
3.1 사례 — 학습 곡선
처음 점수가 높은 학생이 나중에 더 빠르게 향상? 또는 ceiling 효과로 변화 작음?
\(\rho\) 가 그 답을 정량화.
4 공분산 구조 비교
각 구조에 따라 within-subject 응답의 공분산:
4.1 Compound Symmetry (CS)
\[ \Sigma = \sigma^2 \begin{pmatrix} 1 & \rho & \rho & \rho \\ \rho & 1 & \rho & \rho \\ \rho & \rho & 1 & \rho \\ \rho & \rho & \rho & 1 \end{pmatrix} \]
모든 시점 분산 같음, 모든 시점 쌍 공분산 같음. Random intercept only model 과 동치.
모수 2 개. 가장 단순.
4.2 First-Order Autoregressive (AR(1))
\[ \Sigma_{ij} = \sigma^2 \rho^{|t_i - t_j|} \]
거리에 따라 공분산 감소. 시계열 데이터에 자연스러움.
모수 2 개.
4.3 Toeplitz
\[ \Sigma_{ij} = \sigma_{|i-j|} \]
거리별 다른 공분산. AR(1) 의 일반화.
모수 = \(T\) 개 (T 시점).
4.4 Unstructured (UN)
자유 — 모든 분산·공분산 다름.
모수 = \(T(T+1)/2\). 가장 자유. 가장 많은 데이터 요구.
CS 가 가장 단순한 가정 (모든 시점 동등). 데이터가 시계열이면 AR(1). 분산이 시점마다 다르면 (initial 측정의 분산이 큰 경우) UN. AIC/BIC 로 비교.
권장 절차: CS → AR(1) → UN. AIC 가 줄어들 때까지 복잡도 증가. 주의: 작은 표본에서는 복잡한 구조 (UN) 추정이 불안정.
5 모형 비교 절차
Step 1: Null 모형 (random intercept only) fit (REML).
AIC, BIC 기록.
Step 2: Random slope 추가 fit.
AIC 비교. LRT 도 가능 (boundary mixture).
Step 3: Residual covariance 구조 변경.
CS → AR(1) → Toeplitz → UN.
각 모형 AIC, BIC 비교.
Step 4: 최적 구조 선택.
AIC 또는 BIC 가 가장 작은 모형.
단순 모형 권장 (Occam's razor).
Step 5: 모형 진단.
잔차 plot, Q-Q plot.
6 가설 데이터 — Growth Curve
\(n = 30\) 환자, \(T = 6\) 시점. SBP 측정.
| 모형 | AIC | BIC |
|---|---|---|
| Random intercept (CS) | 1620 | 1635 |
| Random int + slope (block diag) | 1605 | 1625 |
| Random int + slope + AR(1) residual | 1585 | 1612 |
| Random int + slope + UN residual | 1590 | 1640 |
→ AR(1) 잔차 + random slope 가 가장 좋음. 시점 간 자기상관이 있고 개인별 trajectory 다름.
7 비선형 Trajectory
선형 trajectory 가 부적합하면 다항식 또는 nonlinear:
7.1 Polynomial
\[ Y_{ij} = \beta_0 + \beta_1 t_{ij} + \beta_2 t_{ij}^2 + u_{0i} + u_{1i} t_{ij} + u_{2i} t_{ij}^2 + \varepsilon_{ij} \]
quadratic random slope 가능. 자유도 부담 ↑.
7.2 Splines
natural cubic spline 또는 B-spline 으로 비선형 trajectory.
R splines::ns(), Python patsy.bs().
7.3 Logistic Growth
\[ Y_{ij} = \frac{a_i}{1 + \exp(-(b_i (t - c_i)))} + \varepsilon_{ij} \]
asymptote \(a_i\), 변화율 \(b_i\), 중간점 \(c_i\) 가 모두 individual.
R nlme::nlme, Python scipy.optimize + bootstrap CI.
8 Python 코드
import numpy as np
import pandas as pd
from statsmodels.formula.api import mixedlm
np.random.seed(2026)
n = 30
T = 6
records = []
for subj in range(n):
u0 = np.random.normal(0, 8)
u1 = np.random.normal(0, 1.5)
eps = np.zeros(T)
eps[0] = np.random.normal(0, 3)
for t in range(1, T):
eps[t] = 0.5 * eps[t-1] + np.random.normal(0, 3 * np.sqrt(1-0.25))
for t in range(T):
y = 140 + 0.5 * t + u0 + u1 * t + eps[t]
records.append({"subject": subj, "time": t, "Y": y})
data = pd.DataFrame(records)
# Model 1: Random intercept (CS)
md1 = mixedlm("Y ~ time", data=data, groups=data["subject"]).fit()
print(f"Random Intercept: AIC={md1.aic:.1f}, BIC={md1.bic:.1f}")
# Model 2: Random intercept + slope
md2 = mixedlm("Y ~ time", data=data, groups=data["subject"],
re_formula="~time").fit()
print(f"Random Int+Slope: AIC={md2.aic:.1f}, BIC={md2.bic:.1f}")
print(f"\nG matrix (intercept-slope correlation):")
print(md2.cov_re)
print(f"Correlation: {md2.cov_re.iloc[0,1] / np.sqrt(md2.cov_re.iloc[0,0] * md2.cov_re.iloc[1,1]):.3f}")9 가정과 한계
- 각 구조의 모수 수: UN 은 \(T(T+1)/2\) — 작은 \(n\) 에서 부족.
- 수렴 문제: 복잡한 random + UN.
- AIC vs BIC: BIC 가 보수적 (더 단순 모형 선호).
- 음의 분산 추정: 수치적 이상. random slope 분산이 매우 작은 경우.
- 선형 trajectory 가정: 비선형이면 polynomial 또는 splines.
10 응용
| 분야 | trajectory |
|---|---|
| 발달 심리 | 어린이의 인지 발달 |
| 임상 | 약 반응의 시간 곡선 |
| 운동학 | 학습 곡선 (skill acquisition) |
| IT longitudinal | 사용자 retention 변화 |
| 농학 | 식물 성장 곡선 |
11 ML 매핑
ML 모델의 학습 곡선: - \(Y\): epoch 별 validation accuracy. - \(t\): epoch (시점). - Subject: training run (각 run 마다 random init).
Growth curve model: - random intercept: run 마다 다른 baseline accuracy. - random slope: run 마다 다른 학습 속도.
Logistic growth (sigmoid): \[ \text{accuracy}(t) = \frac{a_i}{1 + \exp(-(b_i (t - c_i)))} \]
각 run 의 asymptote \(a_i\), 변화율 \(b_i\), 중간점 \(c_i\) — 모두 individual.
이는 ML 의 hyperparameter sweep 의 learning curve 분석의 통계적 형식.
12 본 시리즈
G-MAX15-0 Multilevel 개관
G-MAX15-1 Y = Xβ + Zu + ε
G-MAX15-2 ML vs REML
G-MAX15-3 Growth Curve + Covariance Structures ← 현재 글
G-MAX15-4 Model Comparison + Time-varying Covariates
13 관련 주제
선행 지식
후속 주제
- G-MAX15-4: Model Comparison + Time-varying Covariates
- G-MAX16 — Hierarchical Mixed Nested
다른 카테고리 연결
14 더 읽을 거리
- Singer, J. D., Willett, J. B. (2003). “Applied Longitudinal Data Analysis: Modeling Change and Event Occurrence.” Oxford University Press — growth curve 표준.
- Pinheiro, J. C., Bates, D. M. (2000). “Mixed-Effects Models in S and S-PLUS.” Springer.
- Hedeker, D., Gibbons, R. D. (2006). “Longitudinal Data Analysis.” Wiley.
- Bollen, K. A., Curran, P. J. (2006). “Latent Curve Models: A Structural Equation Perspective.” Wiley.
- Davidian, M., Giltinan, D. M. (1995). “Nonlinear Models for Repeated Measurement Data.” Chapman & Hall.