1 Linear Mixed Model (1): 왜 Mixed Model인가
1.1 GLM의 핵심 가정과 한계
GLM은 강력하지만 한 가지 결정적인 가정이 있다:
모든 관측치는 서로 독립이어야 한다.
이 가정이 깨지는 상황이 실무에서 매우 흔하다.
1.1.1 독립성 가정이 깨지는 3가지 패턴
패턴 1: 반복 측정 (Repeated Measures)
같은 사용자를 여러 번 측정하면, 같은 사람의 관측치끼리는 비슷하다.
사용자 A의 만족도: 4.1, 4.3, 4.0, 4.2 ← 서로 비슷 (같은 사람이니까)
사용자 B의 만족도: 2.8, 3.0, 2.7, 2.9 ← 서로 비슷 (같은 사람이니까)
패턴 2: 계층적 구조 (Nested / Hierarchical)
학생은 학급 안에 있고, 학급은 학교 안에 있다. 같은 학급 학생끼리는 같은 선생님, 같은 교실 환경을 공유한다.
학교 1
├── 학급 A: 학생 1, 2, 3, ... ← 같은 학급이라 비슷
└── 학급 B: 학생 4, 5, 6, ... ← 같은 학급이라 비슷
학교 2
├── 학급 C: 학생 7, 8, 9, ...
└── ...
패턴 3: 군집 데이터 (Clustered)
병원별로 환자를 모집하면, 같은 병원 환자끼리는 비슷한 치료 프로토콜을 받는다.
병원 A: 환자 1, 2, 3 ← 같은 의료진, 같은 프로토콜
병원 B: 환자 4, 5, 6 ← 다른 의료진, 다른 프로토콜
1.1.2 독립성 위반 시 무슨 일이 생기나
단순 GLM으로 분석하면:
- 표준 오차 과소추정 → t-statistic이 실제보다 크게 나옴
- False Positive 증가 → 실제로는 효과가 없는데 있다고 판단
- 자유도 과대추정 → 샘플이 실제보다 더 많은 것처럼 계산
구체적 예시:
실험: 30개 학급(학급당 30명, 총 900명)에 새 교수법 적용
GLM로 분석하면:
- n = 900으로 계산
- 표준오차가 매우 작아짐
- p < 0.001 → "유의하다!"
Mixed Model로 분석하면:
- 실제 독립 단위는 30개 학급
- 표준오차가 훨씬 큼
- p = 0.12 → "유의하지 않다"
→ GLM은 900명짜리 실험처럼 계산했지만
실제로는 30개 학급짜리 실험이었다.
사실상 수백 명이 아니라 수십 개의 독립 단위만 있는 것.
1.2 Fixed Effect vs Random Effect
Mixed Model의 “Mixed”는 Fixed Effect와 Random Effect를 둘 다 포함한다는 뜻이다.
1.2.1 Fixed Effect (고정 효과)
- 관심 대상인 효과
- 특정 값(level)의 효과 자체를 추정
- 모집단 전체에 일반화하려는 변수
예시: - Treatment vs Control → 처치 효과 (α를 정확히 추정하고 싶음) - 성별 차이 → 남/여의 평균 차이 (특정 두 그룹을 비교) - 주당 변화 → 시간 경과 효과
1.2.2 Random Effect (랜덤 효과)
- 통제해야 하는 효과 (관심 대상이 아님)
- 더 큰 모집단에서 랜덤하게 추출된 수준(level)
- 각 수준의 특정 값보다 분산을 추정
예시: - 학급 효과 → 30개 학급은 전국 학급들 중 랜덤 샘플 - 특정 학급 A의 효과를 알고 싶지 않음 - “학급 간 차이가 얼마나 큰가?”(분산)를 알고 싶음 - 사용자 효과 → 1000명의 사용자는 전체 사용자 중 랜덤 샘플 - 병원 효과 → 20개 병원은 전국 병원들 중 랜덤 샘플
1.2.3 직관적 비교
| Fixed Effect | Random Effect | |
|---|---|---|
| 목적 | 효과 크기 추정 | 분산 추정 |
| 질문 | “Treatment가 얼마나 효과적인가?” | “사용자 간 차이가 얼마나 큰가?” |
| 일반화 | 해당 그룹(남/여 등)에 대한 결론 | 더 큰 모집단으로 일반화 |
| 계수 | 각 level의 β 추정 | 분산 \(\sigma^2_u\) 추정 |
| 예시 | Treatment 효과, 시간 효과 | 사용자, 학급, 병원 |
1.2.4 “어떤 게 Fixed이고 어떤 게 Random인가?” 판단법
질문: “이 변수의 특정 값(level)에 관심이 있는가, 아니면 그 값들이 얼마나 다양한지(분산)에 관심이 있는가?”
| 시나리오 | 변수 | Fixed or Random? | 이유 |
|---|---|---|---|
| A/B 테스트 | Treatment (A/B) | Fixed | A와 B의 차이 자체가 관심사 |
| A/B 테스트 | 사용자 ID | Random | 특정 사용자가 아니라 “사용자 간 변동”이 관심사 |
| 교육 연구 | 교수법 (새/기존) | Fixed | 두 교수법의 차이가 관심사 |
| 교육 연구 | 학급 ID | Random | 30개 학급은 전국 학급의 샘플 |
| 임상 시험 | 약물 (A/B/C) | Fixed | 세 약물의 효과 비교가 목적 |
| 임상 시험 | 병원 ID | Random | 참여 병원은 전국 병원의 샘플 |
1.3 Mixed Model의 기본 수식
가장 단순한 Mixed Model: Random Intercept Model
\[Y_{ij} = \underbrace{\beta_0 + \beta_1 X_{ij}}_{\text{Fixed Effects}} + \underbrace{u_i}_{\text{Random Effect}} + \underbrace{\epsilon_{ij}}_{\text{Residual}}\]
| 기호 | 의미 |
|---|---|
| \(Y_{ij}\) | 그룹 \(i\)의 \(j\)번째 관측치 |
| \(\beta_0\) | 전체 평균 절편 (모든 그룹의 평균) |
| \(\beta_1\) | X의 고정 효과 (관심 계수) |
| \(u_i\) | 그룹 \(i\)의 랜덤 절편 — \(u_i \sim N(0, \sigma^2_u)\) |
| \(\epsilon_{ij}\) | 잔차 — \(\epsilon_{ij} \sim N(0, \sigma^2_e)\) |
핵심: \(u_i\)는 각 그룹(사용자/학급/병원)이 전체 평균에서 얼마나 벗어나 있는지를 나타낸다. 이 값을 직접 추정하는 게 아니라, 이것들의 분산 \(\sigma^2_u\)를 추정한다.
1.3.1 예시로 이해하기
AI Agent 서비스에서 개인화 효과를 측정한다. 같은 사용자를 4주간 반복 측정.
\[\text{만족도}_{ij} = \beta_0 + \beta_1 \cdot \text{개인화}_{ij} + u_i + \epsilon_{ij}\]
| 사용자 \(i\) | \(u_i\) (랜덤 절편) | 의미 |
|---|---|---|
| 사용자 1 | \(u_1 = +0.8\) | 이 사람은 원래 만족도가 높은 편 |
| 사용자 2 | \(u_2 = -0.5\) | 이 사람은 원래 만족도가 낮은 편 |
| 사용자 3 | \(u_3 = +0.1\) | 이 사람은 평균 수준 |
\(\beta_1\)은 \(u_i\)의 영향을 제거한 후의 순수 개인화 효과다. 이것이 GLM과의 결정적 차이: 개인차(\(u_i\))를 모델에 명시적으로 반영한다.
1.4 Intraclass Correlation Coefficient (ICC)
ICC는 “같은 그룹 내의 관측치끼리 얼마나 비슷한가?”를 0~1로 나타낸다.
1.4.1 수식
\[\text{ICC} = \frac{\sigma^2_u}{\sigma^2_u + \sigma^2_e}\]
| ICC | 해석 |
|---|---|
| \(\approx 0\) | 그룹 간 차이 거의 없음 → GLM으로 충분 |
| \(0.05 \sim 0.20\) | 그룹 효과 중간 → Mixed Model 권장 |
| \(> 0.20\) | 그룹 효과 큼 → Mixed Model 필수 |
1.4.2 직관적 해석
ICC = 그룹 간 분산 / (그룹 간 분산 + 그룹 내 분산)
= 그룹이 설명하는 분산의 비율
예시 A — 학급 효과:
시험 점수 분산:
- 학급 간 분산 (σ²_u): 100 ← 학급마다 평균이 다름
- 학급 내 분산 (σ²_e): 300 ← 같은 학급 내에서도 학생 차이
ICC = 100 / (100 + 300) = 0.25
해석: 시험 점수 분산의 25%가 학급 차이에서 비롯됨
→ Mixed Model 필수
예시 B — AI Agent 사용자 효과:
만족도 분산:
- 사용자 간 분산 (σ²_u): 0.42 ← 사람마다 기본 만족도 다름
- 사용자 내 분산 (σ²_e): 0.58 ← 같은 사람도 세션마다 다름
ICC = 0.42 / (0.42 + 0.58) = 0.42
해석: 만족도 분산의 42%가 개인차에서 비롯됨
→ Mixed Model 없이 분석하면 심각한 오류
→ 개인차를 통제해야 정확한 개인화 효과 추정 가능
예시 C — ICC가 낮은 경우:
웹사이트 페이지 체류 시간:
- 사용자 간 분산: 0.05
- 사용자 내 분산: 0.95
ICC = 0.05 / (0.05 + 0.95) = 0.05
해석: 체류 시간은 사용자보다 콘텐츠/시간대 등 다른 요인에 더 영향받음
→ 이 경우엔 GLM으로도 큰 문제 없음
1.4.3 ICC 계산 코드
import statsmodels.formula.api as smf
# Random Intercept Only 모델 (Null Model)
null_model = smf.mixedlm(
"satisfaction ~ 1", # 예측 변수 없이 절편만
data=df,
groups=df["user_id"]
).fit()
# ICC 계산
sigma2_u = null_model.cov_re.iloc[0, 0] # 랜덤 효과 분산
sigma2_e = null_model.scale # 잔차 분산
icc = sigma2_u / (sigma2_u + sigma2_e)
print(f"ICC = {icc:.3f}")
print(f"그룹이 설명하는 분산 비율: {icc*100:.1f}%")# R (lme4)
library(lme4)
library(performance)
null_model <- lmer(satisfaction ~ 1 + (1 | user_id), data = df)
icc(null_model)
# ICC = 0.4201.5 언제 Mixed Model을 써야 하는가: 결정 트리
데이터에 반복 측정 또는 계층 구조가 있는가?
│
├── 아니오 → GLM 사용
│
└── 예 → ICC를 계산해보라
│
├── ICC < 0.05 → GLM도 괜찮음 (그룹 효과 작음)
│
└── ICC ≥ 0.05 → Mixed Model 사용
│
├── 결과 변수가 연속형? → LMM
├── 결과 변수가 이진형? → GLMM (logistic)
└── 결과 변수가 카운트? → GLMM (Poisson)
1.6 실무 맥락별 Mixed Model 적용 예시
| 도메인 | 데이터 구조 | Random Effect | Fixed Effect (관심 대상) |
|---|---|---|---|
| AI Agent 개인화 | 사용자 × 세션 | 사용자 ID | 개인화 전략 효과 |
| 교육 | 학생 × 학급 × 학교 | 학급 ID, 학교 ID | 교수법 효과 |
| 임상 시험 | 환자 × 병원 | 병원 ID | 약물 효과 |
| 마케팅 | 고객 × 구매 기록 | 고객 ID | 캠페인 효과 |
| 부동산 | 매물 × 동네 | 동네 ID | 방 수, 면적 효과 |
| 금융 | 종목 × 시간 | 종목 ID | 시장 요인 효과 |
1.7 정리
| 개념 | 핵심 |
|---|---|
| GLM의 한계 | 독립성 가정 — 반복 측정/계층 데이터에서 깨짐 |
| 독립성 위반 결과 | 표준오차 과소추정 → False Positive 증가 |
| Fixed Effect | 관심 대상 효과 (크기를 직접 추정) |
| Random Effect | 통제 대상 효과 (분산을 추정) |
| ICC | 그룹 효과의 크기 — Mixed Model 필요 여부 판단 기준 |
| Mixed Model | Fixed + Random 효과를 동시에 포함 → 개인차 통제 후 순수 효과 추정 |
다음: [02-mixed-model-structure.qmd] — 모델의 구체적인 구조 (Random Intercept, Random Slope, 공분산 구조)