태그 보관물: Kline

Chap 07. 구조방정식 모형(SEM)의 가정과 실제

안녕하세요, 여러분.
이번에는 구조방정식 모형(SEM) 분석을 수행하기 전에 반드시 점검해야 할 ‘가정(Assumptions)’에 대해 깊이 있게 다뤄보겠습니다.

많은 연구자가 모델을 그리고, 데이터를 넣고, ‘실행(Run)’ 버튼을 누르는 데 급급합니다. 하지만 렉스 클라인(Rex B. Kline)이 인용한 앨런 알다(Alan Alda)의 말처럼, “여러분의 가정은 세상을 바라보는 창문입니다. 가끔 닦아내지 않으면 빛이 들어오지 않을 것입니다”. 가정을 무시한 분석 결과는 먼지 낀 창문으로 세상을 보는 것과 같아, 왜곡된 결론에 도달할 수 있습니다.

이 글은 학교 현장에서 마주할 수 있는 예시와 함께 재구성했습니다. 분석 도구로는 jamovi (SEMLj 모듈)를 중심으로 설명하되, 고급 기능이 필요한 경우 R (lavaan 패키지)을 함께 제시하겠습니다.

1. 서론: 왜 가정을 점검해야 하는가?

복잡한 다변량 통계 기법인 SEM은 표본 추출, 데이터의 성격, 변수 간의 관계에 대해 많은 가정을 전제로 합니다. 연구자가 자신의 결과가 어떤 전제 위에서 도출되었는지 설명할 수 없다면, 그 결과는 신뢰받기 어렵습니다. 최근 APA의 저널 보고 표준(JARS)에서도 이러한 가정에 대한 명시적 언급을 요구하고 있습니다.

2. 표본 추출에 대한 가정 (Sampling Assumptions)

2.1. 이상과 현실: 무작위 표본 vs. 편의 표본

전통적인 유의성 검정(Significance Testing)은 모집단으로부터의 단순 무작위 추출(Simple Random Sampling)을 가정합니다. 하지만 학교 현장에서 전국의 모든 중학생 명단을 확보하여 무작위로 뽑는 것은 거의 불가능합니다.

  • 현실 (교육 연구): 우리는 대개 편의 표본(Convenience Sampling)을 사용합니다. 예를 들어, “섭외가 가능한 A중학교 2학년 학생들”을 대상으로 하죠.
  • 문제점: 편의 표본에서 도출된 p-값(유의확률)이 과연 모집단을 대표할 수 있는가에 대한 논란이 있습니다.

2.2. 대처 방안

  1. 신뢰구간(Confidence Intervals) 보고: 단순한 유의성 여부(p < .05)보다는 파라미터 추정치의 신뢰구간을 제시하여 결과의 정밀성을 보여주는 것이 좋습니다.
  2. 이분법적 사고 지양: “유의하다/아니하다”로 나누기보다 정확한 p-값을 보고하고 효과크기를 논의하십시오.

3. 데이터 관련 가정 (Data-Related Assumptions)

3.1. 관측치의 독립성 (Independence of Observations)

SEM의 추정법은 점수들이 서로 독립적이라고 가정합니다.

  • 교육학적 위반 사례: 한 학급에 속한 학생들은 같은 담임 교사, 같은 교실 환경을 공유하므로 성적이나 태도가 비슷할 수 있습니다(군집화). 이 경우 독립성 가정이 위배됩니다.
  • 해결: 이럴 때는 다수준 SEM (Multilevel SEM)을 적용해야 합니다. (jamovi에서는 제한적일 수 있으므로 R의 lavaan.survey나 Mplus 등을 고려해야 합니다).

3.2. 다변량 정규성 (Multivariate Normality)

가장 널리 쓰이는 추정법인 최대우도법(ML, Maximum Likelihood)은 내생변수들이 조건부 다변량 정규분포를 따른다고 가정합니다.

  • 교육학적 위반 사례: ‘학교 폭력 경험 횟수’와 같은 변수는 대다수 학생이 ‘0’이고 소수만 높은 점수를 가지므로 정규분포를 심각하게 위배합니다.
  • 해결 (Robust FIML): 정규성이 깨진 경우, ML 대신 로버스트(Robust) ML 추정치를 사용해야 합니다. 이는 표준오차와 모델 적합도 지수를 교정해 줍니다.
    • jamovi Tip: SEMLj 모듈 옵션에서 EstimatorMLR (Robust Maximum Likelihood)로 설정하세요.

3.3. 척도의 연속성: 리커트(Likert) 척도 이슈

교육 심리 검사에서 “매우 그렇다(5점)” ~ “전혀 아니다(1점)”와 같은 리커트 척도를 자주 사용합니다. 이를 연속변수로 볼 수 있을까요?

  • 기준: 선택지가 6개 이상이고 분포가 대칭에 가깝다면 연속변수로 취급해도 큰 무리가 없습니다.
  • 주의: 선택지가 5개 이하이거나 분포가 심하게 치우친 경우, 이를 연속변수로 다루면 표준오차 편향 등의 문제가 발생합니다.
  • 해결: 이 경우 범주형 CFA (Categorical CFA)를 수행해야 하며, WLSMV (Robust Weighted Least Squares) 추정법을 사용하는 것이 좋습니다.

4. 결측 데이터 가정 (Missing Data Assumptions)

데이터가 빠진 경우(결측), 과거에는 단순히 그 케이스를 삭제(Listwise Deletion)했지만, 이는 데이터가 MCAR(완전 무작위 결측)일 때만 타당합니다.

  • MAR (무작위 결측): 결측이 다른 관측 변수와 관련이 있는 경우입니다. (예: 성적 낮은 학생이 우울 검사에 응답하지 않음, 단 성적 데이터는 있음).
    • 대부분의 현대적 기법(FIML, 다중대체)은 MAR을 가정합니다.
  • MNAR (비무작위 결측): 결측 자체가 결측된 변수의 값 때문에 발생한 경우입니다. (예: 너무 우울해서 우울 검사를 못함).
  • Jamovi/R 활용: FIML (Full Information Maximum Likelihood) 방식을 사용하면 결측치가 있어도 사용 가능한 모든 정보를 활용하여 추정하므로 삭제법보다 훨씬 우수합니다.

5. 방향성 및 인과관계 가정 (Directionality Assumptions)

SEM에서 화살표(XYX \rightarrow Y)를 그리는 것은 X가 Y의 원인이라는 가정이지, 분석 결과가 인과성을 입증하는 것은 아닙니다.

5.1. 등가 모델 (Equivalent Models)

  • 개념: XYX \rightarrow Y 모델과 YXY \rightarrow X 모델은 데이터 적합도가 수학적으로 완전히 동일할 수 있습니다.
  • 교육 예시: “자기효능감이 높아서 성적이 올랐다”는 모델은 “성적이 높아서 자기효능감이 올랐다”는 모델과 통계적으로 구분이 안 될 수 있습니다.
  • 해결: 통계 수치가 아닌, 이론적 배경이나 연구 설계(예: 종단 연구)로 방향성을 정당화해야 합니다.

5.2. 매개효과 (Mediation)

매개(XMYX \rightarrow M \rightarrow Y)를 주장하려면 시간적 선행성이 필수입니다.

  • 가정: 원인(X)은 매개변수(M)보다, 매개변수(M)는 결과(Y)보다 시간적으로 앞서야 합니다.
  • 경고: 횡단 연구(한 시점에서 한 번 조사) 데이터로 매개효과를 검증하는 것은 매우 조심스러워야 하며, 많은 가정이 필요합니다.

6. 측정 가정 (Measurement Assumptions)

6.1. 반영 지표 (Reflective) vs. 조형 지표 (Formative)

우리가 흔히 쓰는 요인분석 모델은 반영 지표(Reflective) 모델입니다 (LatentIndicatorsLatent \rightarrow Indicators).

  • 가정: 잠재변수가 변하면 모든 지표가 함께 변해야 하며, 지표들끼리는 높은 상관을 가져야 합니다.
  • 대안(조형 지표): 사회경제적 지위(SES)를 생각해 봅시다. 부모의 소득과 교육수준이 합쳐져서 SES를 형성합니다(IndicatorsCompositeIndicators \rightarrow Composite). 소득이 높다고 교육수준이 반드시 높은 것은 아닙니다(상관이 낮을 수 있음). 이 경우 조형 지표(Formative) 모델이 적합합니다.

[실습] Jamovi & R을 활용한 가정 점검 및 분석

이해를 돕기 위해 가상의 시나리오를 만들고 데이터를 생성해 보겠습니다.

1. 시나리오: 교사 지지와 학업 소진

  • 연구 주제: 중학생이 지각한 교사 지지(Teacher Support)학업적 자기효능감(Self-Efficacy)을 매개로 학업 소진(Burnout)에 미치는 영향
  • 변수:
    • TS (교사 지지): 5점 리커트, 4문항 (반영 지표)
    • SE (자기효능감): 5점 리커트, 4문항 (반영 지표)
    • BO (학업 소진): 5점 리커트, 4문항 (반영 지표)
  • 데이터 특성: 현실성을 위해 약간의 비정규성과 결측치를 포함하겠습니다.

2. R을 이용한 데이터 생성

Jamovi는 자체적인 데이터 생성 기능이 약하므로, R 코드로 데이터를 생성한 후 CSV로 저장하여 Jamovi에서 불러오는 과정을 가정합니다. (물론 R에서 바로 분석도 가능합니다.)

R

# 필요한 패키지 로드
if(!require(MASS)) install.packages("MASS")
if(!require(lavaan)) install.packages("lavaan")

set.seed(1228) # 재현 가능성을 위해 시드 설정

# 1. 표본 크기 설정 (N=300)
N <- 300

# 2. 잠재변수 간의 관계 설정 (공분산 행렬)
# TS -> SE (0.4), SE -> BO (-0.5), TS -> BO (-0.3) 정도의 상관 가정
Sigma <- matrix(c(1.0, 0.4, -0.4,
                  0.4, 1.0, -0.5,
                  -0.4, -0.5, 1.0), 
                nrow=3, ncol=3)
mu <- c(0, 0, 0)

# 잠재변수 점수 생성 (다변량 정규분포)
LatentData <- mvrnorm(n = N, mu = mu, Sigma = Sigma)
colnames(LatentData) <- c("F_TS", "F_SE", "F_BO")

# 3. 관측변수 생성 (측정 오차 포함)
# 요인부하량은 대략 0.7~0.8로 설정
# 5점 리커트 척도로 변환 (Rounding 및 절단)

make_item <- function(latent, loading, error_sd) {
  raw <- loading * latent + rnorm(N, 0, error_sd)
  # 5점 척도로 변환 (평균 3, 표준편차 1 정도가 되도록 이동 후 반올림)
  scaled <- round(raw + 3)
  scaled[scaled < 1] <- 1
  scaled[scaled > 5] <- 5
  return(scaled)
}

# 데이터 프레임 생성
Data <- data.frame(id = 1:N)

# 문항 생성
for(i in 1:4) Data[paste0("TS", i)] <- make_item(LatentData[,"F_TS"], 0.8, 0.6)
for(i in 1:4) Data[paste0("SE", i)] <- make_item(LatentData[,"F_SE"], 0.7, 0.7)
for(i in 1:4) Data[paste0("BO", i)] <- make_item(LatentData[,"F_BO"], 0.75, 0.65)

# 4. 결측치(Missing Data) 생성 (MAR 상황 가정)
# TS가 낮은 학생이 BO 응답을 일부 누락함
low_support <- which(rowMeans(Data[,2:5]) < 2.5)
Data[sample(low_support, 10), c("BO1", "BO2")] <- NA

# 5. 비정규성 추가 (BO4 문항을 편포되게 만듦)
Data$BO4 <- ifelse(Data$BO4 > 3, 5, Data$BO4) 

# 데이터 확인
head(Data)
write.csv(Data, "mock_education_data.csv", row.names = FALSE) # 파일로 저장

3. Jamovi (SEMLj) 분석 절차 및 가정 점검

이제 위에서 생성된 mock_education_data.csv를 Jamovi에서 분석한다고 가정하고 절차를 설명합니다.

단계 1: 데이터 탐색 및 가정 점검 (Descriptive)

  1. 빈도분석:Exploration > Descriptives에서 모든 변수의 왜도(Skewness)와 첨도(Kurtosis)를 확인합니다.
    • 점검: 왜도의 절댓값이 2, 첨도가 7을 넘는지 확인합니다 (West et al., 1995 기준). 우리 데이터의 BO4는 의도적으로 왜곡시켰으므로 높게 나올 것입니다.
  2. 결측치 확인: Missing 통계를 통해 결측 비율을 봅니다.

단계 2: 모형 설정 (SEMLj > Structural Equation Models)

  1. Measurement Model (측정 모형):
    • Latent variables 정의:
      • TeacherSupport =~ TS1 + TS2 + TS3 + TS4
      • SelfEfficacy =~ SE1 + SE2 + SE3 + SE4
      • Burnout =~ BO1 + BO2 + BO3 + BO4
  2. Structural Model (구조 모형):
    • SelfEfficacy ~ TeacherSupport
    • Burnout ~ TeacherSupport + SelfEfficacy

단계 3: 추정 방법(Estimator) 선택 – 핵심!

이 장의 핵심인 가정 위반에 대한 대처입니다.

  • 일반적인 경우: Estimation MethodMaximum Likelihood (ML)로 둡니다.
  • 비정규성 발견 시 (BO4 문제): 옵션을 Robust ML (MLR) 혹은 Robust standard errors로 변경합니다. 이는 다변량 정규성 가정이 깨졌을 때 표준오차를 교정해 줍니다.
  • 결측치 처리: Missing Data Handling 옵션에서 FIML을 선택합니다. 이는 결측 데이터를 삭제하지 않고 정보를 최대한 활용합니다.

단계 4: 결과 해석 시 주의점 (가정 검증)

  • 모델 적합도: CFI, TLI, RMSEA를 확인하되, 등가 모델(Equivalent Models)의 가능성을 염두에 둡니다. 즉, 모델이 데이터에 잘 맞는다고 해서 인과관계가 증명된 것은 아닙니다.
  • 매개효과: 간접효과(Indirect effect)가 유의하게 나오더라도, 이것이 횡단 연구(Cross-sectional)임을 명시하고, 인과적 결론보다는 “관련성” 혹은 “모형에 부합함” 정도로 조심스럽게 기술해야 합니다.

7. 결론 및 제언 (Next Steps)

이 장을 마무리하며, 클라인(Kline) 교수가 강조한 핵심을 다시 새겨봅시다.

  1. 모델에 대한 겸손함: 여러분의 모델은 데이터를 설명하는 수많은 모델 중 하나일 뿐입니다.
  2. 가정의 명시: 논문을 쓸 때, 결측치는 어떻게 처리했는지, 정규성은 점검했는지, 왜 이 추정법(Robust ML 등)을 썼는지 투명하게 밝히십시오.

참고문헌

  • Kline, R. B. (2016). Principles and practice of structural equation modeling (4th ed.). New York: Guilford Press.