태그 보관물: 중심화

Chap06. 예측 변수 중심화와 맥락 효과

안녕하세요!

오늘은 다층모형(Multilevel Modeling) 분석의 핵심이면서도 많은 연구자가 가장 헷갈려 하는 주제, 바로 “예측변수의 중심화(Centering Predictors)”“맥락 효과(Contextual Effects)”에 대해 살펴보겠습니다. “학교 현장의 데이터”를 예시로 들어 초등학생도 이해할 수 있는 직관적인 설명과 대학원 수준의 수리적 엄밀함을 모두 갖춘 형태로 재구성해 드리겠습니다.

분석 도구로는 jamovi의 사용법을 설명하되, jamovi의 기반이 되는 R 코드를 함께 제시하여 모의 데이터 생성부터 분석, 시각화까지 완벽하게 구현해 드리겠습니다.


1. 다층분석 여행을 위한 시나리오: “수학 불안”과 “학업 성취”

자, 우리가 교육청의 의뢰를 받은 연구자라고 상상해 봅시다. 우리는 ‘수학 불안(Math Anxiety)’‘수학 문제 해결력(Math Problem Solving)’에 미치는 영향을 알고 싶습니다.

  • 데이터 구조: 학생(ii)들이 학교(jj)에 소속된 2수준(2-level) 구조입니다.
  • 변수:
    • yijy_{ij} (종속변수): 수학 문제 해결력 점수
    • xijx_{ij} (독립변수): 수학 불안 점수 (높을수록 불안함)

단순 회귀분석과 달리, 다층모형에서는 이 xijx_{ij}(불안 점수)를 그냥 넣을지, 아니면 가공해서 넣을지에 따라 결과 해석이 완전히 달라집니다. 여기서 “가공”하는 방법이 바로 중심화(Centering)입니다.


2. 왜 중심화(Centering)가 중요한가요?

단일 수준(Single-level) 회귀분석에서는 점수를 중심화(예: 평균 빼기)하더라도 절편만 바뀌고 기울기는 그대로입니다. 하지만 다층모형에서는 중심화 방식에 따라 기울기 추정치(Slope)모형 적합도가 모두 바뀔 수 있습니다.

이유는 간단합니다. 학생의 점수(xijx_{ij})는 두 가지 정보를 동시에 담고 있기 때문입니다.

xijx=(xijxj)+(xjx)x_{ij} – \bar{x} = (x_{ij} – \bar{x}_j) + (\bar{x}_j – \bar{x})

  1. 학교 내 위치 (WxW_x): 우리 학교 친구들에 비해 내가 얼마나 불안한가? (xijxj)(x_{ij} – \bar{x}_j)
  2. 학교 간 차이 (BxB_x): 우리 학교가 다른 학교에 비해 평균적으로 얼마나 불안한가? (xjx)(\bar{x}_j – \bar{x})

이 두 가지를 어떻게 처리하느냐에 따라 전체 평균 중심화(CGM)집단 평균 중심화(CWC)로 나뉩니다.


3. 두 가지 중심화 방법: CGM vs. CWC

(1) 전체 평균 중심화 (Grand Mean Centering: CGM)

모든 학생의 점수에서 전체 평균(x\bar{x})을 뺍니다.

  • 수식: xijxx_{ij} – \bar{x}
  • 의미: “전국 평균에 비해 내 불안도가 얼마나 높은가?” (절대적인 수준)
  • 특징:
    • 원점수와 정보량이 같습니다. 단지 0점의 위치만 바뀝니다.
    • 학교 간 차이(학교 평균의 차이)가 그대로 보존됩니다.
    • 따라서 CGM을 사용한 기울기(βCGM\beta_{CGM})는 학생 개인의 효과와 학교 분위기의 효과가 섞여 있는(Composite) 값입니다.

(2) 집단 평균 중심화 (Group Mean Centering: CWC)

학생의 점수에서 그 학생이 속한 학교의 평균(xj\bar{x}_j)을 뺍니다. 이를 ‘맥락 내 중심화(Centering Within Context)’라고도 합니다.

  • 수식: xijxjx_{ij} – \bar{x}_j
  • 의미: “우리 학교 친구들에 비해 내가 얼마나 더 불안한가?” (상대적인 수준)
  • 특징:
    • 학교 간 차이를 완전히 제거합니다. 모든 학교의 평균이 0이 됩니다.
    • 이 변수는 오직 학교 내(Within-cluster) 변동만 담고 있습니다.
    • 따라서 CWC를 사용한 기울기(βCWC\beta_{CWC})는 순수한 개인 수준(학생 수준)의 효과만을 추정합니다.

(위 태그는 CWC의 개념인 ‘개구리 연못 효과(Frog Pond Effect)’를 시각적으로 이해하는 데 도움을 줄 수 있습니다. 내가 속한 연못(학교) 내에서의 상대적 위치를 의미합니다.)


4. 맥락 효과(Contextual Effects)와 “개구리 연못”

연구자가 흔히 범하는 실수는 “CWC가 학교 효과를 제거하니까 더 좋은 것 아닌가?”라고 생각하는 것입니다. 하지만 연구 질문(Research Question)에 따라 선택해야 합니다.

여기서 맥락 모형(Contextual Model)이 등장합니다. 이것은 개인의 점수(xijx_{ij})와 학교의 평균 점수(xj\bar{x}_j)를 동시에 모형에 넣는 것입니다.

수식 비교

  1. CWC 모델: yij=β0+β1(xijxj)+β2(xjx)+y_{ij} = \beta_0 + \beta_{1}(x_{ij} – \bar{x}_j) + \beta_{2}(\bar{x}_j – \bar{x}) + \dots
    • β1\beta_1: 개인 효과 (학교 내에서 불안이 1단위 높을 때 성적 변화)
    • β2\beta_2: 맥락 효과(학교 효과) (학교 평균 불안이 1단위 높을 때 학교 평균 성적 변화)
  2. CGM 모델: yij=β0+β1(xijx)+β2(xjx)+y_{ij} = \beta_0 + \beta_{1}(x_{ij} – \bar{x}) + \beta_{2}(\bar{x}_j – \bar{x}) + \dots
    • 흥미롭게도, 이 경우 β2\beta_2는 학교 평균의 효과와 개인 효과의 차이(Difference)를 나타냅니다.

핵심 요약:

맥락 효과를 분석할 때 CGM과 CWC는 수학적으로 동등(Equivalent)합니다. 단지 해석이 다를 뿐입니다.

  • CWC의 β2\beta_2: 학교 평균이 성적에 미치는 직접적인 영향.
  • CGM의 β2\beta_2: (학교 효과) – (개인 효과)의 차이 값.

5. 교수님의 조언: 언제 무엇을 써야 할까요?

Enders 교수의 챕터 내용을 바탕으로 명쾌한 가이드라인을 표로 정리해 드립니다.

연구 목적추천 방법이유
1. 맥락 효과 확인 (학교 분위기가 중요한가?)둘 다 가능CGM과 CWC는 수학적으로 변환 가능하며 동일한 모형 적합도를 가짐.
2. 2수준 예측변수 (예: 학교 설립 유형)CGM2수준 변수는 학교 내 변동이 없으므로 CWC가 불가능함. 보통 전체 평균 중심화 사용.
3. 1수준 예측변수 (개인 특성)이론에 따라절대적 수치가 중요하면(예: 절대적인 공부 시간) CGM.
상대적 위치가 중요하면(예: 자아개념, 친구와의 비교) CWC.
4. 상호작용 효과 (조절효과 분석)CWC 권장CGM 사용 시 ‘수준 간 상호작용(Cross-level)’과 ‘집단 간 상호작용’이 뒤섞여 해석이 모호해질 위험이 큼.
5. 통제변수 (단순히 통제만 할 때)CGM공변량 분석(ANCOVA)처럼 학교 간 차이를 조정(Adjust)하여 2수준 효과를 순수하게 보려면 CGM이 적절함.

6. R과 jamovi를 이용한 실습

이제 이론을 실제 데이터로 구현해 보겠습니다.

(1) 가상 데이터 생성 (R Code)

이 코드는 챕터의 예제(Montague et al., 2011)와 유사한 구조로, 40개 학교에 25명씩 총 1,000명의 학생 데이터를 생성합니다.

R

# 필요한 패키지 로드
if(!require(MASS)) install.packages("MASS")
if(!require(lme4)) install.packages("lme4")
if(!require(tidyverse)) install.packages("tidyverse")
if(!require(jmv)) install.packages("jmv") # jamovi 연동

set.seed(12345)

# 1. 파라미터 설정
n_schools <- 40       # 학교 수
n_students <- 25      # 학교당 학생 수
total_n <- n_schools * n_students

# 2. 학교 수준(Level 2) 데이터 생성
# 학교 평균 불안감(School_Anxiety_Mean)과 학교 효과(u0j)
school_data <- data.frame(
  school_id = 1:n_schools,
  school_anx_mean = rnorm(n_schools, mean = 0, sd = 1), # 학교별 불안 평균
  u0j = rnorm(n_schools, mean = 0, sd = sqrt(4.8)) # 절편의 변동 (약 4.8) [cite: 156]
)

# 3. 학생 수준(Level 1) 데이터 생성
data <- data.frame(
  student_id = 1:total_n,
  school_id = rep(1:n_schools, each = n_students)
)

# 학교 데이터 병합
data <- merge(data, school_data, by = "school_id")

# 학생 개인의 불안감 생성 (학교 평균 + 개인 편차)
# Within-school SD = 1, Between-school SD = 1
data$math_anx_raw <- data$school_anx_mean + rnorm(total_n, mean = 0, sd = 1)

# 4. 종속변수(수학 문제해결력) 생성
# 모형: Y = 10.73 + 0.33*(Within_Anx) + 0.85*(Between_Anx) + Error [cite: 321]
# CWC 계수: 0.33, Contextual 계수(B2): 0.85 가정
beta_0 <- 10.73
beta_within <- 0.33
beta_between <- 0.85
sigma_e <- sqrt(4.54) # [cite: 156]

# 변수 계산
data$anx_group_mean <- ave(data$math_anx_raw, data$school_id, FUN = mean) # 집단 평균
data$anx_cwc <- data$math_anx_raw - data$anx_group_mean # CWC 변수
data$anx_grand_mean <- mean(data$math_anx_raw) # 전체 평균
data$anx_cgm <- data$math_anx_raw - data$anx_grand_mean # CGM 변수
data$school_anx_centered <- data$anx_group_mean - data$anx_grand_mean # 중심화된 학교 평균

# 종속변수 생성 수식 (Contextual Model 기반)
data$math_score <- beta_0 + 
  beta_within * data$anx_cwc + 
  beta_between * data$school_anx_centered + 
  data$u0j + 
  rnorm(total_n, 0, sigma_e)

# 데이터 확인
head(data)

(2) jamovi 분석 가이드

jamovi에서는 GAMj 모듈을 쓰거나 기본 Linear Models -> Mixed Model을 사용합니다. 하지만 가장 명확한 방법은 위 R 코드처럼 변수를 미리 계산(Compute)해서 투입하는 것입니다.

Step 1: 변수 생성 (jamovi ‘Data’ 탭)

  1. Group Mean (학교 평균) 만들기:
    • New Computed Variable -> 이름: Mean_Anx_School
    • 수식: VMEAN(Math_Anx, group_by=School_ID) (이 기능이 없다면 R에서 만들어 가져오는 것을 추천)
  2. CWC 변수 만들기:
    • New Computed Variable -> 이름: Anx_CWC
    • 수식: Math_Anx - Mean_Anx_School
  3. CGM 변수 만들기:
    • New Computed Variable -> 이름: Anx_CGM
    • 수식: Math_Anx - VMEAN(Math_Anx)

Step 2: 분석 실행 (Analyses -> Mixed Models)

  1. CWC 모형 분석:
    • Dependent Variable: Math_Score
    • Cluster: School_ID
    • Covariates: Anx_CWC (Fixed Effect에 추가)
    • Random Effects: Intercept에 School_ID 체크.
  2. 맥락 모형(Contextual Model) 분석:
    • Covariates에 Anx_CWCMean_Anx_School 두 개를 동시에 넣습니다.
    • 이렇게 하면 Anx_CWC의 계수는 개인 효과, Mean_Anx_School의 계수는 맥락 효과가 됩니다.

(3) R을 이용한 시각화 (CGM vs CWC)

교재의 [Figure 6.2]와 [Figure 6.3]을 재현하여 데이터 구조가 어떻게 바뀌는지 보여드리겠습니다.

R

# CGM 시각화 (학교 간 차이 보존됨)
p1 <- ggplot(data, aes(x = anx_cgm, y = math_score, color = as.factor(school_id))) +
  geom_point(alpha = 0.5) +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(title = "CGM: 학교 간 평균 차이가 보존됨", x = "수학 불안 (CGM)", y = "수학 점수")

# CWC 시각화 (모든 학교 평균이 0으로 정렬됨)
p2 <- ggplot(data, aes(x = anx_cwc, y = math_score, color = as.factor(school_id))) +
  geom_point(alpha = 0.5) +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(title = "CWC: 학교 간 차이 제거 (순수 개인차)", x = "수학 불안 (CWC)", y = "수학 점수")

# 그래프 출력
gridExtra::grid.arrange(p1, p2, ncol = 2)

이 코드를 실행하면, CGM 그래프에서는 학교별로 점수 뭉치가 좌우로 퍼져 있는 반면(학교 간 불안 차이 존재), CWC 그래프에서는 모든 학교의 점수 뭉치가 가운데(0)를 중심으로 수직 정렬된 것을 볼 수 있습니다.


7. 결론: 무엇을 기억해야 할까요?

  1. 중심화는 단순한 옵션이 아닙니다. 연구 결과의 의미를 바꿉니다.
  2. CWC는 학교 효과를 제거합니다. 오직 ‘내 학교 안에서의 상대적 위치’만 봅니다.
  3. CGM은 학교 효과와 개인 효과를 섞습니다. ‘전체에서의 절대적 위치’를 봅니다.
  4. 연구 질문에 귀를 기울이세요. “절대적인 점수”가 중요한지(CGM), “남들과의 비교”가 중요한지(CWC) 판단하십시오.

여러분의 연구가 단순한 통계 돌리기가 아니라, 데이터 속에 숨겨진 교육적 맥락을 정확히 짚어내는 통찰이 되기를 바랍니다.


참고문헌

  • Enders, C. K. (2013). Centering predictors and contextual effects. In M. A. Scott, J. S. Simonoff, & B. D. Marx (Eds.), The SAGE handbook of multilevel modeling (pp. 89-108). SAGE Publications.
  • Kreft, I. G. G., de Leeuw, J., & Aiken, L. S. (1995). The effect of different forms of centering in hierarchical linear models. Multivariate Behavioral Research, 30(1), 1–21.
  • Marsh, H. W., & Hau, K.-T. (2003). Big-Fish-Little-Pond effect on academic self-concept: A cross-cultural (26-country) test of the negative effects of academically selective schools. American Psychologist, 58(5), 364–376.