안녕하세요!
오늘은 일반화 선형 혼합 모형(Generalized Linear Mixed Models, GLMM)에 대해 살펴보겠습니다. “학교 현장의 데이터”를 예시로 들어 직관적인 설명과 수리적 엄밀함을 모두 갖춘 형태로 재구성해 드리겠습니다.
분석 도구로는 jamovi의 사용법을 설명하되, jamovi의 기반이 되는 R 코드를 함께 제시하여 모의 데이터 생성부터 분석, 시각화까지 완벽하게 구현해 드리겠습니다.
🎓 일반화 선형 혼합 모형(GLMM): 학교 밖으로 나간 수학 점수
반갑습니다. 오늘은 통계의 꽃이라 불리는 일반화 선형 혼합 모형(GLMM)에 대해 이야기해 보려 합니다. 이름만 들어도 머리가 지끈거릴 수 있지만, 사실 원리는 우리가 학교에서 겪는 일상과 매우 비슷합니다.
1. 왜 GLMM인가? (초등학생도 이해하는 비유)
여러분이 “우리 반 친구들이 이번 수학 시험에 합격할지 불합격할지(성공/실패)“를 맞히고 싶다고 상상해 봅시다.
- 일반적인 회귀분석(Linear Regression)은 “점수”처럼 연속적인 숫자를 예측할 때 씁니다. 하지만 우리는 “합격(1) 아니면 불합격(0)”인 두 가지 결과만 있습니다. 자로 키를 재는 게 아니라, 동전의 앞면/뒷면을 맞히는 것과 같죠. 이때 필요한 것이 ‘일반화(Generalized)’ 선형 모형입니다.
- 그런데 학생들은 ‘반(Class)’이라는 바구니에 담겨 있습니다. 어떤 반 선생님은 설명을 아주 잘해서 그 반 아이들이 전체적으로 합격률이 높을 수 있죠. 학생들끼리 서로 영향을 주고받는다는 뜻입니다. 이걸 무시하고 분석하면 엉터리 결과가 나옵니다. 그래서 ‘혼합(Mixed)’ 모형, 즉 다층 모형이 필요합니다.
이 둘을 합친 것이 바로 GLMM입니다. “결과가 0/1이거나 횟수(Count)이면서, 데이터가 집단(학교, 반)으로 묶여 있을 때” 사용하는 가장 강력한 도구죠.
2. 가상의 시나리오: “수학 챌린지 성공 예측 대작전”
우리의 목표는 다음과 같습니다.
- 연구 문제: 학생의 자기효능감과 교사의 교수법(혁신적 vs 전통적)이 수학 챌린지 성공 여부(성공/실패)에 미치는 영향은 무엇인가?
- 데이터 구조:
- 1수준(학생): 자기효능감(Self_Efficacy), 챌린지 성공여부(Success, 0=실패, 1=성공)
- 2수준(학급): 교수법(Teaching_Method, 0=전통적, 1=혁신적)
- 특이사항: 성공 여부는 0과 1로 된 이분형 변수(Binary outcome)입니다.
3. R을 이용한 모의 데이터 생성 및 시각화
먼저, 실제 학교 현장과 유사한 데이터를 만들어 보겠습니다.
R
# 필요한 라이브러리 로드
library(lme4)
library(ggplot2)
library(dplyr)
library(sjPlot) # 시각화용
# 1. 데이터 생성 설정
set.seed(2025) # 재현성을 위한 시드 설정
n_classes <- 50 # 학급 수 (2수준)
n_students <- 30 # 학급당 학생 수 (1수준)
N <- n_classes * n_students
# 2. 2수준(학급) 변수 생성
class_id <- rep(1:n_classes, each = n_students)
# 교수법: 절반은 전통적(0), 절반은 혁신적(1)
teaching_method <- rep(rep(c(0, 1), each = n_classes/2), each = n_students)
# 학급 효과 (Random Intercept): 학급마다 기본 성공률이 다름
class_effect <- rep(rnorm(n_classes, mean = 0, sd = 1.5), each = n_students)
# 3. 1수준(학생) 변수 생성
# 자기효능감: 평균 0, 표준편차 1인 정규분포
self_efficacy <- rnorm(N, mean = 0, sd = 1)
# 4. 성공 확률 계산 (로지스틱 모형)
# Logit(p) = b0 + b1*효능감 + b2*교수법 + 학급효과 + 오차
beta_0 <- -1.0 # 절편 (기본적으로 성공이 조금 더 어려움)
beta_1 <- 1.2 # 자기효능감의 효과 (클수록 성공 확률 높음)
beta_2 <- 0.8 # 혁신적 교수법의 효과 (있으면 성공 확률 높음)
logit_p <- beta_0 + beta_1 * self_efficacy + beta_2 * teaching_method + class_effect
prob <- 1 / (1 + exp(-logit_p)) # 확률로 변환
# 5. 결과 변수 생성 (0 또는 1)
success <- rbinom(N, size = 1, prob = prob)
# 데이터프레임 생성
data <- data.frame(
ClassID = factor(class_id),
StudentID = 1:N,
Success = factor(success, levels = c(0, 1), labels = c("Fail", "Pass")),
SelfEfficacy = self_efficacy,
TeachingMethod = factor(teaching_method, levels = c(0, 1), labels = c("Traditional", "Innovative"))
)
# 데이터 확인
head(data)
# CSV로 저장 (jamovi에서 불러오기 위함)
write.csv(data, "chap15.csv", row.names = FALSE)
📊 데이터 탐색적 시각화
데이터가 잘 만들어졌는지 그래프로 확인해 봅시다.
R
# 자기효능감에 따른 성공 여부 (교수법별 차이)
ggplot(data, aes(x = SelfEfficacy, y = as.numeric(Success)-1, color = TeachingMethod)) +
geom_point(alpha = 0.1) +
geom_smooth(method = "glm", method.args = list(family = "binomial"), se = TRUE) +
labs(title = "자기효능감과 수학 챌린지 성공 확률",
x = "자기효능감 (표준화)",
y = "성공 확률 (Probability of Pass)") +
theme_minimal()

4. 분석 방법: jamovi와 R
🛠️ jamovi 분석 절차
jamovi는 기본 메뉴만으로는 GLMM(특히 이분형 종속변수)을 분석하기 어렵습니다. 따라서 jamovi 라이브러리에서 GAMLj (General Analyses for Linear Models in jamovi) 모듈을 설치하여 사용해야 합니다.
- 데이터 불러오기: 위에서 생성한 데이터를 csv로 저장 후 jamovi에서 엽니다.
- 모듈 선택: 상단 메뉴
Analyses->GAMLj->Generalized Mixed Models선택. - 변수 설정:
- Dependent Variable:
Success(성공 여부) - Covariates:
SelfEfficacy(자기효능감) - Factors:
TeachingMethod(교수법) - Cluster (Random Effect grouping):
ClassID
- Dependent Variable:
- Random Effects 설정:
ClassID를 Random Intercept로 설정 (체크박스 선택).
- Family 설정:
- Distribution:
Binomial(이항분포) - Link function:
Logit(로짓)
- Distribution:
- 결과 해석: Fixed Effects의 p-value와 Random Effects의 분산(Variance)을 확인합니다.
💻 R 분석 코드 (GLMM 적합)
jamovi 내부에서 돌아가는 엔진과 동일한 lme4 패키지를 사용한 분석 코드입니다.
R
# GLMM 모델 적합
# family = binomial : 종속변수가 이분형(0/1)일 때 사용
glmm_model <- glmer(Success ~ SelfEfficacy + TeachingMethod + (1 | ClassID),
data = data,
family = binomial(link = "logit"))
# 결과 요약
summary(glmm_model)
5. 교재 내용의 심층 재구성: 이론과 해석
이제 첨부된 교재(SAGE Handbook)의 핵심 내용을 바탕으로 우리가 수행한 분석을 이론적으로 파헤쳐 보겠습니다.
5.1. 모형의 구조 (Specification)
GLMM은 4단계로 구성됩니다.
- 분포 선택: 종속변수 가 어떤 모양인지 결정합니다. 우리 예시는 성공/실패이므로 베르누이(Bernoulli) 분포를 따릅니다.
- 예측변수 선택: 자기효능감()과 교수법()을 포함합니다. 선형 예측식은 가 됩니다.
- 연결 함수(Link Function): 0과 1 사이의 확률()을 실수 전체 범위()인 선형 예측식()과 연결해야 합니다. 이때 로짓(Logit) 함수를 사용합니다.
- 임의 효과(Random Effects): 학급()을 임의 효과로 선언합니다. 이는 학급마다 성공률의 ‘출발선’이 다름을 의미하며, 정규분포 를 따른다고 가정합니다.
5.2. 추정 방법: 산을 오르는 법 (Fitting Methods)
GLMM에서 가장 어려운 점은 “계산”입니다. 일반적인 회귀분석처럼 공식을 딱 대입해서 답이 나오지 않습니다. 우도(Likelihood)라는 산의 정상을 찾아야 하는데, 그 과정에 안개(적분)가 껴 있습니다.
- 최우추정법(Maximum Likelihood, ML): 가장 이상적이지만, 계산이 매우 복잡하여 적분(Integration)이 필요합니다.
- 근사법: 이 적분을 해결하기 위해 가우스-헤르미트 구적법(Gauss-Hermite Quadrature)이나 라플라스 근사(Laplace Approximation)를 사용합니다. 이는 복잡한 곡면을 단순한 도형으로 근사시켜 넓이를 구하는 방식과 비슷합니다. jamovi와 R의
glmer는 기본적으로 이 방법을 사용합니다. - 경고: PQL(Penalized Quasi-Likelihood)이라는 방법도 있지만, 이분형 데이터(0/1)에서는 편향(Bias)이 심해 잘 쓰지 않습니다.
5.3. 조건부 vs 주변부 해석 (Conditional vs Marginal)
이 부분이 아주 중요합니다. GLMM의 결과()는 “특정 학급에 속한 학생 개인”에 대한 효과입니다(Conditional).
- GLMM (조건부): “내가 이 반에 계속 있으면서 자기효능감이 1 오르면, 나의 성공 오즈(Odds)는 얼마나 오르는가?”
- GEE (주변부): “전체 학생 평균적으로 봤을 때, 자기효능감이 높은 집단은 낮은 집단보다 성공률이 얼마나 높은가?”
일반적으로 로지스틱 모형에서는 조건부 효과가 주변부 효과보다 값이 더 크게(0에서 멀어지게) 추정됩니다. 우리는 학생 개인의 변화와 학급 효과에 관심이 있으므로 GLMM이 적합합니다.
6. 분석 결과 해석 및 보고 (APA 스타일)
R/jamovi 분석 결과를 바탕으로 보고서를 작성하는 예시입니다.
📝 결과 요약
“수학 챌린지 성공 여부에 대한 일반화 선형 혼합 모형(GLMM) 분석 결과, 자기효능감과 교수법은 통계적으로 유의한 영향을 미치는 것으로 나타났다.”
- 고정 효과(Fixed Effects):
- 자기효능감의 회귀계수는 1.370 ()로, 학생의 자기효능감이 높을수록 성공 확률이 유의하게 증가하였다. 오즈비(Odds Ratio)로 환산하면 로, 자기효능감이 1단위 증가할 때 성공 오즈는 약 3.9배 증가한다.
- 교수법(혁신적)의 효과는 0.227 ()로, 혁신적 교수법을 사용하는 학급의 학생이 전통적 교수법 학급 학생보다 성공할 확률은 통계적으로 유의미하지 않았다.
- 임의 효과(Random Effects):
- 학급 수준의 분산(Variance)은 3.221로 나타났다. 이는 학생의 개인 특성을 통제하고도 학급 간 성공률의 차이가 상당히 큼을 의미한다. 이를 통해 급내상관계수(ICC)를 계산하여 학급의 영향력을 보고할 수 있다.
📈 R을 이용한 결과 시각화 코드
R
# sjPlot 패키지를 이용한 깔끔한 시각화
library(sjPlot)
library(sjmisc)
# 1. 오즈비(Odds Ratio) 그래프 (Forest Plot)
plot_model(glmm_model,
type = "est",
transform = "exp", # 로그오즈를 오즈비로 변환
show.values = TRUE,
title = "수학 챌린지 성공 요인 (Odds Ratios)",
vline.color = "gray")
# 2. 예측 확률 그래프 (상호작용 효과 등 확인용)
plot_model(glmm_model,
type = "pred",
terms = c("SelfEfficacy", "TeachingMethod"),
title = "자기효능감과 교수법에 따른 성공 예측 확률")


7. 마무리 및 진단
GLMM을 사용할 때는 모델이 데이터에 잘 맞는지 꼭 확인해야 합니다. 특히 “과산포(Overdispersion)” 문제를 조심해야 합니다. 이는 우리가 가정한 것보다 데이터가 더 넓게 퍼져 있는 현상을 말하는데, 이항 분포나 포아송 분포 분석 시 자주 발생합니다. 만약 과산포가 의심되면 분포를 바꾸거나 관측 단위의 임의 효과를 추가하는 등의 조치가 필요합니다.
오늘 우리는 난이도가 높은 GLMM을 학교 현장 예시를 통해 정복해 보았습니다. 이 분석을 통해 여러분은 단순히 “누가 공부 잘하나”를 넘어, “어떤 환경(학급)에서 어떤 특성(효능감)이 성공을 이끄는지” 입체적으로 볼 수 있는 눈을 갖게 되었습니다.
참고문헌 (APA Style)
McCulloch, C. E., & Neuhaus, J. M. (2013). Generalized linear mixed models: Estimation and inference. In M. A. Scott, J. S. Simonoff, & B. D. Marx (Eds.), The SAGE handbook of multilevel modeling (pp. 271-286). SAGE Publications.
