안녕하세요!
오늘은 비선형 혼합 효과 모델(Nonlinear Mixed Effects Models)에 대해 살펴보겠습니다. “학교 현장의 데이터”를 예시로 들어 직관적인 설명과 수리적 엄밀함을 모두 갖춘 형태로 재구성해 드리겠습니다.
분석 도구로는 jamovi의 사용법을 설명하되, jamovi의 기반이 되는 R 코드를 함께 제시하여 모의 데이터 생성부터 분석, 시각화까지 완벽하게 구현해 드리겠습니다.
1. 왜 ‘비선형(Nonlinear)’ 모델이 필요할까요?
우리가 흔히 쓰는 ‘선형 모델(Linear Models)’은 계산이 쉽고 해석이 명확하다는 장점이 있습니다. 하지만 학교 현장에서 일어나는 실제 현상들은 직선으로 설명되지 않는 경우가 훨씬 많습니다.
- 선형 모델(Empirical Models): 관찰된 데이터를 잘 설명하기 위해 직선을 긋는 ‘경험적 모델’입니다. 데이터 범위 안에서는 잘 맞을지 몰라도, 범위를 벗어나면 예측력이 떨어질 수 있습니다.
- 비선형 모델(Mechanistic/Scientific Models): 데이터가 왜 그렇게 만들어졌는지, 즉 ‘생성 메커니즘’에 집중하는 ‘과학적 모델’입니다. 성장 곡선이나 학습 속도처럼 자연스러운 변화 과정을 반영하므로, 데이터가 없는 구간에 대해서도 더 정확한 예측이 가능합니다.
비선형 모델의 장점:
- 실제 관계를 더 잘 근사합니다.
- 관찰 데이터 범위를 벗어난 값에 대해서도 더 신뢰할 수 있는 예측을 제공합니다.
- 파라미터(Parameter) 자체가 자연적인 물리적/교육적 의미를 갖습니다 (예: 학생의 최대 학습 잠재력, 학습 속도 등).
2. 학교 현장 스토리: “우리 아이들의 단어 암기량은 어떻게 변할까?”
초등학교 1학년 학생들이 매일 아침 10분씩 영어 단어를 외운다고 가정해 봅시다. 시간이 지날수록 외운 단어 수는 늘어나겠지만, 처음에는 천천히 늘다가 어느 순간 급격히 늘고, 결국 인간의 한계 때문에 정체기에 접어들 것입니다. 이러한 ‘S자 곡선(Logistic Curve)’은 직선인 선형 모델로는 설명할 수 없습니다.
[모의 데이터 생성 및 분석을 위한 R 코드]
먼저 학교 현장과 유사한 데이터를 만들어 보겠습니다.
R
# 필요한 라이브러리 로드
library(nlme)
library(ggplot2)
# 1. 모의 데이터 생성 (학생 50명, 10회 측정)
set.seed(123)
n_students <- 50
n_days <- 10
data <- data.frame(
student = rep(1:n_students, each = n_days),
day = rep(1:n_days, n_students)
)
# 비선형 파라미터 설정 (Asym: 최대 암기량, xmid: 가속 지점, scal: 증가 속도)
# 학생마다 개인차(Random Effects) 부여
asym_pop <- 100 # 평균 최대 암기량 100개
xmid_pop <- 5 # 평균 5일째에 급격히 상승
scal_pop <- 1 # 증가 기울기 계수
# 학생별 랜덤 효과 생성
random_effects <- rnorm(n_students, 0, 5)
# 로지스틱 성장 곡선 적용
data$word_count <- with(data, {
asym_i <- asym_pop + random_effects[student]
asym_i / (1 + exp((xmid_pop - day) / scal_pop)) + rnorm(nrow(data), 0, 2)
})
# 데이터 확인
head(data)
# CSV로 저장 (jamovi에서 불러오기 위함)
write.csv(data, "chap13.csv", row.names = FALSE)
3. jamovi에서의 분석 방법
jamovi에서 비선형 혼합 모델을 직접 수행하려면 GAMLj 모듈이나 Rj Editor를 활용하는 것이 좋습니다. 기본 메뉴에 비선형 혼합 모델이 없을 경우, 다음과 같이 Rj Editor를 통해 분석합니다.
jamovi 분석 단계:
- Library 설치:
Rj - Editor에서nlme패키지를 호출합니다. - 모델 설정: 학생별로 다른 성장 곡선을 갖도록 ‘혼합 효과(Mixed Effects)’를 설정합니다.
- 수식 입력:
# nlme 패키지를 이용한 비선형 혼합 모델 분석
library(nlme)
model <- nlme(word_count ~ SSlogis(day, Asym, xmid, scal),
data = data,
fixed = Asym + xmid + scal ~ 1,
random = Asym ~ 1 | student,
start = c(Asym = 100, xmid = 5, scal = 1))
summary(model)
# Asym: 학생이 도달할 수 있는 '최종 암기량' (상한선)
# xmid: 학습 효율이 최대가 되는 '시점'
# scal: 암기량이 증가하는 '가속도'
4. 결과 해석 및 시각화
분석 결과, 우리는 학생 전체의 평균적인 학습 곡선뿐만 아니라, 특정 학생이 다른 학생에 비해 얼마나 더 빨리 배우는지(xmid), 혹은 잠재력이 얼마나 큰지(Asym)를 개별적으로 파악할 수 있습니다.
R
# 시각화 코드
library(tidyverse)
ggplot(data, aes(x = day, y = word_count, group = student)) +
geom_line(alpha = 0.3, color = "blue") + # 개별 학생 곡선
stat_summary(aes(group = 1), fun = mean, geom = "line", size = 1.5, color = "red") + # 전체 평균
labs(title = "학생별 영어 단어 암기량 성장 곡선",
x = "학습 일수(Day)",
y = "암기한 단어 수") +
theme_minimal()

5. 주의할 점 (Limitations)
비선형 모델은 강력하지만 몇 가지 주의사항이 있습니다:
- 복잡성: 데이터 생성 메커니즘을 정확히 모르면 모델을 세우기 어렵습니다.
- 계산의 어려움: 선형 모델과 달리 반복적인 계산 과정이 필요하며, 때로는 수렴(Convergence)되지 않아 결과가 나오지 않을 수도 있습니다.
- 샘플 사이즈: 파라미터를 안정적으로 추정하기 위해 충분한 양의 데이터가 필요합니다.
6. 참고문헌 (APA Style)
Wu, L., & Liu, W. (2010). Nonlinear models. In J. J. Hox & J. K. Roberts (Eds.), The SAGE Handbook of Multilevel Modeling (pp. 249-266). SAGE Publications. +1
