1 들어가며
본 글의 범위:
- § 14.3 도입 — Laird (1988) 의 ignorability 정리, 모형별 valid 가정 정리.
- § 14.3.1 MCAR Simulations — 4 시나리오, 모두 unbiased 검증.
- § 14.3.2 MAR + MNAR Simulations — MRM 의 우위, GEE 의 bias, MNAR 의 한계, variance-covariance 구조 misspecification 위험.
“§ 14.3 = Ch.14 의 가정-모형 매핑의 simulation 검증. Laird (1988) 의 핵심 정리: MRM + 정확한 mean + variance-covariance 구조 → ignorable nonresponse 에서 valid inference (MCAR + MAR 모두 처리). GEE1 은 covariate-dependent MCAR 만. § 14.3.1 의 MCAR sims (4 시나리오: complete / 50% random / time-related dropout / group × time differential) → 모두 unbiased + SE 만 증가. § 14.3.2 의 MAR(a) (y < 23 dropout), MAR(b) (그룹별 반대 cutoff), MNAR (y < 21.5 missing) 비교: MAR 에서 MRM unbiased, GEE biased; MNAR 에서 모두 biased. Figure 14.1, 14.2 — observed means 가 매우 misleading (그룹 trend 역전 착시). 식 14.2 random-intercepts-only 로 MAR 데이터 분석 → Table 14.3 의 biased — variance-covariance 구조 정확성이 결정적 (Fitzmaurice 2004).”
2 § 14.3 도입 — Models 와 Mechanisms 의 매핑
2.1 Laird (1988) 의 핵심 정리
저자 본문 인용:
“as Laird [1988] points out, MRMs using maximum likelihood estimation, and correctly modeling both the mean and variance-covariance structure of the dependent variable, provide valid inferences in the presence of ignorable nonresponse. This also holds for the covariance pattern models (CPMs), described in Chapter 6, when estimated under full likelihood procedures.”
Laird (1988) 정리:
MRM (또는 CPM) 이 다음 두 조건 만족 시 → ignorable nonresponse 에 valid inference:
- Maximum Likelihood Estimation (full likelihood).
- 정확한 mean structure (\(X\beta\)).
- 정확한 variance-covariance structure (\(Z\Sigma_v Z' + \sigma^2 I\)).
Ignorable nonresponse:
- MCAR + MAR (둘 다 포함).
- MNAR 제외.
Full likelihood 의 본질:
- \(y_i^O\) 의 결합 분포 \(f(y_i^O \mid X_i; \theta)\) 명시적 모형.
- MAR 정의: \(f(R_i \mid X_i, y_i^O, y_i^M) = f(R_i \mid X_i, y_i^O)\).
- → likelihood factorization:
\[f(y_i^O, R_i \mid X_i; \theta, \phi) = \int f(y_i^O, y_i^M \mid X_i; \theta) f(R_i \mid X_i, y_i^O; \phi) dy_i^M\]
- \(\phi\) 가 distinct 면 → \(\theta\) 의 추정에 \(f(R_i \mid \cdot)\) 무관.
- → \(\theta\) MLE 는 \(f(y_i^O \mid X_i; \theta)\) 만으로 valid.
왜 GEE1 은 부족:
- GEE1: \(E(y_i \mid X_i)\) + working correlation 만 사용.
- \(y_i^O\) 의 결합 분포 모형 안 함.
- MAR 의 추가 정보 (\(y_i^O\) 가 \(y_i^M\) 에 대한 조건부 정보) 활용 못함.
- → MCAR 가정 필요.
WGEE 의 발상:
- GEE 에 inverse-probability-of-observation weight 추가.
- 결측 확률이 낮은 환자를 더 가중.
- → MAR 처리 가능 (GEE 의 MAR 확장).
- Robins et al. (1995), Rotnitzky-Robins (1999), Hogan et al. (2004) 표준 절차.
실무 결론:
- 결측이 있는 종단 데이터의 default: MRM 또는 CPM (full likelihood).
- GEE 사용 필요 시 → WGEE 또는 MCAR 검정 필수.
- → § 14.3.1, 14.3.2 의 simulation 으로 직접 검증.
2.2 모형별 valid 가정 정리
| 모형 | Valid 가정 | 비고 |
|---|---|---|
| MRM (ML) | MCAR + MAR (ignorable) | mean + V 정확해야 |
| CPM (ML) | MCAR + MAR (ignorable) | full likelihood |
| GEE1 | covariate-dependent MCAR | weakly restrictive |
| WGEE | MAR | inverse-probability weight |
| Selection model | MNAR | § 14.5.1 |
| Pattern-Mixture | MNAR | § 14.5.2 |
3 § 14.3.1 — MCAR Simulations
3.1 시뮬레이션 Setup — 식 (14.1)
저자 본문 인용 (식 14.1):
\[y_{ij} = \beta_0 + \beta_1 Time_j + \beta_2 Grp_i + \beta_3 (Grp_i \times Time_j) + \upsilon_{0i} + \upsilon_{1i} Time_j + \varepsilon_{ij}\]
Setup:
- \(Time_j\): 0, 1, 2, 3, 4 (5 시점).
- \(Grp_i\): 0 또는 1 (절반씩).
- 모수: \(\beta_0 = 25, \beta_1 = -1, \beta_2 = 0, \beta_3 = -1\).
Population means:
- Group 0: \(25, 24, 23, 22, 21\) (시점별 -1 감소).
- Group 1: \(25, 23, 21, 19, 17\) (시점별 -2 감소, 더 빠른 호전).
Random effects:
- \(\upsilon_{0i} \sim N(0, \sigma_{\upsilon_0}^2 = 4)\).
- \(\upsilon_{1i} \sim N(0, \sigma_{\upsilon_1}^2 = 0.25)\).
- \(\sigma_{\upsilon_{01}} = -0.1\) (corr = -0.1).
Error:
- \(\varepsilon_{ij} \sim N(0, \sigma^2 = 4)\).
왜 이런 setup:
- 두 그룹 비교 (treatment vs control 같은 임상 시나리오).
- 시간에 따른 outcome 감소 (예: 우울증 호전 — HAM-D ↓).
- 그룹 1 이 더 빠른 호전 (\(\beta_3 = -1\), 시점당 추가 -1).
- → 임상 RCT 의 표준 패턴.
Random effects 의 의미:
- \(\upsilon_{0i}\): 환자별 baseline 편차 (\(\sigma = 2\), baseline ~ \(25 \pm 2\)).
- \(\upsilon_{1i}\): 환자별 호전 속도 편차 (\(\sigma = 0.5\), 호전 속도 ± 0.5/시점).
- \(\sigma_{\upsilon_{01}} = -0.1\): 약한 음 상관 (높은 baseline → 더 빠른 호전 경향).
임상적 해석:
- 그룹 0 (control): 자연 호전 -1/시점.
- 그룹 1 (treatment): 호전 -2/시점 (treatment 효과 -1 추가).
- 환자 간 baseline + 속도 변동 정상.
- → 표준 longitudinal RCT 시뮬레이션.
5000 subjects × 5 timepoints:
- 매우 큰 표본 — bias 가 있으면 통계적으로 명확히 감지.
- SE 가 작아서 bias 와 noise 구분 쉬움.
- → simulation 검증의 표준 setup.
3.2 V(y) — 공분산 구조
저자 본문 명시:
\[V(y) = Z \Sigma_v Z' + \sigma^2 I\]
구체적 값 (저자 표):
\[V(y) = \begin{pmatrix} 8.00 & 3.90 & 3.70 & 3.60 & ... \\ 3.90 & 8.05 & 4.35 & 4.50 & ... \\ 3.80 & 4.20 & 5.00 & 5.50 & ... \\ 3.70 & 4.35 & 5.00 & 9.65 & ... \\ 3.60 & 4.50 & 5.40 & 6.30 & ... \end{pmatrix}\]
Correlation matrix:
\[\text{Corr}(y) = \begin{pmatrix} 1.00 & 0.49 & 0.46 & 0.42 & 0.38 \\ 0.49 & 1.00 & 0.50 & 0.49 & 0.47 \\ 0.46 & 0.50 & 1.00 & 0.55 & 0.55 \\ 0.42 & 0.49 & 0.55 & 1.00 & 0.61 \\ 0.38 & 0.47 & 0.55 & 0.61 & 1.00 \end{pmatrix}\]
Diagonal (variance) 의 시간 증가:
- 시점 1: \(V_{11} = 8.00\).
- 시점 5: \(V_{55}\) = 약 14.
증가의 원인 — random slope:
\[V_{jj} = \sigma_{\upsilon_0}^2 + 2 \cdot t_j \cdot \sigma_{\upsilon_{01}} + t_j^2 \cdot \sigma_{\upsilon_1}^2 + \sigma^2\]
- 시점 1 (\(t = 0\)): \(4 + 0 + 0 + 4 = 8\). (정확)
- 시점 5 (\(t = 4\)): \(4 + 2 \cdot 4 \cdot (-0.1) + 16 \cdot 0.25 + 4 = 4 - 0.8 + 4 + 4 = 11.2\).
→ Random slope 가 시간이 지남에 따라 분산을 증가시킴.
Off-diagonal (covariance):
\[V_{jk} = \sigma_{\upsilon_0}^2 + (t_j + t_k) \cdot \sigma_{\upsilon_{01}} + t_j \cdot t_k \cdot \sigma_{\upsilon_1}^2\]
- 시간 lag 가 작을수록 더 강한 상관.
- 가까운 시점 corr ~ 0.49-0.61.
- 먼 시점 corr ~ 0.38.
Within time-lag (band) 의 corr 변화:
저자 본문 인용:
“the correlation diminishes as the time-lag increases. Within a time-lag (i.e., a particular band of the matrix), the correlation increases a bit over time.”
- Lag 1 의 corr: \((0,1) = 0.49\), \((1,2) = 0.50\), \((2,3) = 0.55\), \((3,4) = 0.61\).
- → 같은 lag 안에서 시간이 지남에 따라 corr 증가.
- 이유: 시간 따라 random slope 의 효과 누적.
임상 의미:
- 가까운 시점 측정값이 강하게 연관 (시간적 안정성).
- 먼 시점 연관 약화 (시간 따라 환자 변동).
- → CPM 의 AR(1) 보다 random-effects 구조가 더 적합한 패턴.
3.3 4 시나리오와 결과 (Table 14.1)
저자 본문 명시 (Table 14.1):
- Complete data (no missing).
- 50% random missing: 각 시점 50% 결측, 모두 random (MCAR).
- Time-related dropout: dropout rate 0%, 25%, 50%, 75%, 87.5% (시점별).
- Monotone (한 번 missing → 이후 모두).
- 시간 외 변수와 무관 → covariate-dependent MCAR (with time).
- Group × time dropout:
- Group 0: 0%, 23%, 46%, 70%, 83%.
- Group 1: 0%, 27%, 55%, 81%, 91%.
- → covariate-dependent MCAR (with time + group × time).
Simulated 값 (vs MRM 추정값):
| 모수 | 진짜 | Complete | 50% random | Time-related | Group × time |
|---|---|---|---|---|---|
| \(\beta_0\) (intercept) | 25 | 24.969 (.050) | 24.991 (.063) | 24.989 (.053) | 24.991 (.053) |
| \(\beta_1\) (time) | -1 | -.994 (.016) | -1.024 (.023) | -.968 (.028) | -.977 (.026) |
| \(\beta_2\) (group) | 0 | -.001 (.071) | -.087 (.089) | .019 (.075) | .041 (.075) |
| \(\beta_3\) (g × t) | -1 | -.986 (.023) | -.933 (.032) | -1.021 (.040) | -1.014 (.041) |
| \(\sigma_{\upsilon_0}^2\) | 4 | 3.918 (.129) | 3.811 (.193) | 3.853 (.150) | 3.872 (.150) |
| \(\sigma_{\upsilon_1}^2\) | .25 | .239 (.014) | .199 (.025) | .229 (.032) | .234 (.031) |
| \(\sigma^2\) | 4 | 3.991 (.046) | 4.070 (.083) | 4.000 (.074) | 3.994 (.073) |
핵심 관찰:
- 모든 4 시나리오에서 모수가 잘 회복 — bias 없음.
- 진짜 값과의 차이가 SE 의 1-2 배 이내 (sampling noise).
저자 본문 인용:
“the parameter values are all reasonably recovered under these MCAR situations. While this is expected given the theory, because the covariates upon which dropout depends are included in the model, it is nice to confirm this with simulation results.”
왜 unbiased 인가:
- Time 이 모형에 포함 → time-related dropout 처리 OK.
- Group + group × time 이 모형에 포함 → group × time dropout 처리 OK.
- → covariate-dependent MCAR 가정 만족.
Differential dropout 의 안전성:
저자 본문 인용:
“differential dropout for the two treatment groups, which investigators often fear, is not, in and of itself, a problem.”
- 임상의가 “treatment 그룹과 control 그룹의 dropout rate 차이” 를 걱정하지만 — 그 자체로는 문제 없음.
- 단, 그 dropout 이 dependent variable 에 의존하지 않으면 (covariate-dependent MCAR 만족).
SE 의 변화:
- Complete vs 50% random: SE 증가 (정보 손실).
- Time-related: \(\beta_0, \beta_2\) 의 SE 는 거의 변화 없음 (시점 1 에 결측 없음).
- → 결측 정보 손실의 위치적 영향.
GEE1 결과 (저자 별도 제시 안 함):
“Though not presented, GEE1 gave very similar estimates for the regression coefficients in all of these MCAR situations.”
- MCAR 데이터에서는 MRM 과 GEE1 모두 unbiased.
- → MCAR 만족 시 모형 선택 자유.
4 § 14.3.2 — MAR and MNAR Simulations
4.1 MAR(a), MAR(b), MNAR Setup
저자 본문 명시:
MAR(a):
- 조건: \(y_{ij} < 23\) → subject \(i\) 가 시점 \(j+1\) 부터 dropout.
- 즉 측정된 \(y\) 가 23 미만 → 다음 시점부터 missing.
- 관측된 값 기반 → MAR.
MAR(b) — 그룹별 다른 cutoff:
- Group 1: \(y_{ij} < 23\) → 다음 시점 dropout.
- Group 0: \(y_{ij} > 25.5\) → 다음 시점 dropout.
- → 그룹마다 반대 방향 dropout 메커니즘.
MNAR:
- 조건: 시점 1 이후, \(y_{ij} < 21.5\) → 이 시점부터 missing (모두).
- 미관측 \(y\) 가 dropout 결정 → MNAR.
Cutoff 선택 의도:
- 모든 시나리오의 dropout rate 가 약 0%, 25%, 50%, 75%, 87.5% (MCAR sim 과 비슷).
- → 결측량은 같지만 메커니즘만 다름 → 직접 비교 가능.
MAR(a) vs MNAR 의 미묘한 차이:
- MAR(a): “8 주차 측정 → \(y < 23\) 확인 → 12 주차부터 dropout”.
- MNAR: “12 주차에 \(y < 21.5\) 일 가능성 → 12 주차부터 missing”.
→ 둘 다 outcome 의존, 그러나 MAR 는 관측된 값 (8 주차), MNAR 는 미관측 값 (12 주차) 의존.
임상적 차이:
- MAR(a): 환자가 8 주차에 호전 확인 후 → 더 이상 진료 필요 없어 dropout.
- MNAR: 환자가 12 주차 때 너무 심해서 진료 거부 → 측정 자체 안 됨.
→ 같은 outcome 의존이지만 시간순 관계 다름.
MAR(b) 의 임상 의미:
- Group 1 (treatment): 호전 환자 (\(y < 23\)) dropout — “다 나았으니 안 옴”.
- Group 0 (control): 악화 환자 (\(y > 25.5\)) dropout — “더 심해져서 다른 치료 받음”.
- → 그룹마다 반대 방향의 dropout 매커니즘.
왜 MAR(b) 가 중요한가:
- 두 그룹의 observed mean trajectory 가 매우 misleading 될 가능성 큼.
- Group 1: 호전 환자 dropout → 관측 평균이 인공적으로 높음.
- Group 0: 악화 환자 dropout → 관측 평균이 인공적으로 낮음.
- → Apparent treatment effect 가 역전 가능.
- 정확한 분석 (MRM) 만이 진짜 trend 회복 가능.
4.2 결과 — Table 14.2
저자 본문 명시 (Table 14.2):
| 시나리오 | 모형 | \(\beta_0\) | \(\beta_1\) | \(\beta_2\) | \(\beta_3\) |
|---|---|---|---|---|---|
| 진짜 | — | 25 | -1 | 0 | -1 |
| MAR(a) | MRM | 24.996 (.053) | -1.039 (.025) | -.010 (.075) | -.969 (.041) |
| GEE1 | 25.281 (.058) | -1.164 (.037) | .019 (.097) | -1.001 (.085) | |
| MAR(b) | MRM | 24.999 (.053) | -1.003 (.022) | -.016 (.075) | -1.004 (.039) |
| GEE1 | 24.635 (.055) | -.714 (.030) | .634 (.097) | -1.532 (.090) | |
| MNAR | MRM | 24.956 (.049) | -.233 (.020) | .027 (.070) | -.552 (.035) |
| GEE1 | 25.051 (.049) | -.386 (.020) | .016 (.071) | -.583 (.034) |
(Bold = significant bias)
MAR(a) — 단순 dropout:
- MRM: 모든 모수 unbiased.
- GEE1: \(\beta_1 = -1.164\) (진짜 -1) — 약 16% 과대 (bias).
MAR(b) — 그룹별 다른 dropout:
- MRM: 모든 모수 unbiased (특히 \(\beta_3 = -1.004\) 정확).
- GEE1: 심각한 bias!
- \(\beta_1 = -0.714\) (진짜 -1) — 30% 과소.
- \(\beta_2 = +0.634\) (진짜 0) — 가짜 group difference.
- \(\beta_3 = -1.532\) (진짜 -1) — 53% 과대.
- → GEE1 의 group × time interaction 추정이 50% 이상 inflated.
MNAR — 모두 biased:
- MRM: \(\beta_1 = -0.233\) (진짜 -1) — 77% 과소!
- GEE1: \(\beta_1 = -0.386\) — 61% 과소.
- \(\beta_3\) 도 비슷한 underestimation.
저자 본문 인용:
“the negative trend parameters are appreciably underestimated.”
→ 시간 trend 가 거의 사라진 것처럼 추정됨.
Touloumi et al. (2001) 의 보다 광범위한 결과:
저자 본문 인용:
“Touloumi et al. [2001] observed, in their more extensive simulation study, that the degree of bias in GEE1 estimates increased with the severity of non-randomness and with the amount of missing data.”
- GEE1 bias 가 결측의 비-randomness ↑ + 결측량 ↑ 에 따라 ↑.
- → 결측이 많고 메커니즘이 복잡할수록 GEE1 위험.
4.3 Figure 14.1 — Observed Means 의 위험성
저자 본문 인용 (Figure 14.1b 해석):
“These observed means are interesting because they give a very false impression of the actual population trends. From the observed means, and relying solely on eyeball statistics, one might wrongly conclude that group 0 has the greater decrease across time, relative to group 1.”
Figure 14.1 구성:
- Population trends only.
- Population trends + observed means (눈으로 보면 trends 역전!).
- Population trends + MRM 추정 → 거의 일치.
- Population trends + GEE 추정 → 두 그룹 모두 잘못.
진짜 trends:
- Group 0: 25 → 21 (느린 감소).
- Group 1: 25 → 17 (빠른 감소).
- → Group 1 이 더 가파른 감소.
Observed means (관측만 보면):
- Group 0: 평균이 진짜보다 낮게 보임.
- 왜? 25.5 이상 환자가 dropout → 남은 환자 (낮은 값) 만 평균.
- → Observed mean 인공적으로 ↓.
- Group 1: 평균이 진짜보다 높게 보임.
- 왜? 23 이하 환자가 dropout → 남은 환자 (높은 값) 만 평균.
- → Observed mean 인공적으로 ↑.
→ 두 그룹의 trend 가 거의 같아 보이거나 심지어 역전!
임상적 함의:
- “관측 평균만 보면 treatment 효과 없어 보임” — 잘못된 conclusion.
- → MRM 분석 (full likelihood) 로 진짜 trend 회복.
왜 “observed means” 만 보지 말아야 하는가:
- 결측 환자는 “특별한 환자” (cutoff 충족).
- Complete cases 만 보면 → “non-random subset” → biased.
- → Statistical model 로 결측 정보 처리 필수.
저자의 캡션:
“This simulation example clearly shows the danger of relying on observed means when missing data are present. Of course, this point is somewhat exaggerated because of the great deal of missing data here.”
→ “결측이 많을 때 observed means 의존 위험성”. → 이 시뮬레이션의 87.5% 결측은 극단이지만 — 임상에서도 30-50% 결측 흔함.
4.4 Figure 14.2 — MNAR 의 Trends Underestimation
저자 본문 인용:
“the trends of both groups are significantly less pronounced than the underlying population trends. In fact, based on these analyses, one would conclude that the trend of group 1 was approximately equal to the true trend for group 0, and that the trend of group 0 was only somewhat negative.”
Figure 14.2 구성:
- Population trends only.
- Observed means — 매우 misleading.
- MRM 추정 — biased (trends 약화).
- GEE 추정 — biased (trends 약화).
핵심 관찰:
- MRM 도 GEE 도 모두 trend 과소 추정.
- Group 1 의 추정 trend ≈ Group 0 의 진짜 trend.
- Group 0 의 추정 trend ≈ 작은 음수.
- → Treatment effect 가 거의 사라진 것처럼 보임.
왜 MRM 도 biased:
- MRM 의 ignorability 가정 = MAR (또는 MCAR).
- MNAR 데이터는 ignorability 위반.
- → MRM 도 잘못된 가정.
Bias 의 방향:
- 낮은 \(y\) 환자 missing → 관측 환자는 높은 \(y\) 만.
- 시간 따라 dropout 누적 → 후반 시점 관측 환자가 점점 더 high-functioning.
- → Observed trend 가 인공적으로 평탄 (downward trend 약화).
MRM vs GEE 차이가 작은 이유:
저자 본문 인용:
“the results from these two are very similar, though there is no compelling reason for why that should occur.”
- 이 특정 MNAR 시나리오에서는 우연히 비슷.
- 일반적으로는 다를 수 있음.
- → MNAR 의 specific structure 따라 결과 달라짐.
대응 방법:
- Sensitivity analysis (§ 14.5): 다양한 MNAR 가정으로 결과 비교.
- Selection model: \(f(R \mid y)\) 명시적 모형.
- Pattern-mixture: 결측 패턴별 별도 모형.
- 둘 중 어느 것도 MNAR 의 진짜 답 보장 못 함 — sensitivity 이 핵심.
임상 시사:
- 결측의 임상적 메커니즘 파악 필수.
- “결측 환자는 어떤 사람인가?” 임상의에게 질문.
- MNAR 의심 → conservative analysis + sensitivity.
5 Variance-Covariance 구조 Misspecification — 식 (14.2) + Table 14.3
5.1 식 (14.2) — Random-Intercepts-Only 모형
저자 본문 인용 (식 14.2):
\[y_{ij} = \beta_0 + \beta_1 Time_j + \beta_2 Grp_i + \beta_3 (Grp_i \times Time_j) + \upsilon_{0i} + \varepsilon_{ij}\]
식 14.1 vs 14.2 차이:
- 14.1: random intercept + random slope.
- 14.2: random intercept 만 (random slope 제외).
- → variance-covariance 구조 misspecification.
진짜 데이터의 구조:
- 시뮬레이션 데이터는 식 14.1 (slope 포함) 으로 생성.
- 분석은 식 14.2 (slope 제외) 로.
- → 모형이 진짜 generating process 와 다름.
Random slope 의 통계적 효과:
- \(V(y_{ij})\) 가 시간 따라 증가 (위에서 본 8.00 → 11.2).
- 환자별 trajectory 의 slope 변동 명시.
- 가까운 시점 corr 강하고 먼 시점 약하게.
Random-intercepts-only 가정:
- 모든 시점 같은 분산.
- 모든 시점 쌍 같은 corr (compound symmetry).
- → 데이터의 진짜 구조와 불일치.
MAR 데이터에서의 영향:
- MAR 가 valid 하려면 V 정확해야.
- V misspecified → MAR 정보 정확히 활용 못함.
- → biased 추정.
직관적 비교 — V matrix:
- 진짜 (식 14.1): 시간 따라 분산 ↑, 시간 lag 따라 corr ↓.
- 가정 (식 14.2): 모든 시점 같은 분산, 모든 lag 같은 corr (CS).
- → 시간 정보 부분적 손실.
5.2 Table 14.3 — Misspecified MAR 결과
저자 본문 명시 (Table 14.3):
| 시나리오 | \(\beta_0\) | \(\beta_1\) | \(\beta_2\) | \(\beta_3\) |
|---|---|---|---|---|
| 진짜 | 25 | -1 | 0 | -1 |
| MRM with MAR(a) | 24.938 (.053) | -.891 (.021) | -.009 (.075) | -.949 (.036) |
| MRM with MAR(b) | 24.998 (.053) | -1.048 (.018) | -.069 (.076) | -.805 (.035) |
비교 (Table 14.2 의 정확한 모형 vs Table 14.3 의 misspecified):
- MAR(a) Correct: \(\beta_1 = -1.039\), \(\beta_3 = -.969\) (정확).
- MAR(a) Misspec: \(\beta_1 = -0.891\), \(\beta_3 = -0.949\) (bias 있음).
- MAR(b) Correct: \(\beta_3 = -1.004\) (정확).
- MAR(b) Misspec: \(\beta_3 = -0.805\) (20% 과소).
저자 본문 인용:
“performing any MAR analysis, even with MAR data, does not guarantee that the correct results will be obtained. The selection of an appropriate variance-covariance structure for a given dataset is critical, and so one must pay particular attention to this when missing data are present.”
Fitzmaurice 의 핵심 메시지:
- “MAR 데이터 + full likelihood 모형” 이라는 것만으로는 부족.
- 모형 자체가 정확 해야 valid.
- 결측 있을 때 model-fit 의 중요성이 ↑.
왜 결측 시 중요성 ↑:
- Complete data: 잘못된 모형도 약간 inefficient 하지만 큰 bias 없음.
- 결측 데이터: V misspecified → MAR 정보 손실 → biased.
- → 결측 시 V 정확성이 critical.
실무 권고:
- 결측 데이터 분석 시 모형 fit 더 신중:
- 다양한 V 구조 비교 (LR test, AIC, BIC).
- Random effects 충분히 (intercept + slope + 가능한 high-order).
- CPM: UN 부터 시작, 단순화 검정.
- 공분산 구조 선택의 중요성:
- § 6.3 의 LR test (UN vs simpler).
- Random effects polynomial: linear → quadratic → cubic.
- 임상 지식 반영.
- 결측 패턴 별 sensitivity check:
- 다양한 V 가정으로 분석.
- 결과 일관성 확인.
§ 14.3 의 종합 메시지:
- MCAR: 모든 모형 OK.
- MAR + 정확한 V: MRM/CPM (full likelihood) OK, GEE biased.
- MAR + 잘못된 V: MRM 도 biased.
- MNAR: 모두 biased — sensitivity (§ 14.5) 필요.
→ 결측 데이터 + 정확한 모형 + Full likelihood = 안전한 분석.
6 응용 분야
| 분야 | 적합 분석 | 비고 |
|---|---|---|
| 임상시험 (RCT) | MRM with random slope + UN | MAR default + sensitivity |
| 정신과 longitudinal | MRM (multi-level) | dropout 흔함 |
| 항암제 long-term | MRM + Joint model | MNAR (사망) |
| 만성 질환 추적 | CPM (UN) + 광범위 covariate | 광범위 결측 |
| 학교 종단 | MRM + School cluster | 이사로 인한 dropout |
| Survey panel | MI + MRM | Item nonresponse |
| Pharmaco-epi | GEE with WGEE | Marginal target |
7 코드 예시
7.1 Step 1: 시뮬레이션 — 식 (14.1) Generating Model
library(MASS)
library(dplyr)
set.seed(2026)
n_subjects <- 5000
n_times <- 5
times <- 0:4 # Time = 0, 1, 2, 3, 4
# 모수
beta <- c(intercept = 25, time = -1, group = 0, group_time = -1)
sigma_v0 <- 2 # sd of intercept
sigma_v1 <- 0.5 # sd of slope
rho_v01 <- -0.1 / (sigma_v0 * sigma_v1) # corr of v0, v1
sigma_e <- 2
# Group assignment
group <- rep(c(0, 1), each = n_subjects / 2)
# Random effects
Sigma_v <- matrix(c(sigma_v0^2, rho_v01 * sigma_v0 * sigma_v1,
rho_v01 * sigma_v0 * sigma_v1, sigma_v1^2), 2, 2)
v <- mvrnorm(n_subjects, mu = c(0, 0), Sigma = Sigma_v)
# Generate data
df <- expand.grid(subject = 1:n_subjects, time = times)
df <- df %>% arrange(subject, time)
df$group <- group[df$subject]
df$v0 <- v[df$subject, 1]
df$v1 <- v[df$subject, 2]
df$y <- beta["intercept"] + beta["time"] * df$time +
beta["group"] * df$group +
beta["group_time"] * df$group * df$time +
df$v0 + df$v1 * df$time + rnorm(nrow(df), 0, sigma_e)
# Group means by time
df %>% group_by(group, time) %>% summarise(mean_y = mean(y))기대 평균 (Group 0): 25, 24, 23, 22, 21. 기대 평균 (Group 1): 25, 23, 21, 19, 17.
→ 시뮬레이션 검증 (5000 subjects 라 매우 정확).
V(y) 검증:
- 시점 1 분산: ~ 8.
- 시점 5 분산: ~ 11.
- 가까운 시점 corr ~ 0.5, 먼 시점 ~ 0.4.
→ 식 14.1 의 random intercept + slope 구조.
7.2 Step 2: 4 가지 결측 시나리오 적용
# 결측 시나리오 4 종 적용
apply_missing <- function(df, scenario) {
if (scenario == "complete") {
df$y_obs <- df$y
} else if (scenario == "random50") {
# 50% random missing (MCAR)
df$y_obs <- ifelse(rbinom(nrow(df), 1, 0.5) == 1, df$y, NA)
} else if (scenario == "time_dropout") {
# Time-related dropout (covariate-dependent MCAR with time)
drop_rates <- c(0, 0.25, 0.50, 0.75, 0.875)
df$y_obs <- df$y
for (j in 2:n_times) {
drop_subjects <- sample(unique(df$subject), drop_rates[j] * n_subjects)
df$y_obs[df$subject %in% drop_subjects & df$time >= (j - 1)] <- NA
}
} else if (scenario == "group_time_dropout") {
# Group × time dropout
drop_rates_g0 <- c(0, 0.23, 0.46, 0.70, 0.83)
drop_rates_g1 <- c(0, 0.27, 0.55, 0.81, 0.91)
df$y_obs <- df$y
# ... (구현 단순화)
}
return(df)
}
# MAR/MNAR 시나리오
apply_mar_mnar <- function(df, scenario) {
df <- df %>% arrange(subject, time)
if (scenario == "MAR_a") {
# y_ij < 23 → 다음 시점부터 dropout
df_marked <- df %>%
group_by(subject) %>%
mutate(should_drop = cumsum(lag(y, default = 999) < 23) > 0,
y_obs = ifelse(should_drop, NA, y))
} else if (scenario == "MAR_b") {
# 그룹별 다른 cutoff
df_marked <- df %>%
group_by(subject) %>%
mutate(cutoff = ifelse(group[1] == 1, 23, 25.5),
trigger = ifelse(group[1] == 1,
lag(y, default = 999) < cutoff,
lag(y, default = -999) > cutoff),
should_drop = cumsum(trigger) > 0,
y_obs = ifelse(should_drop, NA, y))
} else if (scenario == "MNAR") {
# y_ij < 21.5 → 같은 시점부터 missing
df_marked <- df %>%
group_by(subject) %>%
mutate(should_drop = cumsum(y < 21.5 & time > 0) > 0,
y_obs = ifelse(should_drop, NA, y))
}
return(df_marked)
}- MCAR (random50): \(R\) 가 \(y\) 와 무관.
- Covariate-dependent MCAR (time_dropout): \(R\) 가 시간만 의존.
- MAR(a): \(R\) 가 직전 관측 \(y\) 의존.
- MAR(b): \(R\) 가 직전 관측 \(y\) 의존, 그룹별 다른 방향.
- MNAR: \(R\) 가 현재 미관측 \(y\) 의존.
→ 같은 generating model 에 다른 결측 메커니즘. → 모형의 가정이 결측 메커니즘과 일치하는지 검증.
7.3 Step 3: MRM (식 14.1) vs GEE 비교
library(lme4)
library(geepack)
# MRM (random intercept + slope)
fit_mrm <- function(df) {
lmer(y_obs ~ time + group + group:time + (time | subject),
data = df %>% filter(!is.na(y_obs)))
}
# GEE1 (unstructured working corr)
fit_gee <- function(df) {
geeglm(y_obs ~ time + group + group:time,
id = subject, data = df %>% filter(!is.na(y_obs)),
family = gaussian, corstr = "unstructured")
}
# MAR(a) 시나리오에서 비교
df_mar_a <- apply_mar_mnar(df, "MAR_a")
res_mrm_mar_a <- fit_mrm(df_mar_a)
res_gee_mar_a <- fit_gee(df_mar_a)
cat("=== MAR(a) 결과 ===\n")
cat("진짜: beta = (25, -1, 0, -1)\n")
cat("MRM:", round(fixef(res_mrm_mar_a), 3), "\n")
cat("GEE:", round(coef(res_gee_mar_a), 3), "\n")
# MAR(b)
df_mar_b <- apply_mar_mnar(df, "MAR_b")
res_mrm_mar_b <- fit_mrm(df_mar_b)
res_gee_mar_b <- fit_gee(df_mar_b)
cat("\n=== MAR(b) 결과 ===\n")
cat("MRM:", round(fixef(res_mrm_mar_b), 3), "\n")
cat("GEE:", round(coef(res_gee_mar_b), 3), "\n")
# MNAR
df_mnar <- apply_mar_mnar(df, "MNAR")
res_mrm_mnar <- fit_mrm(df_mnar)
res_gee_mnar <- fit_gee(df_mnar)
cat("\n=== MNAR 결과 ===\n")
cat("MRM:", round(fixef(res_mrm_mnar), 3), "\n")
cat("GEE:", round(coef(res_gee_mnar), 3), "\n")MAR(a): MRM unbiased, GEE bias 보임. MAR(b): MRM unbiased, GEE 큰 bias (group × time 50% 과대). MNAR: 둘 다 큰 bias (trend underestimation).
→ Hedeker Table 14.2 와 일치. → MRM/CPM 의 우위 시각적 검증.
7.4 Step 4: V(y) Misspecification — 식 (14.2)
# 식 14.2: random intercept ONLY (slope 제외)
fit_mrm_intercept_only <- function(df) {
lmer(y_obs ~ time + group + group:time + (1 | subject),
data = df %>% filter(!is.na(y_obs)))
}
# 같은 MAR 데이터에 misspecified 모형 적합
res_misspec_mar_a <- fit_mrm_intercept_only(df_mar_a)
res_misspec_mar_b <- fit_mrm_intercept_only(df_mar_b)
cat("=== Misspecified MAR(a) - random intercept only ===\n")
cat("진짜: beta = (25, -1, 0, -1)\n")
cat("Correct (random + slope):", round(fixef(res_mrm_mar_a), 3), "\n")
cat("Misspec (intercept only):", round(fixef(res_misspec_mar_a), 3), "\n")
cat("\n=== Misspecified MAR(b) - random intercept only ===\n")
cat("Correct:", round(fixef(res_mrm_mar_b), 3), "\n")
cat("Misspec:", round(fixef(res_misspec_mar_b), 3), "\n")Hedeker Table 14.3 결과 재현:
- MAR(a) misspec: \(\beta_1 \approx -0.89\), \(\beta_3 \approx -0.95\) (bias 있음).
- MAR(b) misspec: \(\beta_3 \approx -0.81\) (20% 과소).
왜 이런 bias 발생:
- Random slope 누락 → V matrix 의 시간 의존 구조 손실.
- → MAR 정보 (관측된 \(y\) 의 trajectory) 정확히 활용 못함.
- → 시간 trend 추정 biased.
실무 lesson:
- MAR 가정 만으로 부족 — 모형 specification 도 정확해야.
- Random slope (또는 더 일반적 random effects) 충분히 포함.
- 모형 비교 (LR test, AIC) 로 validate.
- 임상 지식 반영 (시간 따라 분산 증가, individual variability 등).
§ 6.3 의 CPM 모형 선택 절차 참조:
- UN 부터 시작.
- 단순 구조로 nested LR test.
- 결측 시 더 보수적 (UN 권고).
8 관련 주제
선행 지식
- Ch.4 정규 종단 MRM — Random intercept + slope 모형
- Ch.6 CPM — Variance-covariance 구조 (UN, AR(1), Toeplitz)
- Ch.8 GEE — Marginal model + working correlation
- Ch.14 Overview — Ch.14 전체 한눈
- § 14.1~14.2 framework — Rubin typology
후속 주제 (Ch.14 sub-posts)
- § 14.4 ~ 14.4.1 — Little’s MCAR test + 예시
- § 14.5.1 — Selection model (Diggle-Kenward 1994)
- § 14.5.2 — Pattern-mixture model (Little 1993, 1994)
관련 개념
- Laird (1988) — MRM ignorability 정리 (Statistics in Medicine)
- Touloumi et al. (2001) — 광범위 simulation study (Statistics in Medicine)
- Fitzmaurice et al. (2004) — MAR 분석에서 V 구조 정확성 경고
- Robins, Rotnitzky & Zhao (1995) — WGEE 원전 (JASA)
- Rotnitzky & Robins (1999) — WGEE 확장
- Hogan, Roy & Korkontzelou (2004) — WGEE tutorial + standard software
- Little (1995) — Longitudinal modeling overview
- Verbeke & Molenberghs (2000) — Linear mixed models textbook (V structure)
- Diggle, Heagerty, Liang, Zeger (2002) — Longitudinal data textbook