Ch.11 Overview — Mixed-Effects Regression Models for Nominal Data

명목 응답 GLMM · Multinomial logit · Reference cell formulation (식 11.1-11.2) · Extremal concept (Bock 1972) · General contrast formulation (식 11.3-11.5) · Helmert contrast · ICC 의 범주별 분리 (식 11.6-11.7) · Bock vs Hedeker 2003 vs Hartzel 2001 의 통합

Hedeker & Gibbons (2006) Ch.11 의 종합 overview. 명목 (nominal) 응답 — 순서 없는 3+ 범주 (예: republican/democrat/undecided, inpatient/outpatient/emergency) — 에 대한 mixed-effects 회귀 모형. Ch.10 의 ordinal 모형과 핵심 차이: (1) 회귀 계수가 \(C-1\) 개 범주 비교 별 별도, (2) random-effect 분산도 범주 별 별도. Bock (1972) 의 IRT 모형이 토대 — extremal concept (\(C\) 개 잠재 변수, 각 범주의 response tendency) 로 ordinal 의 threshold concept (1 개 잠재 변수) 와 대비. Reference cell formulation (식 11.1-11.2), Bock 의 general contrast formulation (식 11.3-11.5, Helmert contrast 포함), random intercept 의 단순화 (식 11.5), § 11.1.1 의 범주별 ICC (식 11.6-11.7, \(C-1\) 개 ICC), § 11.1.2 의 추정 (Marginal MLE + Gauss-Hermite, 이항/순서형과 같은 toolkit) 까지 정리. § 11.2 의 mental health service utilization 응용, § 11.3 의 competing risk survival (organ transplantation 응용) 후속 sub-post 미리보기 포함.

Statistics
저자

Kwangmin Kim

공개

2026년 05월 06일

1 들어가며 — Ch.11 의 자리와 명목 GLMM 의 동기

Ch.10 (순서형 GLMM) 가 순서가 있는 3+ 범주를 다뤘다면, Ch.11 은 그 자연 확장으로 순서가 없는 3+ 범주 를 다룬다. 가장 일반적 categorical 응답 모형 — 모든 다른 모형 (이항, 순서, 비례 위반 ordinal) 의 상위 framework.

Ch.4-13 안의 자리
Chapter 모형 응답 형태
Ch.4-5 MRM 연속
Ch.6-7 MRM 변형 연속
Ch.8 GEE 자유 (marginal)
Ch.9 GLMM 이항 0/1
Ch.10 GLMM 순서형 1, 2, …, C (순서)
Ch.11 GLMM 명목 1, 2, …, C (비순서)
Ch.12 GLMM 카운트 0, 1, 2, …
Ch.13 GLMM 다양 3 수준

→ Ch.11 은 categorical 응답의 가장 일반적 모형. 다른 categorical 모형 (이항, 순서) 이 명목 모형의 제약 사례.

한 줄 요약

“Ch.11 = Ch.10 의 ordinal 모형의 두 제약 (회귀 계수가 \(c\) 무관 + random effect 분산 공통) 을 모두 풀고 각 범주에 별도의 회귀 계수와 분산 을 허용. Reference cell formulation (식 11.1-11.2) 또는 Bock 의 general contrast (식 11.3-11.5) 두 표기. Extremal concept (Bock 1972) — 각 범주에 별도 잠재 변수 (\(C\) 개) — 로 ordinal 의 threshold concept (1 개) 와 대비. 추정은 § 9.6, 10.2.4 의 toolkit 그대로 (marginal MLE + Gauss-Hermite). 각 범주에 별도 ICC (\(C-1\) 개). § 11.2 의 mental health 응용 (3 범주 의료 이용), § 11.3 의 organ transplantation (3 결과 competing risk) 두 illustration 으로 시연.”

본 overview 의 절 구성 (Hedeker §11 의 4 절 → 5 주제로 정리):

  • § 11.1 본문 — 명목 모형의 정의 (식 11.1-11.2, 11.3-11.5).
  • § 11.1.1 ICC — 범주별 분리.
  • § 11.1.2 추정 — 이항/순서형 framework 의 직접 적용.
  • § 11.2-11.3 두 응용 사례의 미리보기.
  • § 11.4 chapter 의 핵심 메시지.

2 § 11.1 본문 — Mixed-Effects Multinomial Regression

2.1 명목 vs 순서형 — 두 핵심 차이

Ordinal vs Nominal Mixed-Effects 모형의 결정적 차이
항목 Ordinal (Ch.10) Nominal (Ch.11)
응답 형태 1, 2, …, C (순서 있음) 1, 2, …, C (순서 없음)
회귀 계수 단일 셋 \(\beta\) (모든 cumulative 동일) \(C-1\) 개 셋 \(\beta_c\) (범주별)
잠재 변수 framework Threshold (1 개 잠재) Extremal (\(C\) 개 잠재)
Random effect 분산 단일 \(\sigma_v\) (공통) \(C-1\)\(\sigma_c\) (범주별)
모수 절약성 절약적 모수 폭발
가정 강도 강한 (proportional odds) 약한 (제약 없음)
ICC 단일 \(C-1\)
직관 — 두 모형의 자리

Ordinal 은 명목의 제약 사례:

  • Ordinal (proportional odds): 모든 \(\beta_c = \beta\) (단일 셋). 가장 강한 제약.
  • Partial proportional odds (§ 10.2.1): 일부 covariate 만 \(\beta_c\) 다름.
  • Nominal: 모든 covariate 의 \(\beta_c\) 가 자유. 가장 일반적.

모수 수의 폭발:

모형 회귀 계수 Random effects 분산
Ordinal PO (\(p\) covariate, \(C\) 범주) \(p\) 1
Partial PO (\(h\) 위반) \(p + h(C-2)\) 1
Nominal \(p(C-1)\) \(C-1\)

→ 명목 모형이 가장 유연 + 가장 비싼 (모수 많음, sparse 데이터에 추정 불안정).

언제 명목 모형이 필요한가:

  1. 응답이 진짜 비순서: 정당 (republican/democrat/undecided), 의료 이용 형태 (inpatient/outpatient/emergency), 직업 분류 (manager/clerk/labor).
  2. 순서가 있어 보이지만 비례 가정 강하게 깨짐: § 10.2.1 partial PO 가 적합 안 되거나 너무 많은 covariate 가 위반.
  3. 각 범주에 별도 효과 메커니즘: 각 범주에 다른 인과 메커니즘 — 단일 잠재 변수로 표현 불가.

2.2 식 (11.1-11.2) — Reference Cell Formulation

Multinomial logit — 기본 형태

\(Y_{ij} \in \{1, 2, \ldots, C\}\). \(c = 1\) 을 reference category 로 두면:

\[ p_{ijc} = \Pr(Y_{ij} = c \mid \theta) = \frac{\exp(z_{ijc})}{1 + \sum_{h=2}^C \exp(z_{ijh})} \quad (c = 2, 3, \ldots, C) \tag{11.1} \]

\[ p_{ij1} = \Pr(Y_{ij} = 1 \mid \theta) = \frac{1}{1 + \sum_{h=2}^C \exp(z_{ijh})} \tag{11.2} \]

Multinomial logit:

\[ z_{ijc} = x_{ij}^\top \beta_c + z_{ij}^\top T_c \theta_i \]

  • \(\beta_c\): \(c\) 번째 범주의 회귀 계수 (\(p \times 1\)).
  • \(T_c\): \(c\) 번째 범주의 Cholesky factor (\(r \times r\)).
  • \(\theta_i \sim \mathcal{N}_r(0, I)\): 표준화 random effects.

Reference 범주는 모수 0 (\(\beta_1 = 0, T_1 = 0\)).

직관 — Reference cell 의 의미

식 (11.1) 의 형태가 표준 multinomial logit 과 동일. 차이는:

  • \(z_{ijc}\) 에 random effects \(z_{ij}^\top T_c \theta_i\) 가 추가됨.
  • 각 범주의 \(T_c\) 가 자유 — 범주별로 다른 환자 이질성.

해석:

  • \(\beta_c\): “\(c\) 번째 범주에 응답할 odds 가 reference 범주 대비 covariate 에 따라 어떻게 변하는가”.
  • 예: \(c = 2\) vs reference (1): \(\log(p_{ij2}/p_{ij1}) = z_{ij2}\).

Reference 범주 선택:

  • 보통 가장 흔한 또는 가장 base 범주를 reference 로.
  • 예시 (의료 이용): “no care” 를 reference, “outpatient” 와 “inpatient” 가 비교 대상.
  • 정당: “undecided” 를 reference, “democrat” 과 “republican” 가 비교 대상.

\(C-1\) 개의 별도 회귀: 각 비교가 독립 — 한 범주의 효과가 다른 범주에 직접 영향 없음. 단, 모든 확률의 합 = 1 제약은 자동.

2.3 Extremal Concept — Bock (1972) 의 잠재 변수 framework

\(C\) 개 잠재 변수의 동시 모형

식 (11.6) 의 잠재 변수 표현:

\[ y_{ijc} = x_{ij}^\top \beta_c + \sigma_c \theta_i + \epsilon_{ijc} \quad (c = 1, 2, \ldots, C) \tag{11.6} \]

각 범주에 별도의 잠재 변수 \(y_{ijc}\). 관측 응답:

\[ Y_{ij} = c \iff y_{ijc} = \max_{c'} y_{ijc'} \]

— “최대 잠재 변수의 범주가 관측 범주”.

\(\epsilon_{ijc}\) 는 type I extreme-value 분포 (Gumbel) — multinomial logit link 의 자연 잡음 분포.

직관 — Extremal Concept vs Threshold Concept

Threshold concept (Ch.10 ordinal):

  • 잠재 변수 1 개 (\(y_{ij}\)).
  • 절단점 \(\gamma_1, \ldots, \gamma_{C-1}\) 이 응답 결정.
  • \(Y = c \iff \gamma_{c-1} \leq y < \gamma_c\).

Extremal concept (Ch.11 nominal):

  • 잠재 변수 \(C\) 개 (\(y_{ij1}, \ldots, y_{ijC}\)).
  • 각 범주가 별도 잠재 변수 — 각자 covariate 효과와 random effects.
  • \(Y = c \iff y_{ijc} = \max y_{ijc'}\).

비유:

  • Threshold: “환자의 잠재 중증도 \(y\) 가 어느 구간에 떨어졌는가”. 단일 측정 척도.
  • Extremal: “환자가 각 정당 (또는 의료 이용 형태) 에 대해 별도 효용 \(y_c\) 를 가지고, 가장 효용 큰 것을 선택”. 효용 (utility) 최대화 모형 — 경제학의 random utility model (McFadden 1974).

Bock (1972, 1975) 의 통합: 두 concept 모두 Thurstone (1927) 이 psychophysics 에 도입. dichotomous case 에서만 등가 (\(C = 2\)).

경제학·마케팅 응용 — Extremal concept 가 자연:

  • 소비자가 여러 제품 중 효용 최대 선택.
  • 통근자가 여러 교통수단 중 시간·비용 효용 비교.
  • 정당 지지자가 정당별 정책 적합도 비교.

→ “잠재 효용 \(y_c\)” 가 직접 임상·경제적 의미. ordinal 의 threshold 보다 직관적인 분야.

2.4 식 (11.3-11.5) — General Contrast Formulation (Bock 1972)

Bock 의 일반 표기

특정 reference cell 에 한정되지 않은 일반 contrast 표현:

\[ p_{ijc} = \frac{\exp(z_{ijc})}{\sum_{h=1}^C \exp(z_{ijh})} \quad (c = 1, 2, \ldots, C) \tag{11.3} \]

\[ z_{ijc} = x_{ij}^\top \Gamma d_c + (z_{ij}^\top \otimes \theta_i^\top) J_{r^*}^\top \Lambda d_c \tag{11.4} \]

표기:

  • \(D = [d_1, d_2, \ldots, d_C]\): \((C-1) \times C\) contrast matrix.
  • \(d_c\): \(D\)\(c\) 번째 column (\(C-1 \times 1\)).
  • \(\Gamma\): \(p \times (C-1)\) 회귀 계수 matrix.
  • \(\Lambda = [v(T_1), v(T_2), \ldots, v(T_{C-1})]\): \(r^* \times (C-1)\) random effects 모수 matrix.
  • \(v(T_c)\): Cholesky factor \(T_c\) 의 자유 모수 vector (\(r^* = r(r+1)/2\) 개).
  • \(J_{r^*}\): Magnus (1988) elimination matrix.
Random Intercept 단순화 — 식 (11.5)

\(z_{ij} = 1\) (random intercept만), \(\theta_i\) 가 스칼라:

\[ z_{ijc} = x_{ij}^\top \Gamma d_c + \Lambda d_c \theta_i \tag{11.5} \]

여기서 \(\Lambda = [\sigma_1, \sigma_2, \ldots, \sigma_{C-1}]\) (\(1 \times (C-1)\) vector).

직관 — Contrast Matrix 의 자유

식 (11.3-11.4) 의 \(D\) matrix 가 어떤 비교를 추정할지 결정:

Reference cell 사례 (식 11.1-11.2 와 동일):

\[ D = \begin{bmatrix} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ 0 & 0 & 0 & \cdots & 1 \end{bmatrix} \]

→ 범주 2, 3, …, C 를 범주 1 (reference) 와 비교.

Helmert contrast (4 범주):

\[ D = \begin{bmatrix} -3/4 & 1/4 & 1/4 & 1/4 \\ 0 & -2/3 & 1/3 & 1/3 \\ 0 & 0 & -1/2 & 1/2 \end{bmatrix} \]

→ 첫 contrast: 범주 1 vs (2, 3, 4). 둘째: 범주 2 vs (3, 4). 셋째: 범주 3 vs 4.

이 형태는 continuation-ratio logit 모형 (Ten Have & Uttal 1994) 와 비슷 — 순차적 비교에 자연. 응답이 본질적으로 순서가 있을 때 ordinal cumulative logit 의 대안으로 사용.

Contrast 선택의 자유:

  • 모수의 해석을 사용자가 통제.
  • 같은 데이터에 다른 contrast → 다른 회귀 계수, 같은 fit (deviance, prediction 동일).
  • 보고에 가장 의미 있는 contrast 선택.

식 (11.3-11.4) 가 식 (11.1-11.2) 의 일반화: Reference cell 은 특정 \(D\) matrix 의 special case. 일반 표기가 더 강력하지만 표기 복잡 — 실무에서는 reference cell 이 흔함.

3 § 11.1.1 — Intraclass Correlation 의 범주별 분리

3.1 식 (11.6-11.7) — 잠재 변수와 ICC

식 (11.6) — 잠재 변수 모형

\[ y_{ijc} = x_{ij}^\top \beta_c + \sigma_c \theta_i + \epsilon_{ijc} \quad (c = 1, 2, \ldots, C) \tag{11.6} \]

식 (11.7) — Reference cell 표현

\(\beta_1 = 0, \sigma_1 = 0\) (reference 범주):

\[ y_{ijc} = x_{ij}^\top \beta_c + \sigma_c \theta_i + (\epsilon_{ijc} - \epsilon_{ij1}) \quad (c = 2, \ldots, C) \tag{11.7} \]

reference 대비 잠재 효용 차이.

직관 — 왜 잔차가 두 extreme-value 의 차이인가

식 (11.7) 의 \(\epsilon_{ijc} - \epsilon_{ij1}\) 의 분포 도출:

  1. \(\epsilon_{ijc}\) 가 type I extreme-value (Gumbel) 분포 (Maddala 1983).
  2. 두 독립 Gumbel 의 차이가 표준 logistic 분포 (McCullagh & Nelder 1989).
  3. \(\epsilon_{ijc} - \epsilon_{ij1} \sim \text{Logistic}(0, 1)\), 분산 \(\pi^2/3\).

이것이 multinomial logit 의 link 가 logistic 인 이유 — 잠재 잡음의 차이가 logistic.

ICC 도출:

\[ \widehat{r}_c = \frac{\widehat\sigma_c^2}{\widehat\sigma_c^2 + \pi^2/3} \quad (c = 2, \ldots, C) \]

각 범주 (reference 제외) 별 ICC. \(C-1\).

ordinal 과의 차이:

  • Ordinal: 단일 ICC (\(\sigma_v^2\) 가 모든 범주에 공통).
  • Nominal: \(C-1\) 개 ICC (각 범주의 \(\sigma_c\) 다름).

→ 명목 모형이 더 풍부 — “어느 범주에 환자 이질성이 더 큰가” 분석 가능.

임상적 해석 예시

의료 이용 (3 범주: no care / outpatient / inpatient) 의 mixed-effects multinomial:

  • 가정: no care 가 reference.
  • 추정 결과 예시:
    • \(\sigma_2 = 0.8\) (outpatient): \(r_2 = 0.64 / (0.64 + 3.29) = 0.16\).
    • \(\sigma_3 = 1.5\) (inpatient): \(r_3 = 2.25 / (2.25 + 3.29) = 0.41\).

해석:

  • “Inpatient 범주에서 환자 이질성이 큼” — 어떤 환자는 일관되게 inpatient 잘 가고, 어떤 환자는 잘 안 감.
  • “Outpatient 범주는 환자 이질성 작음” — 환자 차이가 작음.

→ inpatient 결정에는 환자 고유 특성 (만성 질환, 보험 종류 등) 이 큰 역할, outpatient 결정은 그렇지 않음.

임상 정책의 함의:

  • Inpatient 사용에 환자 segmentation 효과적.
  • Outpatient 는 일반 정책으로 충분.

이 정보가 단일 ICC (ordinal) 에서는 절대 못 얻음 — 명목 모형의 고유 가치.

4 § 11.1.2 — Parameter Estimation

§ 9.6 / § 10.2.4 의 직접 적용

추정 절차가 이항 (§ 9.6) / 순서형 (§ 10.2.4) 와 동일한 framework:

  1. Conditional likelihood: 식 (11.1-11.2) 의 곱 (multinomial 의 categorical 우도).
  2. Marginal likelihood: random effects \(\theta\) 에 대한 적분.
  3. Marginal MLE: \(\log L = \sum \log h(Y_i)\) 최대화.
  4. Score: chain rule 로 도출 — 각 \(\beta_c\) 에 대한 미분.
  5. Fisher scoring: 식 (9.47), (10.22) 와 같은 update.
  6. Gauss-Hermite quadrature: random effects 적분 근사.
직관 — 새로 배울 것 거의 없음

명목 모형 추정의 두 추가 부담:

  1. 모수 폭발: \(p(C-1)\) 회귀 계수 + \(C-1\) 분산. 차원 증가.
  2. 각 범주별 score: \(C-1\) 개 회귀 계수 셋에 대한 별도 score.

그러나 알고리즘 구조는 동일:

  • Conditional likelihood 가 multinomial → cell 확률 곱 (식 11.1 의 직접 적용).
  • 각 noun에서 random effects 적분 → Gauss-Hermite.
  • Fisher scoring update.

§ 9.6 의 toolkit 그대로 + 모수 차원 확장.

소프트웨어 지원:

  • SAS PROC NLMIXED: 직접 코딩 가능.
  • R mlogit: single-level multinomial 만.
  • R nnet::multinom: single-level.
  • R mclogit: mixed-effects multinomial 가능.
  • Bayesian: brms::brm(family = categorical()), Stan 직접 코딩.
  • Hedeker MIXNO (1999): mixed-effects multinomial 의 표준 도구.

계산 부담:

  • \(C - 1\) 개 회귀 셋 + \(C - 1\) 차원 random effects → Gauss-Hermite 점 수 폭발.
  • 5+ 범주 + 다중 random effects 면 Bayesian (brms, Stan) 우회 권고.

5 후속 절의 미리보기

5.1 § 11.2 — Health Services Research Example

정신 건강 의료 이용 (3 범주 nominal)

응답: mental health service utilization 의 3 범주 — 분야별 응용.

다중 random effects + multinomial mixed-effects 의 시연.

자세한 분석은 후속 sub-post.

5.2 § 11.3 — Competing Risk Survival Models

명목 모형의 생존 분석 응용

이산 시간 competing risk survival — 사건이 여러 종류 (\(C - 1\) 종류) 일 때.

§ 10.2.3 의 single risk discrete-time PH 모형의 자연 확장 — survival outcomes 가 본질적으로 nominal (사건 종류 X 발생 시점).

§ 11.3.1: Waiting for Organ Transplantation:

  • 응답: 장기 이식 대기 중 결과 — 이식 / 사망 / 계속 대기 (3 범주).
  • “이식” 과 “사망” 이 competing risks (한 사건이 다른 사건 차단).
  • Mixed-effects multinomial 으로 두 risk 의 동시 모형화.

→ 명목 모형의 강력한 응용 — 단일 outcome (생존 vs 사망) 만 보는 표준 PH 모형의 한계 극복.

자세한 분석은 후속 sub-post.

6 § 11.4 — Chapter 의 핵심 메시지 (요약)

Ch.11 의 5 가지 핵심 메시지
  1. 명목 모형은 가장 일반적 categorical GLMM: 이항 (Ch.9), 순서 (Ch.10), partial PO 의 모든 제약을 풀고 각 범주에 자유로운 효과 허용.

  2. Extremal concept (Bock 1972) 가 toolkit 의 자연 표현: 각 범주에 잠재 효용 \(y_c\), 최대값 선택. 경제학 (random utility) 과 직접 연결.

  3. 모수 절약성과 유연성의 tradeoff: \(p(C-1)\) 회귀 + \(C-1\) 분산 → ordinal 보다 훨씬 많음. Sparse 데이터에는 추정 불안정.

  4. 추정 framework 는 일관: § 9.6 / § 10.2.4 의 marginal MLE + Gauss-Hermite + Fisher scoring 을 그대로 적용. 새로 배울 알고리즘 없음.

  5. Competing risk 응용: 이산 시간 multiple events 에 자연 — § 10.2.3 의 single risk PH 의 일반화.

7 응용 분야

분야 활용 비순서 범주
의료 이용 진료 형태 추적 inpatient / outpatient / emergency / no care
장기 이식 대기 결과 transplanted / died / still waiting
정치 분석 정당 지지 republican / democrat / undecided / other
직업 직업 분류 manager / professional / clerk / labor
교통 통근 수단 car / bus / subway / bike / walk
마케팅 제품 선택 brand A / B / C / none
학교 졸업 후 진로 college / job / military / unemployed
약물 사용 사용 패턴 none / occasional / regular / daily

8 코드 예시

8.1 Step 1: Multinomial Probability 직접 계산

import numpy as np


def multinomial_probs(z: np.ndarray) -> np.ndarray:
    """식 (11.3): general multinomial probability.

    z: shape (n, C) — 각 범주의 z_ijc.
    Returns: shape (n, C) cell 확률.
    """
    exp_z = np.exp(z - z.max(axis=1, keepdims=True))  # 수치 안정
    return exp_z / exp_z.sum(axis=1, keepdims=True)


def multinomial_probs_reference(z: np.ndarray) -> np.ndarray:
    """식 (11.1-11.2): reference cell formulation (c=1 reference).

    z: shape (n, C-1) — 범주 2, ..., C 의 z_ijc (c=1 의 z 는 0 가정).
    Returns: shape (n, C) cell 확률 — 첫 열이 reference.
    """
    n, C_minus_1 = z.shape
    z_full = np.column_stack([np.zeros(n), z])  # reference c=1: z=0
    return multinomial_probs(z_full)


# 단순 사례: 4 범주 + 두 환자 + 단일 covariate
beta_c = np.array([0.5, 1.0, -0.5])  # 범주 2, 3, 4 의 회귀 계수
x = np.array([0, 1])  # 두 환자

# z_ijc for c = 2, 3, 4
z = x[:, None] * beta_c[None, :]  # shape (2, 3)
probs = multinomial_probs_reference(z)
print("Cell 확률 (4 범주):")
print(f"  x=0: {probs[0].round(3)}")
print(f"  x=1: {probs[1].round(3)}")
print(f"  합 검증: {probs.sum(axis=1)}")
검증 포인트
  • 각 환자의 cell 확률 합이 1.
  • \(x = 1\) 그룹에서 양의 \(\beta_2 = 0.5, \beta_3 = 1.0\) 효과로 범주 2, 3 확률 ↑.
  • 음의 \(\beta_4 = -0.5\) 로 범주 4 확률 ↓.
  • Reference 범주 1 의 확률은 다른 범주 합산의 보수.

8.2 Step 2: Mixed-Effects Multinomial 시뮬레이션

import numpy as np
import pandas as pd


def simulate_multinomial_mixed(n_subjects: int, n_times: int,
                                beta_c: np.ndarray, sigma_c: np.ndarray,
                                seed: int = 2026) -> pd.DataFrame:
    """식 (11.6) 의 잠재 변수 표현으로 nominal 데이터 생성.

    각 범주 c (reference 제외) 에 별도 회귀 계수 + random intercept.
    각 시점에 C 개 잠재 효용 → 최대값의 범주 선택.
    """
    rng = np.random.default_rng(seed)
    C_minus_1 = len(beta_c)
    C = C_minus_1 + 1

    rows = []
    for i in range(n_subjects):
        # 환자별 random intercepts (각 범주별)
        upsilon = sigma_c * rng.normal(size=C_minus_1)

        for t in range(n_times):
            # 각 범주의 잠재 효용 (식 11.6)
            x_ij = t  # 시간 covariate
            y_latent = np.zeros(C)
            for c_idx in range(1, C):  # c = 2, ..., C
                # y_ijc = beta_c * x + upsilon_c + epsilon (Gumbel)
                eta = beta_c[c_idx - 1] * x_ij + upsilon[c_idx - 1]
                # Type I extreme value 잡음
                eps = -np.log(-np.log(rng.uniform()))
                y_latent[c_idx] = eta + eps
            # Reference 범주 c=1: beta=0, sigma=0
            y_latent[0] = -np.log(-np.log(rng.uniform()))

            # 최대 잠재 효용의 범주 선택
            Y = y_latent.argmax() + 1  # 1, 2, ..., C
            rows.append({"subject": i, "time": t, "Y": Y})

    return pd.DataFrame(rows)


# 4 범주 + 시간 효과 시뮬레이션
beta_c = np.array([0.3, 0.6, -0.2])  # 범주 2, 3, 4 의 시간 효과
sigma_c = np.array([0.8, 1.2, 0.5])  # 범주별 random intercept SD

df = simulate_multinomial_mixed(n_subjects=200, n_times=5,
                                  beta_c=beta_c, sigma_c=sigma_c)
print(f"전체: {len(df)} 행, {df['subject'].nunique()} 환자")
print(f"\n시점별 응답 분포:")
print(df.groupby('time')['Y'].value_counts().unstack(fill_value=0))
Extremal Concept 의 직접 구현

위 코드가 extremal concept 의 정확한 표현:

  • 각 환자, 시점, 범주 마다 잠재 효용 \(y_{ijc}\) 계산.
  • Type I extreme value (Gumbel) 잡음 추가.
  • 최대 효용의 범주 선택.

McFadden (1974) 의 random utility model 과 정확히 같은 mechanism. 경제학 / 마케팅의 선택 모형 표준.

검증: 시점이 지남에 따라 양의 \(\beta_c\) 인 범주 (2, 3) 의 비율 ↑, 음의 \(\beta_c\) 인 범주 (4) 의 비율 ↓.

8.3 Step 3: Multinomial Logit 적합 (R mlogit)

library(mlogit)


# Single-level multinomial 적합
df_long <- mlogit.data(df, choice = "Y", shape = "wide", varying = NULL)

# 시점 효과만
fit <- mlogit(Y ~ 0 | time, data = df_long, reflevel = "1")
summary(fit)

# 추정값 확인 (시뮬레이션 진짜 모수와 비교)
coef(fit)
R mlogit 의 출력
  • 각 범주 (reference 제외) 별 별도 회귀 계수.
  • 시간 효과 추정 → 진짜 \(\beta_c = (0.3, 0.6, -0.2)\) 와 비교.

mlogit 은 single-level (random effects 없음). Mixed-effects 는 다음 단계.

8.4 Step 4: Mixed-Effects Multinomial (R mclogit)

library(mclogit)


# Mixed-effects multinomial — random intercept per category
df$Y <- as.factor(df$Y)
fit_mixed <- mblogit(Y ~ time, random = ~1 | subject,
                     data = df, baseline = "1")
summary(fit_mixed)

# 각 범주별 회귀 계수 + random intercept SD
# 범주별 ICC 계산 (식 §11.1.1)
sigma_c_hat <- attr(VarCorr(fit_mixed), "sd")  # 추정 SD vector
icc_c <- sigma_c_hat^2 / (sigma_c_hat^2 + pi^2 / 3)
cat("범주별 ICC:\n")
print(icc_c)
대안 패키지
  • R mclogit::mblogit: mixed-effects multinomial — 가장 표준.
  • R brms::brm(family = categorical()): Bayesian, 가장 유연.
  • SAS PROC NLMIXED: frequentist 의 정확한 적합.
  • Hedeker MIXNO: 명목 모형의 표준 도구 (논문 출판용).

mclogit 의 장점: lme4 와 비슷한 syntax, 일반 mixed-effects 사용자에게 친숙. 단점: 다중 random effects 에 제약, 큰 차원에 느림.

Bayesian 우회:

  • 큰 모수 차원 (5+ 범주 또는 다중 random effects) → brms 또는 Stan 직접.
  • Prior 로 약한 효과 정규화 → 추정 안정성.

9 관련 주제

선행 지식

후속 주제 (Ch.11 sub-posts)

  • § 11.2 — Health Services Research Example (3 범주 의료 이용 nominal)
  • § 11.3 — Competing Risk Survival Models
    • § 11.3.1: Waiting for Organ Transplantation
  • § 11.4 — Ch.11 Summary

관련 개념

  • Bock (1972, 1975) — Multinomial logit + extremal concept 원전
  • Thurstone (1927) — Threshold + extremal concept psychophysics 도입
  • McFadden (1974) — Random utility model (경제학 / 마케팅)
  • Hedeker (2003) — Mixed-effects multinomial with general contrasts
  • Hartzel et al. (2001) — Clustered ordinal/nominal 통합 framework
  • Maddala (1983) — Type I extreme value 분포
  • McCullagh & Nelder (1989) — Logistic = difference of two extreme values
  • Ch.12 GLMM 카운트 — Categorical 의 다른 확장 (Poisson)
  • § 10.2.3 Discrete-time PH — § 11.3 의 single risk 사례 (대비)

Subscribe

Enjoy this blog? Get notified of new posts by email: