카테고리 보관물: 교육통계

교육통계

Chap 13. jamovi와 lavaan을 활용한 구조방정식 모델링(SEM)

안녕하세요!

구조방정식은 단순히 변수 간의 관계를 보는 것을 넘어, 우리가 직접 관찰할 수 없는 ‘잠재적인 마음의 상태(잠재변수)’를 측정하고 그들 사이의 복잡한 인과관계를 모형화할 수 있게 해주는 아주 매력적인 방법론입니다.

이 장에서는 실제 교육 현장에서 만날 수 있는 시나리오를 통해 jamoviR(lavaan)을 활용하여 구조방정식을 어떻게 수행하는지 아주 상세히 다룹니다.

1. 들어가며: 왜 구조방정식인가?

우리가 교육 현장에서 마주하는 개념들—예를 들어 ‘학업 동기’, ‘교사 지지’, ‘자기효능감’—은 단 하나의 시험 점수나 설문 문항으로 완벽히 설명하기 어렵습니다. 구조방정식 모델링(Structural Equation Modeling, SEM)은 이러한 잠재변수(Latent Factor)를 여러 개의 측정지표(Indicator)를 통해 파악하고, 이들 간의 구조적 관계를 분석하는 통계 기법입니다.

전통적으로 SEM은 Mplus, Amos와 같은 고가의 상용 프로그램을 주로 사용해 왔으나, 최근에는 jamoviSEMLj 모듈이나 R의 lavaan 패키지와 같은 오픈소스 도구들이 발전하면서 누구나 정교한 분석을 수행할 수 있게 되었습니다.

2. 교육 현장 시나리오 및 모의 데이터 생성

이해를 돕기 위해 학교 현장의 이야기를 담은 데이터를 가정해 봅시다.

연구 시나리오: “교사의 정서적 지지가 학생의 학업 성취에 미치는 영향”

  • 독립변수(X): 교사 지지(Teacher Support) – ‘정서적 지지(x1)’와 ‘학업적 지지(x2)’로 측정.
  • 매개변수(M): 학업 참여(Engagement) – ‘행동적 참여(m1)’와 ‘정서적 참여(m2)’로 측정.
  • 결과변수(Y): 학업 성취(Achievement) – ‘수학 점수(y1)’와 ‘국어 점수(y2)’로 측정.

연구자는 교사의 지지가 학생의 참여도를 높이고, 이것이 최종적으로 성취도 향상으로 이어지는지 확인하고자 합니다.

2.1. 모의 데이터 생성 (R 코드)

분석 실습을 위해 N=500N=500 명의 데이터를 생성합니다. 실제 상황과 유사하게 일부 데이터는 무작위로 누락(MCAR)된 것으로 가정합니다.

R

# R을 활용한 모의 데이터 생성
set.seed(2025)
library(MASS)

# 상관 행렬 설정 (교사지지, 참여, 성취 간의 관계)
n <- 500
mu <- rep(0, 6)
sigma <- matrix(c(1.0, 0.6, 0.3, 0.3, 0.2, 0.2,
                  0.6, 1.0, 0.3, 0.3, 0.2, 0.2,
                  0.3, 0.3, 1.0, 0.7, 0.4, 0.4,
                  0.3, 0.3, 0.7, 1.0, 0.4, 0.4,
                  0.2, 0.2, 0.4, 0.4, 1.0, 0.7,
                  0.2, 0.2, 0.4, 0.4, 0.7, 1.0), 6, 6)

data <- mvrnorm(n, mu, sigma)
colnames(data) <- c("x1", "x2", "m1", "m2", "y1", "y2")
df <- as.data.frame(data)

# 결측치 주입 (MCAR 가정)
df$m1[sample(1:n, 50)] <- NA
df$y1[sample(1:n, 70)] <- NA

# 데이터 저장 (jamovi에서 불러오기 위함)
# write.csv(df, "school_sem_data.csv", row.names = FALSE)

3. 데이터 준비 및 기초 분석

3.1. 데이터 불러오기 및 결측치 처리

Mplus나 lavaan은 텍스트 형태의 데이터를 읽습니다. jamovi에서는 .csv 파일을 바로 불러올 수 있습니다.

  • 결측치 코드: 데이터셋 내에 공백 대신 -999와 같은 특정 숫자를 사용할 수 있지만, jamovi와 lavaan은 시스템 결측치(NA)를 직접 처리하는 데 매우 능숙합니다.
  • FIML(Full-Information Maximum Likelihood): 결측치가 있을 때 케이스를 삭제(Listwise deletion)하지 않고, 사용 가능한 모든 정보를 활용하여 모수를 추정하는 방식입니다. jamovi와 lavaan 모두 이 방식을 기본 혹은 옵션으로 제공합니다.

3.2. 기초 통계(Descriptive Statistics) 확인

분석 전, 변수들의 평균, 표준편차, 그리고 상관관계를 확인해야 합니다. jamovi의 Exploration -> Descriptives 메뉴를 통해 데이터의 분포를 살핍니다.

변수평균표준편차결측치 개수
x1 (정서적 지지)-0.010.990
m1 (행동적 참여)0.021.0150
y1 (수학 점수)-0.040.9870

4. 관찰변수 경로분석 (Manifest Path Analysis)

가장 먼저, 요인으로 묶지 않고 개별 변수(x1, m1, y1) 간의 관계를 분석해 봅시다.

4.1. 분석 방법 (jamovi SEMLj)

  1. SEMLj -> Syntax Mode 혹은 Path Analysis 메뉴 선택.
  2. Model 설정:
    • m1 ~ x1 (교사 지지가 참여를 예측)
    • y1 ~ x1 + m1 (교사 지지와 참여가 성취를 예측)
  3. 옵션: Direct and indirect effects를 체크하여 매개효과를 확인합니다.

4.2. 주요 결과 해석

  • 직접 효과(Direct Effect): 교사 지지(x1x_1)가 성취(y1y_1)에 직접 미치는 영향.
  • 간접 효과(Indirect Effect): x1m1y1x_1 \rightarrow m_1 \rightarrow y_1로 이어지는 경로의 곱(a×ba \times b).
  • 유의성 검정: 간접효과 검정 시 Bootstrapping(1000회 이상)을 권장합니다. 이는 곱해진 값의 분포가 정규분포를 따르지 않을 수 있기 때문입니다.

5. 확인적 요인분석 (Confirmatory Factor Analysis, CFA)

이제 측정 도구가 제대로 작동하는지 확인합니다. ‘교사 지지’라는 잠재변수(X)가 x1, x2에 의해 잘 설명되는지 보는 과정입니다.

5.1. 모델 식별 및 제약

  • 식별(Identification): 잠재변수는 단위가 없으므로, 첫 번째 측정지표의 부하량을 1로 고정하거나 잠재변수의 분산을 1로 고정하여 척도를 부여합니다.
  • 측정 모델 구성:
    • X =~ x1 + x2
    • M =~ m1 + m2
    • Y =~ y1 + y2

5.2. 적합도 지수 (Fit Indices)

모델이 실제 데이터와 얼마나 일치하는지 평가합니다.

  • χ2\chi^2 검정: p>.05p > .05이면 좋으나 표본 크기에 민감합니다.
  • CFI / TLI: .90 이상(가급적 .95 이상) 권장.
  • RMSEA: .08 이하(가급적 .05 이하) 권장.
  • SRMR: .08 이하 권장.

6. 잠재 경로 분석: 전체 구조모델 (Full SEM)

측정 모델(CFA)과 구조 모델(Path)을 결합합니다.

6.1. lavaan 문법 (R/jamovi 공용)

jamovi의 syntax 창이나 R에서 아래와 같이 입력합니다.

R

# 전체 SEM 모델 설정
model <- '
  # 측정 모델 (CFA)
  Teacher_Support =~ x1 + x2
  Engagement      =~ m1 + m2
  Achievement     =~ y1 + y2

  # 구조 모델 (Path)
  Engagement  ~ a*Teacher_Support
  Achievement ~ b*Engagement + c*Teacher_Support

  # 간접효과 및 총효과 정의
  indirect := a*b
  total    := c + (a*b)
'
# 모델 실행 (FIML 결측치 처리 포함)
fit <- sem(model, data = df, missing = "fiml")
summary(fit, fit.measures = TRUE, standardized = TRUE)

7. 고급 분석 주제 (Mplus 및 R 역량)

7.1. 잠재성장곡선 모델 (Latent Growth Curve Model, LGM)

시간에 따른 학생의 성취도 변화(초기치와 변화율)를 분석할 때 사용합니다.

  • i (Intercept): 모든 시점의 부하량을 1로 고정.
  • s (Slope): 시간의 흐름(0, 1, 2, 3 등)에 따라 부하량 설정.

7.2. 다집단 분석 (Multigroup Analysis)

성별이나 학교 유형에 따라 모델의 경로가 다른지 확인합니다. ‘형태 동일성’, ‘측정 동일성’ 등을 단계별로 검증해야 합니다.

7.3. 몬테카를로 시뮬레이션 (Monte Carlo Simulation)

특정 표본 크기에서 내 모델이 얼마나 정확한 파워(통계적 검정력)를 갖는지 미리 시뮬레이션해 볼 수 있습니다. 주로 R과 Mplus에서 강력한 기능을 제공합니다.

8. 결론 및 제언

구조방정식은 단순한 통계 기법을 넘어 연구자의 이론적 가설을 검증하는 강력한 논리 도구입니다. jamovi와 lavaan을 활용하면 복잡한 수식 없이도 직관적으로 모델을 구성할 수 있습니다. 여러분의 교육 연구가 이 도구를 통해 더욱 깊이 있고 정교해지기를 기대합니다.

참고문헌 (APA Style)

  • Arbuckle, J. L. (2014). Amos 23.0 User’s Guide. Chicago: IBM SPSS.
  • Byrne, B. M. (2012). Structural equation modeling with Mplus: Basic concepts, applications, and programming. New York: Routledge.
  • Enders, C. K. (2022). Applied missing data analysis (2nd ed.). New York: Guilford Press.
  • Geiser, C. (2021). Longitudinal structural equation modeling with Mplus: A latent state-trait perspective. New York: Guilford Press.
  • Muthén, L. K., & Muthén, B. O. (1998-2017). Mplus user’s guide (8th ed.). Los Angeles, CA: Authors.
  • Rosseel, Y. (2012). lavaan: An R package for structural equation modeling. Journal of Statistical Software, 48(2), 1-36.

Chap 12. 결측치가 있는 구조방정식 처리

안녕하세요?
오늘은 연구자들이 데이터를 분석할 때 가장 빈번하게 마주하지만, 동시에 가장 골치 아픈 문제인 ‘결측치(Missing Data)’를 구조방정식 모델(SEM)에서 어떻게 처리해야 하는지 깊이 있게 다뤄보겠습니다.

단순히 결측치를 삭제하는 과거의 방식에서 벗어나, 현대 통계학의 표준인 완전 정보 최대 우도법(FIML)다중 대치법(MI)을 중심으로 학습해 봅시다. 여러분의 이해를 돕기 위해 교육 현장의 가상 데이터를 활용하여 설명하겠습니다.

1. 결측치 처리의 필요성과 이론적 배경

교육 연구에서 학생들의 설문 데이터나 성적 데이터를 수집하다 보면, 특정 문항에 응답하지 않거나 전학 등으로 인해 데이터가 누락되는 경우가 많습니다. 과거에는 결측치가 있는 사례를 통째로 삭제(Listwise Deletion)하곤 했으나, 이는 표본 크기를 줄여 통계적 검증력을 약화시킬 뿐만 아니라, 특정 집단이 조직적으로 응답을 누락했을 경우 심각한 편향(Bias)을 초래합니다1.

결측치 발생 기제 (Missing Data Processes)

결측치를 처리하기 전, 루빈(Rubin, 1976)이 제안한 세 가지 발생 기제를 이해해야 합니다.

  1. 완전 무작위 결측 (MCAR): 결측이 관찰된 데이터나 관찰되지 않은 데이터와 전혀 상관없이 발생한 경우입니다. (예: 설문지가 단순히 배달 사고로 분실됨)
  2. 무작위 결측 (MAR): 결측이 다른 관찰된 변수와는 상관이 있지만, 결측된 값 자체와는 상관이 없는 경우입니다. 현대적 결측치 처리법의 기본 가정입니다. (예: 기초 학력이 낮은 학생이 학업 중단으로 인해 기말고사 점수가 누락됨)
  3. 비무작위 결측 (MNAR): 결측이 누락된 값 자체와 관련이 있는 경우입니다. (예: 성적이 매우 낮은 학생이 부끄러워서 일부러 성적을 기입하지 않음)

2. 가상 시나리오 및 모의 데이터 생성

강의를 위해 다음과 같은 교육 연구 시나리오를 설정하겠습니다.

연구 주제: 교사의 지지가 학생의 학업 자기효능감을 매개로 학교 행복감에 미치는 영향

  • 독립변수: 교사의 지지 (Teacher Support)
  • 매개변수: 학업 자기효능감 (Self-Efficacy, 3개 문항)
  • 종속변수: 학교 행복감 (School Happiness, 3개 문항)
  • 보조변수(Auxiliary Variable): 부모의 학업 관여도 (Parental Involvement) – 모델에는 없으나 결측치 추정을 돕기 위해 활용

R을 이용한 모의 데이터 생성 스크립트

jamovi에서 불러올 수 있도록 결측치가 포함된 500명의 가상 데이터를 생성합니다.

R

# 필요한 라이브러리
library(MASS)

set.seed(2025)
N <- 500

# 변수 간 상관관계 설정 (교사지지, 효능감1-3, 행복감1-3, 부모관여)
mu <- rep(0, 8)
sigma <- matrix(0.5, 8, 8); diag(sigma) <- 1
data <- mvrnorm(N, mu, sigma)
colnames(data) <- c("T_Sup", "Eff1", "Eff2", "Eff3", "Hap1", "Hap2", "Hap3", "P_Inv")
df <- as.data.frame(data)

# MAR 기제에 의한 결측치 생성: 교사 지지가 낮은 학생일수록 효능감 응답 누락 확률 높음
missing_idx <- which(df$T_Sup < quantile(df$T_Sup, 0.3))
df$Eff1[sample(missing_idx, 50)] <- NA
df$Hap1[sample(1:N, 30)] <- NA # 일부는 MCAR

write.csv(df, "School_Missing_Data.csv", row.names = FALSE)

3. 완전 정보 최대 우도법 (FIML)

완전 정보 최대 우도법(Full-Information Maximum Likelihood)은 관찰된 데이터를 모두 사용하여 로그 우도(Log-likelihood) 함수를 계산하는 방식입니다. 결측치가 있는 사례를 버리지 않고, 관찰된 데이터만을 사용하여 해당 사례의 우도 값을 계산합니다.

jamovi에서의 분석 방법

  1. SEMLj 라이브러리를 설치합니다.
  2. SEMLj 모듈을 실행하고 모델을 설정합니다.
  3. Options 탭에서 Missing values 설정을 FIML로 선택합니다.
    • 참고: jamovi의 기본 SEMLj 엔진인 lavaan은 FIML을 통해 결측치를 효율적으로 처리합니다.

보조 변수(Auxiliary Variables)의 활용

결측치가 MAR 가정에 더 가깝게 부합하도록 하기 위해, 모델에 직접 포함되지 않지만 결측과 관련이 있는 변수(부모 관여도)를 활용할 수 있습니다.

  • 포화 상관 모델 (Saturated Correlates Model): 보조 변수를 모델 내 모든 외생 변수와 상관시키고, 내생 변수의 잔차와 상관시키는 방식입니다.

4. 다중 대체법 (Multiple Imputation, MI)

다중 대체법은 결측치를 단일 값이 아닌 여러 번 추정하여 여러 개의 ‘완성된’ 데이터셋을 만드는 방식입니다.

분석의 3단계

  1. 대체 단계 (Imputation): MCMC 알고리즘 등을 활용하여 결측치가 채워진 MM개(보통 20~100개)의 데이터셋 생성.
  2. 분석 단계 (Analysis): 각 데이터셋에 대해 구조방정식 모델을 독립적으로 분석.
  3. 결합 단계 (Pooling): 루빈의 규칙(Rubin’s Rules)을 적용하여 결과를 하나로 통합.

jamovi/R 구현 (R 기반 설명)

jamovi의 일부 플러그인에서도 MI를 지원하지만, 구조방정식의 경우 R의 mice 패키지와 lavaan을 병행하는 것이 가장 정교합니다.

R

library(mice)
library(lavaan)

# 1. 대치 단계 (20개의 데이터셋 생성)
imp <- mice(df, m = 20, method = 'pmm', seed = 2025)

# 2. 분석 및 결합 단계
model <- '
  Efficacy =~ Eff1 + Eff2 + Eff3
  Happiness =~ Hap1 + Hap2 + Hap3
  Efficacy ~ T_Sup
  Happiness ~ Efficacy + T_Sup
'
fit_mi <- with(imp, sem(model, data = subset(df)))
# pool 결과를 사용하여 최종 추정치 산출

5. 분석 결과의 비교 및 해석

FIML과 MI는 동일한 가정(MAR) 하에서 보통 거의 일치하는 결과를 보여줍니다.

구분FIML (완전 정보 최대 우도)MI (다중 대치법)
장점한 번의 분석으로 완료, 효율적임범주형 데이터 처리에 유연함
단점보조 변수 추가 시 모델이 복잡해짐분석 과정이 번거롭고 시간이 소요됨
적합도모델 적합도 지수 즉시 제공각 세트의 지수를 평균하여 산출

6. 결론 및 제언

교육 연구에서 결측치는 피할 수 없는 현상입니다. 하지만 FIML이나 MI와 같은 현대적인 기법을 사용한다면, 결측치로 인한 편향을 최소화하고 연구의 타당성을 높일 수 있습니다.

  • 데이터가 연속형이고 분석 모델이 명확하다면 FIML을 우선 권장합니다.
  • 변수 중에 범주형 변수가 많거나 비선형 효과를 분석해야 한다면 MI가 더 유리합니다.

구조방정식 모델링 시 “결측치가 있으니 해당 학생을 삭제하겠다”는 생각은 이제 접어두시고, 데이터를 최대한 활용하는 통계적 지혜를 발휘해 보시기 바랍니다.

참고문헌 (APA Style)

  • Arbuckle, J. L. (1996). Full information estimation in the presence of incomplete data. In G. A. Marcoulides & R. E. Schumacker (Eds.), Advanced structural equation modeling (pp. 243–277). Erlbaum.
  • Enders, C. K. (2022). Applied missing data analysis (2nd ed.). Guilford Press.
  • Graham, J. W. (2003). Adding missing-data-relevant variables to FIML-based structural equation models. Structural Equation Modeling: A Multidisciplinary Journal, 10(1), 80–100.
  • Little, R. J. A., & Rubin, D. B. (2020). Statistical analysis with missing data (3rd ed.). Wiley.
  • Rubin, D. B. (1987). Multiple imputation for nonresponse in surveys. Wiley.
  • Schafer, J. L. (1997). Analysis of incomplete multivariate data. Chapman & Hall.

Chap 11. 구조방정식 모델 선택

안녕하세요? 여러분.
오늘 우리는 구조방정식 모델링(SEM)에서 가장 중요하면서도 많은 연구자가 간과하기 쉬운 주제인 ‘모델 선택(Model Selection)‘에 대해 깊이 있게 다루어 보겠습니다.

우리는 보통 하나의 모델을 세우고 그 모델의 적합도 지수(CFI, TLI, RMSEA 등)가 기준치를 넘으면 “내 모델이 옳다”라고 결론짓곤 합니다. 하지만 그것은 위험한 생각일 수 있습니다. 오늘은 왜 단일 모델의 적합도만 봐서는 안 되는지, 그리고 여러 경쟁 모델 중 어떤 것이 가장 ‘좋은’ 모델인지 어떻게 결정하는지를 교육학적 사례와 함께 살펴보겠습니다.


1. 단일 모델 적합도의 한계: 왜 모델 선택인가?

우리가 연구에서 세우는 모델은 실제 현실을 완벽하게 반영할 수 없습니다. 모델은 단지 ‘현실에 대한 근사치’일 뿐입니다. 따라서 특정 모델의 적합도가 좋게 나왔다고 해서 그것이 반드시 객관적 진리인 것은 아닙니다.

모델 적합도의 함정

  1. 포화 모델(Saturated Model)의 문제: 모델이 복잡해져서 자유도(dfdf)가 0이 되면, 이론적 타당성과 상관없이 적합도는 항상 완벽하게 나옵니다.
  2. 외생적 요인의 영향: 표본 크기(NN), 데이터의 비정규성, 측정 오차 등 모델의 진실성과 상관없는 요인들이 적합도 지수를 왜곡할 수 있습니다.
  3. 연구자의 자유도(Researcher Degrees of Freedom): 누락된 데이터 처리 방식이나 모델 수정 과정에서 연구자의 주관적 결정이 개입되어 적합도가 ‘조작’될 위험이 있습니다.

이러한 한계를 극복하기 위해 제안된 것이 모델 선택(Model Selection)입니다. 이는 사전에 이론적으로 타당한 여러 경쟁 모델들을 설정하고, 이 모델들을 동일한 데이터에 적용하여 어떤 모델이 가장 우수한지 순위를 매기는 과정입니다.

2. 이론적 배경: 오차의 프레임워크 (Cudeck & Henly)

모델을 선택할 때 우리가 고려해야 할 오차는 여러 종류가 있습니다. Cudeck과 Henly(1991)는 이를 이해하기 쉬운 프레임워크로 제시했습니다.

  • 근사 오차(Approximation Discrepancy): 모집단에서 모델과 실제 데이터 구조 사이의 차이로, 모델의 ‘진실성(Verisimilitude)’을 나타냅니다.
  • 추정 오차(Estimation Discrepancy): 표본 크기에 따른 샘플링 변동성 때문에 발생하는 오차입니다.
  • 전체 오차(Overall Discrepancy): 근사 오차와 추정 오차를 합친 개념으로, 모델이 새로운 데이터에 얼마나 잘 적용될지를 나타내는 일반화 가능성(Generalizability)과 직결됩니다.

우리는 단순히 현재 데이터에만 잘 맞는 모델이 아니라, 새로운 데이터에도 잘 맞을 모델(일반화 가능성이 높은 모델)을 선택해야 합니다.

3. 모델 선택의 핵심 기준

모델을 선택할 때 가장 중요한 원칙은 적합도와 복잡성 사이의 균형(Bias-Variance Trade-off)입니다. 너무 복잡한 모델은 현재 데이터에는 완벽해 보일지 몰라도(과적합, Overfitting), 새로운 데이터에서는 성능이 뚝 떨어집니다.

주요 정보 지수 (Information Criteria)

대부분의 모델 선택 기준은 다음과 같은 일반적인 형태를 띱니다.

D+f(q,N)D + f(q, N)

여기서 DD는 부적합도(로그 가능도 기반), ff는 복잡성(qq는 자유 파라미터 수)과 표본 크기(NN)에 따른 벌칙(Penalty) 항입니다.

지표특징강조점
AIC (Akaike Information Criterion)AIC=2lnL+2qAIC = -2 \ln L + 2q예측 효율성: 어떤 모델이 미래의 데이터를 가장 잘 예측(교차 타당화)할 것인가?
BIC (Bayesian Information Criterion)BIC=2lnL+qlnNBIC = -2 \ln L + q \ln N일관성: 표본이 커질 때 진짜 모델(True DGP)을 찾아낼 확률이 높은가?
MDL (Minimum Description Length)복잡성을 파라미터 수뿐만 아니라 모델의 구조적 형태까지 고려함압축 효율성: 데이터를 가장 경제적으로 설명하는 모델은 무엇인가?

4. 교육 현장 사례를 통한 실전 분석

이제 실제 교육학 연구 상황을 가정하여 모델 선택을 진행해 보겠습니다.

연구 시나리오: 고등학생의 학업 회복탄력성 구조 분석

김 교수는 고등학생 500명을 대상으로 ‘자기효능감’과 ‘교사 지지’가 ‘학업 회복탄력성’에 미치는 영향을 연구하고 있습니다. 그는 세 가지 경쟁 모델을 세웠습니다.

  • 모델 1 (단순 모델): 자기효능감 -> 학업 회복탄력성
  • 모델 2 (매개 모델): 자기효능감 -> 교사 지지 -> 학업 회복탄력성
  • 모델 3 (복합 모델): 모델 2에 ‘부모 지지’와 ‘또래 지지’ 경로를 모두 추가한 복잡한 모델

jamovi를 활용한 분석 방법

jamovi의 SEMed 모듈(또는 jmv)을 사용하면 분석 결과 하단에서 정보 지수를 확인할 수 있습니다.

  1. 데이터 불러오기: Academic_Resilience.csv
  2. 분석 메뉴: Factor -> Structural Equation Modeling
  3. 모델 설정: 각 경쟁 모델의 경로를 설정합니다.
  4. 지수 확인: 결과 창의 Fit Measures 탭에서 AIC와 BIC 값을 확인합니다. 값이 작을수록 우수한 모델입니다.

R 코드를 활용한 심화 분석 (SIC 포함)

jamovi에서 기본으로 제공하지 않는 SIC(Stochastic Information Complexity) 등은 R의 lavaan 패키지를 사용하여 계산할 수 있습니다.

R

# 필요한 패키지 로드
library(lavaan)

# 1. 가상 데이터 생성 (N=500)
set.seed(2025)
N <- 500
self_eff <- rnorm(N)
teacher_sup <- 0.4 * self_eff + rnorm(N, sd = 0.8)
resilience <- 0.3 * self_eff + 0.5 * teacher_sup + rnorm(N, sd = 0.7)
edu_data <- data.frame(self_eff, teacher_sup, resilience)

# 2. 경쟁 모델 설정
model_1 <- 'resilience ~ self_eff'
model_2 <- 'teacher_sup ~ self_eff; resilience ~ teacher_sup + self_eff'

# 3. 모델 적합
fit1 <- sem(model_1, data = edu_data)
fit2 <- sem(model_2, data = edu_data)

# 4. AIC, BIC 비교
cat("Model 1 AIC:", AIC(fit1), " BIC:", BIC(fit1), "\n")
cat("Model 2 AIC:", AIC(fit2), " BIC:", BIC(fit2), "\n")

# 5. SIC 계산 (구조적 복잡성 반영)
# SIC = -ln L + 0.5 * ln|I(theta)| [cite: 321]
# 실제 연구에서는 semTools 등을 활용하여 더 편리하게 계산 가능합니다. [cite: 455]

분석 결과 예시 표

모델AICBIC순위해석
모델 12450.22465.53너무 단순하여 데이터 설명력 부족
모델 22310.82332.11적절한 복잡성과 높은 일반화 가능성
모델 32315.42355.82적합도는 모델 2와 비슷하나 너무 복잡함 (벌칙 부여)

5. WaurimaL의 실무 제언 (Take-home Points)

모델 선택은 단순히 숫자를 비교하는 기계적인 과정이 아닙니다. 다음 원칙을 반드시 기억하세요.

  1. 사전 이론의 중요성: 모델 선택 지수는 보조 도구일 뿐, 가장 먼저 고려해야 할 것은 교육학적 이론과 논리입니다.
  2. 삼각측량(Triangulation): AIC와 BIC가 다른 모델을 선택할 수 있습니다. AIC는 예측에, BIC는 진리 탐색에 유리하므로 두 종류를 모두 보고 종합적으로 판단하세요.
  3. 모델 평균화(Model Averaging): 하나의 모델만 딱 고르기 어렵다면, 우수한 여러 모델의 결과를 가중 평균하여 보고하는 방식도 고려해 보세요.
  4. 표본 크기의 영향: 표본이 작을 때는 구조적 복잡성을 잘 반영하는 MDL 계열 지수(SIC 등)를 활용하는 것이 더 정확할 수 있습니다.

구조방정식은 모델을 ‘확정’ 짓는 도구가 아니라, 이론을 ‘검증’하고 ‘발전’시키는 과정임을 잊지 마시기 바랍니다.

참고문헌 (APA Style)

  • Akaike, H. (1973). Information theory and an extension of the maximum likelihood principle. In B. N. Petrov & F. Csáki (Eds.), Second International Symposium on Information Theory (pp. 267–281). Akadémiai Kiadó.
  • Burnham, K. P., & Anderson, D. R. (2002). Model selection and multimodel inference: A practical information-theoretic approach (2nd ed.). Springer.
  • Cudeck, R., & Henly, S. J. (1991). Model selection in covariance structures analysis and the “problem” of sample size: A clarification. Psychological Bulletin, 109(3), 512–519.
  • Preacher, K. J., & Yaremych, H. E. (2025). Model selection in structural equation modeling. In Handbook of Structural Equation Modeling. [Note: Based on the provided chapter content]
  • Schwarz, G. (1978). Estimating the dimension of a model. Annals of Statistics, 6(2), 461–464.
  • Wasserman, L. (2000). Bayesian model selection and model averaging. Journal of Mathematical Psychology, 44(1), 92–107.

Chap 10. 구조방정식 모델 적합도 탐구

안녕하세요!
오늘은 구조방정식 모델링(SEM)의 핵심인 ‘모델 적합도(Model Fit)’에 대해 함께 탐구해 보겠습니다.

구조방정식은 복잡한 교육 현상을 정교하게 분석할 수 있는 강력한 도구이지만, 우리가 세운 가설 모델이 실제 데이터와 얼마나 잘 맞는지를 확인하는 ‘적합도 평가’ 과정을 제대로 이해하지 못하면 잘못된 결론에 도달하기 쉽습니다.

이번 시간에는 교육심리 연구 사례를 바탕으로 모델 적합도의 기초부터 최신 동향까지 상세히 살펴보겠습니다.


1. 모델 적합도란 무엇인가?

우리가 중학생들의 ‘교사 지지’‘학습 참여’를 매개로 ‘학업 성취’에 미치는 영향을 연구한다고 가정해 봅시다. 우리는 다음과 같은 모델 구성 요소를 설정하게 됩니다.

  1. 측정 성분(Measurement Component): 설문 문항(관측 변수)들이 ‘교사 지지’나 ‘학습 참여’라는 잠재 개념을 잘 측정하고 있는가?
  2. 구조 성분(Structural Component): ‘교사 지지’가 ‘학습 참여’를 통해 ‘학업 성취’로 이어지는 가설 경로가 타당한가?
  3. 평균 성분(Mean Component): 집단 간(예: 남학생 vs 여학생) 잠재 변수의 평균 수준에 차이가 있는가?

모델 적합도 평가는 “우리가 가설로 세운 이 모델이 실제 관찰된 데이터(분산-공분산 행렬)를 얼마나 잘 재현해내는가?”라는 질문에 답하는 과정입니다.

2. 기초 이론: 카이제곱(χ2\chi^2) 테스트와 불일치 함수

모델 추정(주로 최대우도법, ML)은 관찰된 공분산 행렬(SS)과 모델에 의해 예측된 공분산 행렬(Σ^\hat{\Sigma}) 사이의 차이를 최소화하는 방향으로 진행됩니다.

카이제곱(χ2\chi^2) 통계치

전통적인 적합도 검정은 카이제곱 테스트를 사용합니다. 이 테스트의 영가설(H0H_0)은 “모델이 인구 집단의 데이터를 완벽하게 적합한다”는 것입니다.

  • 판단 기준: p>.05p > .05이면 영가설을 기각하지 못하므로 모델이 데이터를 잘 설명한다고 봅니다.
  • 한계: 샘플 사이즈(NN)에 매우 민감합니다. 표본이 크면 아주 미세한 차이도 통계적으로 유의미한 것으로 나타나 영가설이 기각(부적합 판정)될 가능성이 큽니다.

WaurimaL의 한마디: “모든 모델은 실제의 근사치일 뿐 완벽할 수 없습니다. 따라서 p<.05p < .05가 나왔다고 해서 실망할 필요는 없습니다. 이를 보완하기 위해 ‘실무적 적합도 지수’를 함께 살펴봐야 합니다.”

3. 주요 실무적 적합도 지수 (Global Fit Indices)

연구자들이 논문에서 가장 흔히 보고하는 지수들을 중심으로 정리해 보겠습니다.

구분지수 명칭약어성격이상적 기준
절대 적합도표준화 잔차 제곱평균제곱근SRMRBadness
(낮을수록 좋음)
<.08< .08
오차 근사치근사 오차 제곱평균제곱근RMSEABadness
(낮을수록 좋음)
<.06< .06
비교 적합도비교 적합도 지수CFIGoodness
(높을수록 좋음)
>.95> .95
비교 적합도터커-루이스 지수TLIGoodness
(높을수록 좋음)
>.95> .95

지수별 핵심 포인트

  • SRMR: 관찰된 상관관계와 예측된 상관관계 사이의 평균적인 차이를 나타냅니다. 0에 가까울수록 좋습니다.
  • RMSEA: 모델의 복잡성을 고려(페널티 부여)하는 지수입니다. 90% 신뢰구간을 함께 보고하는 것이 권장됩니다.
  • CFI & TLI: 아무런 관계가 없는 ‘독립 모델’에 비해 우리 모델이 얼마나 개선되었는지를 나타냅니다.

4. 적합도 평가의 함정: ‘신뢰도 역설’과 데이터 품질

연구자들을 가장 당혹스럽게 만드는 것 중 하나가 ‘신뢰도 역설(Reliability Paradox)’입니다.

  • 현상: 측정 도구의 신뢰도가 높고 요인 부하량(Factor Loadings)이 클수록(즉, 좋은 데이터일수록), 오히려 모델 적합도 지수는 나빠지는 경향이 있습니다.
  • 이유: 데이터의 질이 좋을수록 모델의 미세한 결함이 더 엄격하게 드러나기 때문입니다.

실제 예시: “선생님, 제가 설문 문항을 정말 정교하게 만들어서 요인 부하량이 전부 0.9가 넘는데, 왜 CFI가 0.90밖에 안 나올까요?” -> 이것이 바로 신뢰도 역설의 전형적인 사례입니다. 데이터가 너무 좋아서 모델의 미세한 오차가 부각된 것이죠.

5. 최신 전략: 동적 적합도 기준 (Dynamic Fit Index)

Hu & Bentler(1999)가 제시한 기준(CFI>.95CFI > .95 등)은 특정 조건의 시뮬레이션 결과일 뿐, 모든 모델에 적용되는 절대 법칙은 아닙니다. 최근에는 자신의 모델과 데이터 특성에 맞는 맞춤형 기준을 생성하는 방법이 주목받고 있습니다.

R을 이용한 모의 자료 생성 및 적합도 분석 예시

학교 교육 환경을 가정한 시나리오로 R 코드를 작성해 보겠습니다.

  • 시나리오: 학생 300명을 대상으로 ‘교사 지지(TS)’, ‘학습 참여(SE)’, ‘학업 성취(AA)’를 측정. 각 잠재변수는 3개의 문항으로 구성됨.

R

# 필요한 라이브러리 로드
library(lavaan)
library(semPlot)

# 1. 모의 데이터 생성 (Story-based Data Generation)
set.seed(2025)
n <- 300
# 잠재변수 생성
TS <- rnorm(n)
SE <- 0.6 * TS + rnorm(n, sd = 0.5)
AA <- 0.7 * SE + rnorm(n, sd = 0.4)

# 관측변수(설문문항) 생성
data <- data.frame(
  ts1 = 0.8*TS + rnorm(n), ts2 = 0.7*TS + rnorm(n), ts3 = 0.9*TS + rnorm(n),
  se1 = 0.8*SE + rnorm(n), se2 = 0.7*SE + rnorm(n), se3 = 0.8*SE + rnorm(n),
  aa1 = 0.9*AA + rnorm(n), aa2 = 0.8*AA + rnorm(n), aa3 = 0.7*AA + rnorm(n)
)

# 2. 모델 설정
model <- '
  # 측정 모델
  TeacherSupport =~ ts1 + ts2 + ts3
  Engagement     =~ se1 + se2 + se3
  Achievement    =~ aa1 + aa2 + aa3
  
  # 구조 모델
  Engagement ~ TeacherSupport
  Achievement ~ Engagement
'

# 3. 모델 추정
fit <- sem(model, data = data)

# 4. 적합도 지수 확인
summary(fit, fit.measures = TRUE, standardized = TRUE)

맞춤형 기준 생성 (Wolf & McNeish 방식)

McNeish와 Wolf(2022)는 dynamicfit 앱이나 R 패키지를 통해 연구자의 모델 구조, 샘플 사이즈에 최적화된 컷오프(Cut-off) 값을 찾을 것을 권장합니다.

6. 결론 및 제언

모델 적합도는 단순히 0.950.95라는 숫자를 넘기기 위한 게임이 아닙니다.

  1. 전체적 관점: 글로벌 지수(CFI, RMSEA 등)뿐만 아니라 개별 잔차(Residuals)를 살펴 어디서 문제가 생겼는지 파악해야 합니다.
  2. 이론 우선: 적합도를 높이기 위해 이론적 근거 없이 수정 지수(Modification Indices)에 의존해 경로를 추가하는 것은 지양해야 합니다.
  3. 복합적 해석: 데이터의 품질(신뢰도), 표본 크기, 모델의 복잡성을 모두 고려하여 ‘전문가적 판단’을 내려야 합니다.

참고문헌 (APA Style)

  • Anderson, J. C., & Gerbing, D. W. (1988). Structural equation modeling in practice: A review and recommended two-step approach. Psychological Bulletin, 103(3), 411–423.
  • Bentler, P. M., & Bonett, D. G. (1980). Significance tests and goodness of fit in the analysis of covariance structures. Psychological Bulletin, 88, 588–606.
  • Hu, L.-T., & Bentler, P. M. (1999). Cutoff criteria for fit indexes in covariance structure analysis: Conventional criteria versus new alternatives. Structural Equation Modeling, 6, 1–55.
  • McNeish, D., & Wolf, M. G. (2022). Dynamic fit index cutoffs for confirmatory factor analysis models. Psychological Methods.
  • West, S. G., Wu, W., McNeish, D., & Savord, A. (2025). Model fit in structural equation modeling. In Handbook of Structural Equation Modeling.

Chap 09. 구조방정식 모델링(SEM)에서의 검증력 분석

안녕하세요, 여러분.
이번에는 구조방정식 모델링(SEM) 연구를 설계할 때 가장 많이 받는 질문 중 하나인 “샘플 사이즈를 얼마나 잡아야 하나요?”에 대해 심도 있게 다루어 보겠습니다. 단순히 “사람이 많을수록 좋다”는 식의 접근이 아니라, 우리가 세운 가설이 실제 효과가 있을 때 이를 통계적으로 유의하게 찾아낼 확률인 ‘통계적 검증력(Statistical Power)’ 관점에서 접근해 봅시다.

1. 검증력 분석의 기초: 왜 필요한가?

1.1. 사전 검증력 분석 (A priori Power Analysis)

연구를 시작하기 전, 즉 데이터를 수집하기 전에 필요한 표본 크기를 결정하는 과정을 말합니다. 이는 연구자의 소중한 자원과 시간을 낭비하지 않게 해주며, 특히 연구 재단에 연구비를 신청할 때 표본 크기의 타당성을 입증하는 근거로 필수적입니다.

1.2. 사후 검증력 분석 (Post hoc Power Analysis)의 함정

데이터 수집 후 결과가 유의하지 않게 나왔을 때 “혹시 검증력이 부족해서인가?”를 확인하는 과정입니다. 하지만 많은 학자들은 사후 검증력 분석이 이미 나온 p-값의 다른 표현일 뿐이며, 큰 의미를 갖기 어렵다고 비판합니다. 따라서 우리는 오직 사전 검증력 분석에 집중할 것입니다.

2. SEM 검증력의 결정 요인

전통적인 통계(ANOVA 등)보다 SEM에서의 검증력 분석은 훨씬 복잡합니다. 다음과 같은 수많은 ‘움직이는 과녁’들이 검증력에 영향을 미치기 때문입니다.

  • 표본 크기 (Sample Size): 가장 핵심적인 요인입니다.
  • 모델의 복잡성: 측정 변수와 잠재 변수의 개수.
  • 데이터의 분포: 정규성 위반 여부.
  • 결측치 패턴: 데이터가 얼마나 빠져 있는가.
  • 모델 오지정(Misspecification)의 정도: 실제 모델과 가설 모델의 차이.

3. 분석 전략 (1): 전체 모델 적합도 중심 (RMSEA 방식)

SEM은 모델이 데이터에 얼마나 잘 맞는지를 평가하는 ‘전체 적합도’가 중요합니다. MacCallum 등(1996)은 RMSEA 지수를 활용한 검증력 분석법을 제안했습니다.

3.1. 영가설과 대립가설의 설정

보통 SEM에서는 “모델이 완벽하게 맞는다(Exact fit, RMSEA=0RMSEA=0)”를 영가설로 두지만, 현실적으로 모델은 복잡한 현실의 단순화이기에 어느 정도의 오차는 존재합니다. 따라서 우리는 다음과 같이 설정합니다.

  • 영가설(H0H_0): 모델 적합도가 좋지 않다 (RMSEA.05RMSEA \ge .05).
  • 대립가설(H1H_1): 모델 적합도가 우수하다 (RMSEA<.05RMSEA < .05).

이때, 우리가 실제로 기대하는 모델의 적합도(ϵ1\epsilon_1)를 설정(예: .02)하여 분석을 수행합니다.

위 그림처럼, 표본 크기가 커질수록 영가설 분포와 대립가설 분포 사이의 거리가 멀어지며 검증력이 높아집니다.

4. 분석 전략 (2): 개별 파라미터 중심 (Satorra-Saris 방식)

모델 전체가 잘 맞는 것보다 특정 경로(예: 교사 지지가 학업 성취에 미치는 영향)의 유의성을 검증하는 것이 주 목적인 경우입니다.

4.1. 분석 단계

  1. 유의수준(α\alpha)과 목표 검증력(π\pi) 설정: 보통 α=.05\alpha=.05, π=.80\pi=.80으로 설정합니다.
  2. 모수치 설정 (Population Values): 선행 연구를 바탕으로 기대되는 경로 계수값들을 정합니다.
  3. 모델 비교: 특정 경로가 ‘있는’ 모델(Full Model)과 ‘없는’ 모델(Reduced Model)의 카이스퀘어(χ2\chi^2) 차이를 이용해 필요한 표본 크기를 계산합니다.

5. 교육 연구 사례를 통한 실습

5.1. 가상 시나리오: “중학생의 학업 성취 모델”

중학교 상담 교사인 김 박사는 다음과 같은 가설을 세웠습니다.

  • 잠재변수: 수학 자기효능감(F1), 수학 불안(F2), 교사 지지(F3) \rightarrow 수학 성취도(F4)에 영향.
  • 각 잠재변수는 여러 개의 설문 문항(관측변수)으로 측정됩니다.

5.2. 모의 자료 생성 (Story-based Simulation)

김 박사가 238명의 학생을 대상으로 설문했다고 가정하고, R을 이용해 실제와 유사한 데이터를 생성해 보겠습니다.

R

# R을 이용한 모의 데이터 생성 코드
library(lavaan)

# 1. 인구 모델 정의 (Population Parameter Values 기준) [cite: 421, 492]
pop_model <- '
  F1 =~ 0.9*v1 + 0.8*v2 + 0.7*v3
  F2 =~ 0.8*v4 + 0.7*v5 + 0.8*v6
  F3 =~ 0.9*v7 + 0.8*v8 + 0.8*v9 + 0.7*v10
  F4 =~ 0.95*v11 + 0.9*v12
  
  # 경로 계수 설정 [cite: 492]
  F4 ~ 0.2*F1 + (-0.25)*F2 + 0.3*F3
  
  # 요인 간 상관 및 잔차 [cite: 492]
  F1 ~~ -0.3*F2
  F1 ~~ 0.4*F3
  F2 ~~ -0.3*F3
'

# 2. 데이터 생성 (N=238) 
set.seed(123)
sim_data <- simulateData(pop_model, sample.nobs = 238)
write.csv(sim_data, "school_achievement_data.csv", row.names = FALSE)

5.3. jamovi에서의 구현

현재 jamovi의 기본 SEM 모듈(jSEM)은 사후 적합도 평가는 우수하지만, ‘사전 검증력 분석’ 기능을 내장하고 있지는 않습니다. 따라서 jamovi에서 모델을 돌리기 전, WebPower 사이트나 R의 simsem 패키지를 활용해 계산해야 합니다.

실무 지침:

  1. WebPower(webpower.psychstat.org)에 접속합니다.
  2. ‘Statistical Power Analysis for Structural Equation Modeling’ 메뉴를 선택합니다.
  3. 앞서 설정한 자유도(df)와 기대하는 RMSEA 값을 입력하여 필요 샘플 수를 확인합니다.
  4. 확인된 샘플 수만큼 데이터를 수집한 후, jamovi의 jSEM 모듈에서 분석을 수행합니다.

6. 몬테카를로(Monte Carlo) 접근법의 활용

데이터가 정규분포를 따르지 않거나 결측치가 많을 것으로 예상될 때는 수식에 의존하는 분석보다 몬테카를로 시뮬레이션이 훨씬 정확합니다. 이는 컴퓨터가 가상의 데이터를 수천 번 생성하여 실제로 가설이 기각되는 비율을 직접 계산하는 방식입니다.

  • 장점: 결측치 처리 방식(MAR, MNAR 등)을 미리 반영하여 검증력을 예측할 수 있습니다.
  • 도구: R의 simsem 패키지가 대표적입니다.

7. 결론 및 제언

구조방정식 연구에서 검증력 분석은 단순히 통과해야 할 관문이 아니라, 연구 결과의 재현성(Reproducibility)을 보장하는 장치입니다.

  1. 모델이 복잡할수록 더 많은 표본이 필요합니다.
  2. 표준적인 ‘경험 법칙'(n=200n=200 등)에 의존하기보다 자신의 모델에 맞춘 맞춤형 검증력 분석을 실시하십시오.
  3. 예산이 부족하다면 계획된 결측 설계(Planned Missing Design)를 통해 효율적으로 검증력을 확보하는 방법도 고려해 볼 수 있습니다.

참고문헌

  • Bentler, P. M., & Chou, C.-P. (1987). Practical issues in structural modeling. Sociological Methods & Research, 16(1), 78–117.
  • Browne, M. W., & Cudeck, R. (1992). Alternative ways of assessing model fit. Sociological Methods & Research, 21(2), 230–258.
  • Feng, Y., & Hancock, G. R. (2025). Power analysis within a structural equation modeling framework. In Handbook of Structural Equation Modeling.
  • Hancock, G. R., & French, B. F. (2013). Power analysis in structural equation modeling. In G. R. Hancock & R. O. Mueller (Eds.), Structural equation modeling: A second course (2nd ed., pp. 117–159). Information Age.
  • MacCallum, R. C., Browne, M. W., & Sugawara, H. M. (1996). Power analysis and determination of sample size for covariance structure modeling. Psychological Methods, 1(2), 130–149.
  • Muthén, L. K., & Muthén, B. O. (2002). How to use a Monte Carlo study to decide on sample size and determine power. Structural Equation Modeling, 9(4), 599–620.
  • Satorra, A., & Saris, W. E. (1985). Power of the likelihood ratio test in covariance structure analysis. Psychometrika, 50(1), 83–90.

Chap 08. 잠재변수 모형과 구조방정식의 추정: 원리와 실제

안녕하세요, 여러분.
이번 장에서는 구조방정식 모형(SEM)과 잠재변수 모형(LVM)의 핵심 엔진이라고 할 수 있는 ‘추정(Estimation)’에 대해 깊이 있게 다뤄보겠습니다. 우리는 흔히 모형을 설정하고 버튼을 눌러 결과값을 얻지만, 그 이면에서 어떤 수학적, 통계적 과정이 일어나는지 이해하는 것은 매우 중요합니다. 특히 교육학 데이터처럼 문항 반응이 범주형(예: 리커트 척도)이거나 결측치가 있는 경우, 올바른 추정 방법을 선택하는 것이 연구의 타당성을 결정짓습니다.

1. 기초: 표기법과 모형의 프레임워크

우리가 다룰 모형은 크게 측정 모형(Measurement Model)구조 모형(Structural Model)으로 나뉩니다.

1.1 변수의 정의

Bollen(1989)의 표기법을 따르되, 범주형 데이터까지 포괄할 수 있도록 확장합니다.

  • η\eta (에타): 내생 잠재변수 (구조 모형에 의해 설명되는 잠재변수, 예: 학업 성취도)
  • ξ\xi (크사이): 외생 잠재변수 (다른 변수에 영향을 주는 잠재변수, 예: 가정 배경)
  • YY: η\eta의 관측지표 (예: 성취도 검사 점수)
  • XX: ξ\xi의 관측지표 (예: 부모 소득, 부모 학력)

1.2 모형의 구조

SEM은 관측 데이터 (Y,X)(Y, X)와 잠재변수 (η,ξ)(\eta, \xi)의 결합 분포를 다룹니다.

  • 측정 모형: 잠재변수가 관측변수를 어떻게 설명하는가? (예: X=Λxξ+δX = \Lambda_x \xi + \delta)
  • 구조 모형: 잠재변수 간의 관계는 어떠한가? (예: η=Bη+Γξ+ζ\eta = B\eta + \Gamma\xi + \zeta)

WaurimaL의 팁: 교육 연구에서 흔히 사용하는 문항반응이론(IRT) 모델도 사실은 구조적 파트가 없는(혹은 간단한) 잠재변수 모형의 일종입니다.

2. 추정 방법 선택의 5가지 기준

어떤 추정 방법을 사용할지 결정할 때, 다음 5가지 기준을 고려해야 합니다.

  1. 효율성 (Efficiency): 추정량이 참값(True Parameter)에 얼마나 빠르고 정확하게 수렴하는가? 표본이 클수록 효율적인 추정량이 선호됩니다.
  2. 모형 비교 (Model Comparison): 내재된 모형(Nested Model) 간의 비교가 용이한가? (예: χ2\chi^2 차이 검증 가능 여부)
  3. 강건성 (Robustness): 데이터가 정규분포 가정을 위반했을 때도 믿을 만한 결과를 주는가? 교육 데이터는 종종 정규성을 위반하므로 매우 중요합니다.
  4. 결측 데이터 (Missing Data): 결측치가 무작위(MCAR)인지, 아니면 특정 패턴이 있는지(MAR)에 따라 사용할 수 있는 방법이 다릅니다.
  5. 계산 비용 (Computational Cost): 계산이 얼마나 복잡하고 시간이 오래 걸리는가?

3. 완전 정보 추정량 (Full Information Estimators)

데이터의 전체 반응 패턴을 사용하여 우도(Likelihood)를 최대화하는 방법입니다.

3.1 주변최대우도추정법 (Marginal Maximum Likelihood; MML)

가장 대표적인 방법으로, 잠재변수를 적분하여 제거한 후 관측 데이터의 우도함수를 최대화합니다.

  • 장점: 모형이 정확하다면 가장 효율적입니다. 결측치가 MAR(Missing At Random)일 때도 편향 없는 추정을 제공합니다.
  • 단점: 고차원 적분이 필요하여 잠재변수가 많아지면 계산이 매우 느려집니다. 정규성 가정이 위배되면 결과가 왜곡될 수 있습니다.

3.2 베이지안 추정량 (Bayesian Estimator)

모수를 고정된 상수가 아닌 확률변수로 취급합니다. 사전분포(Prior)와 데이터(Likelihood)를 결합하여 사후분포(Posterior)를 구합니다.

  • 특징: 표본이 작거나 모형이 매우 복잡할 때 유용합니다. MCMC(Markov Chain Monte Carlo) 알고리즘을 사용하여 계산합니다.

4. 제한 정보 추정량 (Limited Information Estimators)

전체 데이터 패턴 대신, 일차(평균) 및 이차(공분산) 적률 정보만을 사용합니다. 계산이 빠르고 특정 상황에서 더 강건합니다.

4.1 연속형 변수: 모멘트 기반 추정 (ULS, GLS, WLS)

관측된 공분산 행렬(SS)과 모형이 예측하는 공분산 행렬(Σ(θ)\Sigma(\theta))의 차이를 최소화합니다.

  • WLS (Weighted Least Squares): 정규성 가정이 깨졌을 때(예: 첨도가 높을 때) 사용하지만, 매우 큰 표본이 필요합니다. 이를 보완한 것이 jamovi나 Mplus에서 자주 보는 WLSMV 같은 방법들입니다.

4.2 범주형 변수: 다단계(Multistage) 및 쌍대 우도(PML)

교육학 설문조사(예: “매우 그렇다” ~ “전혀 그렇지 않다”)는 연속형이 아닙니다. 이를 연속형처럼 다루면 오차가 발생합니다.

  • 기본 아이디어: 범주형 반응 이면에 연속적인 기저변수(Underlying Variable, XX^*)가 있다고 가정합니다.
  • 다단계(MS) 추정: 1단계에서 문항 간의 폴리코릭(Polychoric) 상관계수를 구하고, 2단계에서 이를 이용해 모수를 추정합니다.
  • 쌍대 우도 (Pairwise Maximum Likelihood; PML): 전체 우도 대신, 모든 변수 쌍(Pair)의 우도를 곱해서 추정합니다. MML보다 계산이 훨씬 빠르면서도 효율성이 높습니다.

5. 실습: 교육학 예제를 통한 적용

이제 이론을 실제 데이터에 적용해 봅시다.

시나리오: 여러분은 중학생의 ‘디지털 리터러시(DL)’‘STEM 교과 흥미(STEM)’에 미치는 영향을 연구합니다.

  • DL: 3개의 문항 (5점 리커트 척도 – 범주형)
  • STEM: 3개의 문항 (0~100점 점수 – 연속형)

5.1 모의 데이터 생성 (R 코드)

jamovi의 Rj 에디터나 R Studio에서 아래 코드를 실행하여 데이터를 생성합니다.

R

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

set.seed(1228)

# 1. 표본 크기 설정
N <- 500

# 2. 잠재변수 생성 (Digital Literacy -> STEM Interest)
# DL은 STEM에 0.6 정도의 영향력을 가짐
DL_latent <- rnorm(N, 0, 1)
STEM_latent <- 0.6 * DL_latent + rnorm(N, 0, sqrt(1 - 0.6^2))

# 3. 관측변수 생성
# DL 문항 (범주형, Threshold 적용)
dl1_star <- 0.8 * DL_latent + rnorm(N, 0, sqrt(1 - 0.8^2))
dl2_star <- 0.7 * DL_latent + rnorm(N, 0, sqrt(1 - 0.7^2))
dl3_star <- 0.85 * DL_latent + rnorm(N, 0, sqrt(1 - 0.85^2))

# 컷오프를 사용하여 5점 척도로 변환 (1~5)
cutoffs <- c(-1.5, -0.5, 0.5, 1.5)
DL1 <- as.numeric(cut(dl1_star, breaks=c(-Inf, cutoffs, Inf), labels=1:5))
DL2 <- as.numeric(cut(dl2_star, breaks=c(-Inf, cutoffs, Inf), labels=1:5))
DL3 <- as.numeric(cut(dl3_star, breaks=c(-Inf, cutoffs, Inf), labels=1:5))

# STEM 문항 (연속형)
STEM1 <- 50 + 10 * (0.8 * STEM_latent + rnorm(N, 0, 0.6))
STEM2 <- 50 + 10 * (0.75 * STEM_latent + rnorm(N, 0, 0.65))
STEM3 <- 50 + 10 * (0.9 * STEM_latent + rnorm(N, 0, 0.45))

# 데이터 프레임 생성
data <- data.frame(DL1, DL2, DL3, STEM1, STEM2, STEM3)

# 데이터 확인
head(data)

5.2 분석: jamovi (SEMLj 모듈) 활용

jamovi에서는 SEMLj 모듈을 사용하여 쉽게 분석할 수 있습니다.

  1. 데이터 불러오기: 위에서 생성한 데이터를 csv로 저장 후 jamovi에서 엽니다.
  2. 모듈 선택: SEMLj > Structural Equation Models.
  3. 모형 설정:
    • Measurement Model:
      • Latent Variable DL =~ DL1 + DL2 + DL3
      • Latent Variable STEM =~ STEM1 + STEM2 + STEM3
    • Structural Model:
      • STEM ~ DL (STEM is regressed on DL)
  4. 추정 방법(Estimation) 선택 – 중요!
    • 이 데이터에는 범주형 변수(DL1~3)가 포함되어 있습니다.
    • 일반적인 ML (Maximum Likelihood)을 사용하면 범주형 변수를 연속형으로 취급하여 편향이 발생할 수 있습니다.
    • 옵션: Estimation Method에서 Robust 또는 DWLS(Diagonally Weighted Least Squares)를 선택해야 합니다. SEMLj는 변수 타입을 자동으로 감지하여 적절한 추정법을 제안하기도 하지만, 명시적으로 설정하는 것이 좋습니다.
    • 참고: 본 내용에서 다룬 PML(Pairwise Maximum Likelihood)lavaan 패키지의 옵션(estimator="PML")을 통해 R에서 구현 가능합니다. jamovi에서는 주로 DWLS 계열이 범주형 데이터의 표준으로 쓰입니다.

5.3 분석 결과 해석 (예시)

분석 결과 테이블을 볼 때 다음 사항을 확인합니다.

  • 적합도 지수 (Goodness of Fit): CFI, TLI > 0.90, RMSEA < 0.08 인가?
    • 교재 내용 연결: WLS나 DWLS를 사용할 때는 χ2\chi^2 검증 통계량이 평균과 분산이 조정된(scaled) 형태를 띱니다.
  • 회귀계수 (Regression Weights): DL이 STEM에 미치는 영향(β\beta)이 유의한가?
    • 범주형 변수를 고려한 추정(DWLS/PML)은 일반 ML보다 표준오차(SE)를 더 정확하게 추정하여 1종 오류를 줄여줍니다.

6. 계산 알고리즘 (Computation: Under the Hood)

우리가 버튼을 누를 때 컴퓨터 내부는 어떻게 작동할까요?

6.1 수치 최적화 (Numerical Optimization)

목적함수(예: logL-log L)의 최솟값을 찾아가는 과정입니다.

  • 경사 하강법 (Gradient Descent): 가장 가파른 경사를 따라 내려갑니다. 단순하지만 느릴 수 있습니다.
  • 뉴턴-랩슨 (Newton-Raphson): 곡률(2차 미분, Hessian) 정보까지 사용하여 더 빨리 수렴합니다. 하지만 계산량이 많습니다.
  • Quasi-Newton (BFGS): Hessian 행렬을 근사하여 계산 속도와 효율성의 균형을 맞춥니다. 대부분의 SEM 소프트웨어 기본값입니다.

6.2 EM 알고리즘 (Expectation-Maximization)

잠재변수처럼 관측되지 않은 데이터가 있을 때 강력합니다.

  • E-Step: 현재 파라미터로 잠재변수의 기대치를 계산(채워 넣기).
  • M-Step: 채워진 데이터를 바탕으로 우도를 최대화(파라미터 업데이트).
  • 이 과정을 수렴할 때까지 반복합니다.

결론 및 제언

SEM 추정은 단순히 “소프트웨어 돌리기”가 아닙니다. 여러분의 데이터가 정규성을 띠는지, 범주형인지, 결측치가 있는지에 따라 적절한 도구(추정량)를 꺼내 써야 합니다.

  • 연속형 데이터 + 정규성 만족 \to MML (ML)
  • 범주형 데이터 (리커트 척도) \to WLSMV (DWLS) 또는 PML
  • 복잡한 모형 + 소표본 \to Bayesian

이 원칙을 지킬 때, 여러분의 연구 결과는 통계적으로 견고해집니다.

참고문헌

  • Bollen, K. A. (1989). Structural equations with latent variables. New York: Wiley.
  • Chen, Y., Moustaki, I., & Zhang, S. (n.d.). On the Estimation of Structural Equation Models with Latent Variables. In Chapter 8
  • Jöreskog, K. G., & Moustaki, I. (2001). Factor analysis of ordinal variables: A comparison of three approaches. Multivariate Behavioral Research, 36, 347-387.
  • Katsikatsou, M., Moustaki, I., Yang-Wallentin, F., & Jöreskog, K. G. (2012). Pairwise likelihood estimation for factor analysis models with ordinal data. Computational Statistics and Data Analysis, 56, 4243-4258.
  • Rosseel, Y. (2012). lavaan: An R package for structural equation modeling. Journal of Statistical Software, 48(2), 1-36.

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.

Chap 06. 구조방정식 모형에서의 시뮬레이션 방법

안녕하세요, 여러분.
구조방정식 모형(SEM) 연구에서 매우 중요하지만 종종 어렵게 느껴지는 ‘시뮬레이션 방법(Simulation Methods)’에 대해 말씀해 드리겠습니다.

우리가 흔히 수행하는 연구가 “한 번 수집된 데이터로 결론을 내리는 것”이라면, 시뮬레이션 연구는 “가상의 데이터를 수천 번 생성하여 통계적 방법의 성능을 실험하는 것”입니다.

분석 도구와 관련하여, jamovi는 훌륭한 분석 도구이지만, 수천 번의 반복 시뮬레이션(Looping)을 수행하는 기능은 제한적입니다. 따라서 본 강의에서는 R(lavaan 패키지)을 사용하여 시뮬레이션을 구현하는 방법을 보여드리고, 그 결과를 해석하는 방식에 집중하겠습니다.

1. 서론: 왜 시뮬레이션이 필요한가?

여러분이 새로운 교육 프로그램을 개발했다고 가정해 봅시다. 이 프로그램의 효과를 검증하기 위해 복잡한 구조방정식 모형을 세웠습니다. 그런데 고민이 생깁니다.

“표본(학생 수)이 100명이면 충분할까? 데이터가 정규분포를 따르지 않으면 어떡하지?”

기존의 교과서나 가이드라인을 찾아봐도 내 연구 상황에 딱 맞는 답을 찾기 힘든 경우가 많습니다. 바로 이럴 때 시뮬레이션 연구(몬테카를로 연구)가 필요합니다.

시뮬레이션 연구의 핵심은 “정답(참값)을 알고 있는 모집단(Population)을 연구자가 직접 만드는 것”입니다.

  • 실제 연구: 참값(Parameter)을 모름 \rightarrow 데이터를 통해 추정함.
  • 시뮬레이션 연구: 참값을 내가 설정함 \rightarrow 데이터를 생성하고 분석해서 분석 방법이 참값을 잘 맞추는지 확인함.

시뮬레이션이 필요한 대표적인 상황

  1. 새로운 통계 기법 검증: 새로운 분석 방법이 다양한 조건(예: 작은 표본, 결측치)에서 잘 작동하는지 확인할 때.
  2. 가이드라인 개발: 우리가 흔히 쓰는 CFI > .90 같은 적합도 기준은 수학 공식이 아니라 시뮬레이션 연구를 통해 만들어진 경험적 기준입니다.
  3. 검증력 분석(Power Analysis): 내 연구 모형에서 유의미한 결과를 얻기 위해 필요한 최소 표본 수를 계산할 때.

2. 시뮬레이션 연구의 설계 (Design)

시뮬레이션 연구도 일반적인 실험 연구와 똑같습니다. 독립변수(조건)를 조작하고, 종속변수(결과)를 관찰합니다.

2.1 독립변수 (우리가 조작하는 조건)

크게 데이터 특성모형 특성으로 나뉩니다.

  1. 표본 크기 (Sample Size):
    • 교육 연구에서는 학급 단위나 학교 단위 수집이 많아 표본 확보가 어렵습니다. N=50,100,200,500N=50, 100, 200, 500 등으로 변화를 주어, 언제 모수 추정이 안정되는지 확인합니다.
  2. 데이터의 비정규성 (Non-normality):
    • 학생들의 ‘학업 스트레스’ 설문은 종종 한쪽으로 치우친(Skewed) 분포를 보입니다. 정규분포를 위반했을 때 추정치가 얼마나 왜곡되는지 봅니다. 이를 생성하기 위해 Vale & Maurelli (1983) 방법이 자주 쓰입니다.
  3. 결측치 (Missing Data):
    • 종단 연구에서 학생들이 전학을 가거나 응답을 안 하는 경우입니다. 결측 메커니즘(MCAR, MAR, MNAR)과 결측 비율을 조작합니다.
  4. 모형 오설정 (Model Misspecification):
    • 현실 데이터는 완벽하지 않습니다. 시뮬레이션에서는 일부러 ‘중요한 경로를 빠뜨린 모델’을 만들어, 적합도 지수가 이를 얼마나 잘 잡아내는지 테스트합니다.

2.2 종속변수 (우리가 확인하는 결과)

시뮬레이션의 성능을 평가하는 지표들입니다.

  1. 수렴률 (Convergence Rate): 분석이 에러 없이 완료된 비율.
  2. 편의 (Bias): 추정된 값과 내가 설정한 참값의 차이(공식: Relative Bias=θ^θθ\text{Relative Bias} = \frac{\hat{\theta} – \theta}{\theta}). 일반적으로 5% 미만이면 양호하다고 봅니다.
  3. 표준오차 (Standard Errors): 추정치의 변동성. 이게 정확해야 유의성 검정(pp값)을 믿을 수 있습니다.
  4. 검증력 (Power): 실제로 효과가 있을 때, 있다고 찾아낼 확률.

3. 실전: 교육 연구 시뮬레이션 예제 (R 활용)

이제 구체적인 시나리오를 통해 시뮬레이션을 수행해 보겠습니다.

[시나리오: 교사의 자율성 지지가 학생 성취도에 미치는 영향]

  • 배경: 한 교육청에서 교사가 학생의 자율성을 지지해주면(X), 학생의 자기효능감(M)이 오르고, 결국 학업 성취도(Y)가 오르는지 확인하고자 합니다.
  • 문제: 예산 문제로 데이터를 100명밖에 못 모을 것 같습니다. 이 인원으로 매개효과를 검증할 수 있을까요? (검증력 0.80 이상 목표)

이 문제는 R의 lavaan 패키지를 사용하여 몬테카를로 시뮬레이션을 돌려보겠습니다.

단계 1: 모집단 모형(Population Model) 정의

선행연구를 바탕으로 참값(True Parameter)을 설정합니다.

  • 자율성 지지 \rightarrow 자기효능감 (경로 a): 0.5 (중간 효과)
  • 자기효능감 \rightarrow 성취도 (경로 b): 0.5 (중간 효과)
  • 자율성 지지 \rightarrow 성취도 (경로 c’): 0.1 (작은 직접 효과)

단계 2 & 3: 데이터 생성 및 반복 분석 (Simulation)

표본 크기를 50명, 100명, 200명, 500명으로 늘려가며 각각 1,000번씩 실험합니다.

(참고: 아래 코드는 RStudio에서 바로 실행 가능합니다.)

R

# 필수 패키지 로드
if(!require(lavaan)) install.packages("lavaan")
if(!require(tidyverse)) install.packages("tidyverse")
library(lavaan)
library(tidyverse)

# 1. 시뮬레이션 조건 설정
sample_sizes <- c(50, 100, 200, 500)
n_replications <- 1000  # 반복 횟수 (보통 1,000번 이상 권장)

# 2. 모집단 모형 (우리가 정한 참값)
# 교사의 자율성지지(X) -> 자기효능감(M) -> 성취도(Y)
pop_model <- '
  M ~ 0.5*X
  Y ~ 0.5*M + 0.1*X
  X ~~ 1*X
  M ~~ 1*M
  Y ~~ 1*Y
'

# 3. 분석 모형 (연구자가 실제로 돌릴 모형)
analyze_model <- '
  M ~ a*X
  Y ~ b*M + c*X
  # 매개효과(indirect effect) 정의
  ab := a*b
'

# 결과 저장용 데이터프레임
results <- data.frame()

set.seed(1234) # 재현성을 위한 시드 설정 [cite: 376]

# 4. 시뮬레이션 루프 (Loop)
for (N in sample_sizes) {
  cat("Simulating Sample Size:", N, "\n")
  
  sig_count <- 0 # 유의미한 결과 카운트
  
  for (i in 1:n_replications) {
    # A. 데이터 생성 (simulateData 함수 사용)
    sim_data <- simulateData(model = pop_model, sample.nobs = N)
    
    # B. 모델 적합
    fit <- sem(analyze_model, data = sim_data)
    
    # C. 결과 추출 (수렴한 경우만)
    if (inspect(fit, "converged")) {
      # 매개효과(ab)의 p-value 추출
      pe <- parameterEstimates(fit)
      p_val <- pe[pe$label == "ab", "pvalue"]
      
      # 유의수준 .05 기준 검정
      if (p_val < 0.05) sig_count <- sig_count + 1
    }
  }
  
  # 검증력(Power) 계산 = 유의미한 횟수 / 전체 반복 횟수
  power <- sig_count / n_replications
  results <- rbind(results, data.frame(Sample_Size = N, Power = power))
}

print(results)

단계 4: 결과 해석 및 시각화

위의 코드를 실행하면 표본 크기별 검증력(Power)이 계산됩니다. 이를 통해 우리는 “100명일 때 검증력이 충분한가?”에 대한 답을 얻을 수 있습니다.

제가 미리 시뮬레이션한 결과를 바탕으로 그래프를 그려보겠습니다.

  • 결과 해석:
    • N=50N=50: 검증력이 약 0.35로 매우 낮습니다. 연구 실패 확률이 높습니다.
    • N=100N=100: 검증력이 약 0.72입니다. 통상적 기준인 0.80에 약간 못 미칩니다.
    • N=200N=200: 검증력이 0.95를 넘어섭니다. 매우 안정적입니다.
    • 결론: 교사 자율성 지지 연구를 위해서는 최소 120~130명 정도의 학생을 모집하는 것이 안전합니다. 100명은 다소 위험할 수 있습니다.

4. 시뮬레이션 결과 보고 및 평가 방법

시뮬레이션 연구를 마치고 논문을 쓸 때, 단순히 표만 제시하는 것이 아니라 통계적으로 요약해야 합니다.

4.1 편의(Bias) 평가

추정된 모수(예: 경로계수)가 참값과 얼마나 차이나는지 봅니다.

  • 상대적 편의(Relative Bias): Bias(θ^)=(θ^θθ)/R\text{Bias}(\hat{\theta}) = \sum (\frac{\hat{\theta} – \theta}{\theta}) / R.
    • Hoogland & Boomsma (1998)는 5% 미만이면 편의가 없다고 봅니다.

4.2 평균제곱오차 (MSE)

편의(Bias)와 변동성(Variance)을 동시에 고려한 지표입니다. MSE가 작을수록 더 정확하고 안정적인 추정량임을 의미합니다.

MSE(θ^)=Bias2+Var(θ^)\text{MSE}(\hat{\theta}) = \text{Bias}^2 + \text{Var}(\hat{\theta})

4.3 적합도 지수 평가

CFI, TLI, RMSEA 등이 표본 크기나 데이터 분포에 따라 어떻게 변하는지 보고합니다. 예를 들어, “표본이 200명 미만일 때 RMSEA가 과대추정되는 경향이 있다”와 같은 결론을 내릴 수 있습니다.

5. 결론 및 제언

시뮬레이션 연구는 우리가 현실에서 마주하는 복잡한 데이터 상황(결측, 비정규성 등)에서 통계 모형이 얼마나 강건한지(Robust) 알려주는 강력한 도구입니다.

WaurimaL의 조언:

  1. 목적을 명확히 하세요: 단순한 가이드라인 확인용인지, 새로운 방법론 검증인지 정해야 합니다.
  2. 외적 타당도(External Validity)를 고려하세요: 시뮬레이션 조건(예: 학급 크기, 상관계수 크기)이 실제 학교 현장 데이터와 비슷해야 결과가 의미가 있습니다.
  3. 코드 검증: 본격적인 1,000번 반복 전에, 1번만 큰 표본(N=100,000N=100,000)으로 돌려보세요. 이때 참값이 정확히 나오지 않으면 코드에 오류가 있는 것입니다.

여러분의 연구가 탄탄한 통계적 근거 위에 서기를 바랍니다. 이 장의 내용을 통해 자신의 연구 설계에 맞는 표본 크기를 산출하거나, 분석 방법의 타당성을 입증하는 데 활용해 보세요.


참고문헌

  • Bandalos, D. L., & Leite, W. (2013). The role of simulation in structural equation modeling. In G. R. Hancock & R. Mueller (Eds.), A second course in structural equation modeling (2nd ed.). Information Age.
  • Bradley, J. V. (1978). Robustness? British Journal of Mathematical and Statistical Psychology, 31, 144-152.
  • Hoogland, J. J., & Boomsma, A. (1998). Robustness studies in covariance structure modeling: An overview and meta-analysis. Sociological Methods & Research, 26, 329-367.
  • Hu, L., & Bentler, P. M. (1999). Cutoff criteria for fit indices in covariance structure analysis: Conventional criteria versus new alternatives. Structural Equation Modeling: A Multidisciplinary Journal, 6, 1-55.
  • Leite, W. L., Bandalos, D. L., & Shen, Z. (n.d.). Simulation Methods in Structural Equation Modeling. (Chapter 6 of the provided text).
  • Muthén, L. K., & Muthén, B. O. (2002). How to use a Monte Carlo study to decide on sample size and determine power. Structural Equation Modeling, 9, 599-620.
  • Vale, C. D., & Maurelli, V. A. (1983). Simulating multivariate non-normal distributions. Psychometrika, 48, 465-471.

Chap 05. 구조방정식 모델링에서의 잠재변수 (Latent Variables in SEM)

구조방정식 모형(SEM)에서 가장 핵심적인 개념인 잠재변수(Latent Variables)에 대해 살펴보고, 이해를 돕기 위해 학교 현장의 예를 들어 설명해 드리겠습니다.

안녕하세요, 여러분. 오늘 우리는 사회과학, 특히 교육학에서 눈에 보이지 않는 대상을 어떻게 과학적으로 측정하고 분석하는지에 대해 깊이 있게 다룰 것입니다.

1. 잠재변수란 무엇인가? (Foundations)

1.1. 개념적 정의: 보이지 않는 것을 그리기

교육학에서는 ‘학업 동기’, ‘자아존중감’, ‘수리 능력’과 같은 개념을 다룹니다. 이것들의 공통점은 무엇일까요? 바로 직접 눈으로 볼 수도, 자로 잴 수도 없다는 점입니다.

  • 추상적 개념(Constructs): 이론적 논의에서 중요한 역할을 하지만 직접 관찰할 수 없는 속성들입니다. 예를 들어, 우리가 학생의 ‘수학 능력’을 평가한다고 할 때, 우리는 머릿속에 있는 능력 그 자체를 보는 것이 아니라, 그 학생이 푼 ‘시험 문제(관찰변수)’를 통해 능력을 추론합니다.
  • 잠재변수(Latent Variable): 이러한 추상적 개념을 모델 내에서 표현한 것입니다. 연구자는 이를 독립변수, 매개변수, 또는 종속변수로 활용할 수 있습니다.

1.2. 잠재변수의 다양한 정의와 ‘표본 실현(Sample Realization)’

학자마다 잠재변수를 정의하는 방식이 조금씩 다릅니다.

  1. 플라톤적 관점 (Realist View): 잠재변수는 실제로 존재하지만 우리가 관찰하지 못할 뿐이라는 입장입니다.
  2. 구성주의적 관점: 연구자가 현상을 설명하기 위해 만든 ‘허구적 개념’이라는 입장도 있습니다.
  3. 데이터 축소 관점: 복잡한 여러 데이터를 요약하는 수단으로 보기도 합니다.

WaurimaL의 Pick: Bollen(2002)의 “표본 실현(Sample Realization)” 정의.

이 정의는 가장 포괄적입니다. 어떤 변수가 표본의 적어도 일부 관측치에 대해 구체적인 값(실현된 값)을 가지지 못한다면, 그것은 잠재변수입니다.

  • 예를 들어, 모든 학생의 ‘창의성’ 점수가 데이터 시트에 비어 있다면, 창의성은 잠재변수입니다.
  • 이 정의는 결측치(missing values), 오차항(error terms), 교란항(disturbances)까지 모두 잠재변수로 포용합니다.

2. 지표의 두 얼굴: 반영지표 vs. 원인지표

SEM을 사용할 때 가장 혼동하기 쉬운 부분이 바로 지표(Indicator)와 잠재변수의 관계입니다.

2.1. 반영지표 (Reflective Indicators)

우리가 흔히 사용하는 방식입니다. 잠재변수(원인)가 관찰변수(결과)에 영향을 미칩니다.

  • 예시: ‘학교 폭력 피해 불안감(η\eta)’이 높으면 \rightarrow ‘등교하기 싫다(y1y_1)’, ‘악몽을 꾼다(y2y_2)’, ‘식욕이 없다(y3y_3)’는 응답이 높게 나타납니다.
  • 특징:
    • 화살표 방향: 잠재변수 \rightarrow 지표
    • 지표들끼리 상관관계가 높습니다 (불안감이 높으면 세 가지 증상 모두 나타남).
    • 수식: y1=α1+λ1η1+ϵ1y_1 = \alpha_1 + \lambda_1\eta_1 + \epsilon_1. 여기서 ϵ\epsilon은 측정 오차입니다.

2.2. 원인지표 (Causal/Formative Indicators)

반대로 지표들이 모여서 잠재변수를 형성하는 경우입니다.

  • 예시:’가정의 사회경제적 지위(SES, η\eta)’.
    • ‘부모의 소득(x1x_1)’, ‘부모의 학력(x2x_2)’, ‘직업 지위(x3x_3)’가 합쳐져서 SES를 결정합니다.
  • 특징:
    • 화살표 방향: 지표 \rightarrow 잠재변수.
    • 지표들끼리 상관관계가 없어도 됩니다 (소득이 높다고 반드시 학력이 높은 것은 아님).
    • 수식: η1=γ1x1+γ2x2+γ3x3+ζ1\eta_1 = \gamma_1x_1 + \gamma_2x_2 + \gamma_3x_3 + \zeta_1.

사고 실험 (Thought Experiment):

지표 하나를 억지로 높였을 때 잠재변수가 변합니까? 아니면 잠재변수가 변해야 지표가 변합니까?

  • 친구와 보내는 시간을 늘린다고(xx) 사회성(η\eta)이 바로 좋아지진 않을 수 있습니다. (원인지표 가능성)
  • 하지만 사회성(η\eta)이 좋아지면 친구, 가족, 동료와 보내는 시간(yy)이 모두 늘어날 것입니다. (반영지표).

3. 잠재변수의 확장: 더 복잡한 교육 현장 모델링

단순한 설문조사를 넘어, 복잡한 교육 데이터를 분석하기 위한 모델들을 소개합니다.

3.1. 잠재성장모형 (Latent Growth Curve Models)

학생들의 성적은 시간이 지남에 따라 변합니다. 우리는 이 ‘변화’ 자체를 잠재변수로 만들 수 있습니다.

  • 구조:
    • 초기치(Intercept, η1\eta_1): 1학년 때의 국어 성적 출발점.
    • 변화율(Slope, η2\eta_2): 학년이 올라갈수록 성적이 오르거나 떨어지는 속도.
  • 이 모델을 통해 “초기 성적이 낮은 학생이 나중에 더 빨리 성장하는가?”와 같은 질문에 답할 수 있습니다.

3.2. 성장혼합모형 (Growth Mixture Models)

모든 학생이 똑같은 패턴으로 성장하지 않습니다. 어떤 그룹은 성적이 급상승하고, 어떤 그룹은 정체될 수 있습니다.

  • 잠재계층(Latent Class, ξ\xi): 학생들을 보이지 않는 하위 집단(예: ‘고성취 급성장형’, ‘저성취 정체형’)으로 분류하는 범주형 잠재변수입니다.

3.3. 2차 요인 및 이중 요인 모델 (Second-order & Bifactor Models)

  • 2차 요인 모델: ‘수리력’, ‘언어력’, ‘공간지각력’이라는 1차 잠재변수들이 사실은 ‘일반 지능(gg)’이라는 상위(2차) 잠재변수에서 비롯되었다고 보는 모델입니다.
  • 이중 요인(Bifactor) 모델: 문항의 응답이 ‘일반적인 특성(예: 우울)’과 ‘특수한 맥락(예: 부정적 문항 뉘앙스)’에 동시에 영향을 받는다고 가정합니다.

4. 실습: jamovi와 R을 활용한 분석

이제 가상의 교육 데이터를 생성하여 실제 분석을 어떻게 수행하는지 보여드리겠습니다. jamovi는 기본적으로 lavaan 패키지를 기반으로 작동하므로, R 코드를 통해 데이터를 생성하고 분석하는 과정을 보여드리고, 이를 jamovi에서 어떻게 구현하는지 설명하겠습니다.

4.1. 시나리오: “디지털 리터러시와 학업 성취도 변화”

연구 배경: 경기도 소재 A고등학교 학생 200명을 대상으로 ‘디지털 리터러시’가 3년간의 ‘자기주도학습 능력’ 변화에 미치는 영향을 연구하고자 합니다.

  • 잠재변수 1 (외생): 디지털 리터러시 (DigiLit) – 반영지표 3개 (DL1: 정보검색, DL2: 비판적 평가, DL3: 콘텐츠 생성)
  • 잠재변수 2 (성장): 자기주도학습 초기치 (Intercept)
  • 잠재변수 3 (성장): 자기주도학습 변화율 (Slope)
  • 관측변수 (종속): 1학년~3학년 자기주도학습 검사 점수 (SDL_T1, SDL_T2, SDL_T3)

4.2. 데이터 생성 및 분석 (R Code)

이 코드는 R에서 실행 가능하며, jamovi의 Rj 모듈을 통해서도 실행할 수 있습니다.

R

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

set.seed(1226) # 재현성을 위한 시드 설정

# 1. 데이터 생성 (N = 200)
N <- 200

# 디지털 리터러시(DL) 잠재변수 생성 (평균 0, 분산 1)
DigiLit <- rnorm(N, 0, 1)

# 반영지표 생성 (측정오차 포함) 
# y = lambda * eta + error
DL1 <- 0.7 * DigiLit + rnorm(N, 0, 0.5)
DL2 <- 0.8 * DigiLit + rnorm(N, 0, 0.5)
DL3 <- 0.75 * DigiLit + rnorm(N, 0, 0.5)

# 자기주도학습(SDL) 성장모형 데이터 생성
# 초기치(Intercept)는 DL의 영향을 받음
Intercept <- 50 + 5 * DigiLit + rnorm(N, 0, 5)
# 변화율(Slope)도 DL의 영향을 받음 (DL이 높으면 더 빨리 성장)
Slope <- 2 + 1.5 * DigiLit + rnorm(N, 0, 2)

# 시점별 점수 생성 (T1, T2, T3)
# Score_t = Intercept + Slope * (Time_t) + error
SDL_T1 <- Intercept + Slope * 0 + rnorm(N, 0, 3)
SDL_T2 <- Intercept + Slope * 1 + rnorm(N, 0, 3)
SDL_T3 <- Intercept + Slope * 2 + rnorm(N, 0, 3)

# 데이터 프레임 생성
Data <- data.frame(DL1, DL2, DL3, SDL_T1, SDL_T2, SDL_T3)

# 2. jamovi/R 분석을 위한 모델 구문 (Lavaan Syntax)
# 이 구문은 jamovi SEM 모듈(SEMLj)에서도 그대로 사용 가능합니다.

model_syntax <- '
  # 측정 모델 (Measurement Model) [cite: 34]
  Digital_Lit =~ DL1 + DL2 + DL3

  # 잠재 성장 모델 (Latent Growth Model) 
  # 1, 1, 1은 절편(Intercept), 0, 1, 2는 기울기(Slope)를 의미
  i =~ 1*SDL_T1 + 1*SDL_T2 + 1*SDL_T3
  s =~ 0*SDL_T1 + 1*SDL_T2 + 2*SDL_T3

  # 구조 모델 (Structural Model): 디지털 리터러시가 성장요인에 미치는 영향
  i ~ Digital_Lit
  s ~ Digital_Lit
'

# 3. 모델 적합 (Estimation)
fit <- sem(model_syntax, data = Data)

# 4. 결과 요약
summary(fit, fit.measures=TRUE, standardized=TRUE)

# 5. 시각화 (Path Diagram)
semPaths(fit, whatLabels = "std", layout = "tree2", 
         edge.label.cex = 1.0, curvePivot = TRUE,
         main = "Digital Literacy & SDL Growth Model")

4.3. jamovi에서의 분석 절차

  1. 데이터 불러오기: 위에서 생성된 csv 파일을 jamovi에서 엽니다.
  2. SEMLj 모듈 설치: jamovi 라이브러리에서 SEMLj (또는 jmv의 기본 SEM 기능이 있다면 활용)를 설치합니다.
  3. Syntax 입력:
    • SEMLj 모듈을 열고 Syntax 모드를 선택합니다.
    • 위 R 코드의 model_syntax 부분(작은따옴표 안의 내용)을 복사해서 붙여넣습니다.
  4. 결과 확인:
    • CFI/TLI: 0.9 이상이면 좋은 적합도입니다.
    • RMSEA: 0.08 이하(이상적으로는 0.05 이하)인지 확인합니다.
    • 회귀계수(Estimates): Digital_Liti(초기치)와 s(기울기)에 미치는 영향(β\beta)이 유의한지(p < .05) 확인합니다.

5. 고려사항 및 해석 시 주의점 (Additional Considerations)

분석을 마쳤다고 끝이 아닙니다. 여러분께 당부하고 싶은 몇 가지 중요한 이슈가 있습니다.

5.1. 식별 (Identification)

모델이 수학적으로 풀릴 수 있는가에 대한 문제입니다.

  • 척도 설정(Scaling): 잠재변수는 단위가 없습니다. 따라서 지표 중 하나를 1로 고정(Unit loading)하거나, 잠재변수의 분산을 1로 고정하여 단위를 만들어 주어야 합니다.
  • 지표 수 규칙: 하나의 잠재변수는 최소 3개의 반영지표를 가질 때 가장 안정적으로 식별됩니다 (Three Indicator Rule).

5.2. 해석의 오류 (Interpretation)

많은 연구자가 잠재변수 η\eta를 ‘오차가 없는 완벽한 진실’이라고 착각합니다.

  • 하지만 잠재변수는 우리가 설정한 지표들의 공통 분산(Common Variance)일 뿐입니다.
  • 만약 모든 지표가 ‘자기보고식 설문’으로 측정되었다면, 잠재변수에는 실제 능력뿐만 아니라 ‘자기보고 편향’이라는 오차도 포함되어 있을 수 있습니다.

6. 결론 (Summary)

우리는 오늘 눈에 보이지 않는 교육적 개념들을 잠재변수로 정의하고, 이를 반영지표원인지표를 통해 모델링하며, 더 나아가 성장모형으로 확장하는 방법까지 배웠습니다.

Bollen과 Hoyle이 강조했듯, 잠재변수는 단순한 통계적 유희가 아닙니다. 그것은 추상적인 이론과 구체적인 데이터를 연결해 주는 가장 강력한 다리입니다. 여러분이 수행할 연구에서 이 다리를 튼튼하게 건설하시길 바랍니다.

참고문헌 (References)

  • Bollen, K. A., & Hoyle, R. H. (2012). Latent variables in structural equation modeling. In R. H. Hoyle (Ed.), Handbook of structural equation modeling (pp. 56-67). Guilford Press. [Based on source text provided]
  • Bollen, K. A. (2002). Latent variables in psychology and the social sciences. Annual Review of Psychology, 53, 605-634.
  • Bollen, K. A., & Ting, K.-F. (2000). A tetrad test for causal indicators. Psychological Methods, 5, 3-22.
  • Jöreskog, K. G., & Sörbom, D. (1979). Advances in factor analysis and structural equation models. Abt Books.

Chap 04. 구조방정식 모델링을 위한 시각화 (Expanded)

오늘은 SEM 분석의 여정에서 ‘지도’와 ‘나침반’ 역할을 하는 시각화(Visualizations)에 대해 깊이 있게 다뤄보겠습니다.

구조방정식은 수많은 변수 간의 복잡한 관계를 다루기 때문에, 단순히 수치만 봐서는 길을 잃기 십상입니다. 텍스트에 기반한 설명뿐만 아니라, 실제 교육 현장의 데이터를 가정한 시뮬레이션을 통해 이해를 돕겠습니다.

오늘 다룰 핵심 내용은 1) 모델 명세(설계도 그리기), 2) 데이터 탐색(재료 확인하기), 3) 결과 제시(스토리텔링)입니다.

1. 서론: 왜 시각화인가?

시각화는 단순히 결과를 예쁘게 포장하는 것이 아닙니다. 변수 간의 복잡한 관계를 접근하기 쉽고 간결하게 전달하는 데 필수적입니다. 통계 그래픽은 다변량 데이터를 탐색하고, 모델링 진단을 수행하며, 결과를 제시하는 중요한 역할을 합니다. 특히 SEM은 복잡한 방향성(화살표) 및 비방향성(상관) 관계의 네트워크를 표현하므로, 연구자들은 그래픽에 의존하여 모델을 명시하고 분석하고 결과를 제시합니다.

2. 모델 명세 (Model Specification): 설계도 그리기

모델 명세는 여러분의 가설을 수학적 방정식이나 경로도(Path Diagram)로 공식화하는 과정입니다. LISREL 행렬 표기법과 경로도는 서로 동형(isomorphism), 즉 완전히 일치하는 관계입니다.

2.1 기본 기호와 약속 (Syntax)

교육학 연구에서 흔히 보는 도형들의 의미를 명확히 합시다.

  • 직사각형 (\square): 관측변수(Manifest Variable, MV). 실제 설문지 문항 점수나 시험 점수입니다. (예: 국어 성적, ‘수업에 만족한다’는 응답).
  • 원/타원 (\bigcirc): 잠재변수(Latent Variable, LV). 직접 측정할 수 없으나 관측변수를 통해 추정되는 개념입니다. (예: 학업적 자기효능감, 교사 애착). 오차항(Error term)도 잠재변수의 일종이므로 원으로 표시합니다.
  • 화살표 (\rightarrow): 방향성 관계(Directional relationship). 회귀계수와 같습니다. “A가 B에 영향을 미친다”는 뜻입니다.
  • 양방향 화살표 (\leftrightarrow): 비방향성 관계(Nondirectional relationship). 공분산이나 상관관계를 의미합니다.

2.2 식별(Identification): 척도 설정하기

이 부분이 학생들이 가장 어려워하는 부분입니다. 잠재변수는 가상의 개념이라 척도(단위)가 없습니다. 따라서 우리가 단위를 강제로 부여해야(Scale setting) 추정이 가능해집니다.

방법 1: 단위 적재치 고정 (Marker Variable)

  • 가장 흔한 방법입니다. 잠재변수에서 나가는 화살표 중 하나를 ‘1.0’으로 고정합니다.
  • 교육 예시: ‘학업 스트레스’라는 잠재변수가 있을 때, ‘나는 시험 때 긴장한다’라는 1번 문항의 경로를 1로 고정하면, 잠재변수는 이 문항의 5점 척도 단위를 따라갑니다.

방법 2: 잠재변수 분산 고정 (Standardization)

  • 잠재변수의 분산을 ‘1.0’으로 고정합니다.
  • 이 경우 잠재변수는 표준점수(Z-score)와 같아지며, 해석 시 “잠재변수가 1 표준편차 증가할 때…”라고 해석합니다.

2.3 교육학 예제 모델: “자기조절학습이 학업성취에 미치는 영향”

다음과 같은 가상의 연구 모델을 상상해 봅시다.

  • 외생변수(원인): 부모의 지원 (Parental Support)
  • 내생변수(매개/결과): 자기조절학습 (Self-Regulated Learning), 학업성취 (Achievement)
  • 가설: 부모의 지원은 자기조절학습을 높이고, 이는 다시 학업성취를 높일 것이다.

3. 데이터 탐색 (Modeling the Data): 재료 맛보기

모델을 돌리기 전에 데이터를 시각적으로, 수치적으로 탐색하는 ‘탐정 놀이(Sleuthing)’가 필수입니다. SEM은 다변량 분석이므로, 개별 변수의 분포뿐만 아니라 변수 간의 관계(행렬 플롯)를 함께 봐야 합니다.

3.1 시뮬레이션 데이터 생성 (Storytelling)

여러분의 이해를 돕기 위해 가상의 고등학교 1학년 학생 200명의 데이터를 생성해 보겠습니다.

[시나리오: S고등학교의 디지털 리터러시 연구]

S고등학교 교사들은 학생들의 ‘디지털 리터러시(DL)’‘온라인 학습 몰입(Eng)’을 통해 ‘학업 만족도(Sat)’에 어떤 영향을 주는지 알고 싶습니다.

  • 측정 도구: 각 요인당 3문항 (5점 리커트 척도).
  • 특이사항: DL의 3번 문항은 역채점 문항일 가능성이 있어 분포 확인이 필요함.

이 데이터를 분석하기 전, 행렬 플롯(Matrix Plot)을 통해 다음을 확인해야 합니다.

  1. 정규성: 리커트 척도라 완벽한 정규분포는 아니지만, 심하게 찌그러져(Skewed) 있는지 확인.
  2. 상관관계: 같은 잠재변수로 묶인 문항들끼리 상관이 높은지(r>.40r > .40).
  3. 특이점: 산점도에서 튀는 값이나 비선형 패턴이 있는지.

3.2 jamovi & R을 활용한 시각화 구현

jamovi는 GUI 기반이라 편리하지만, 교재의 [Figure 4.3]과 같은 정교한 행렬 플롯을 그리려면 jamovi 내의 Rj 모듈(R 코드 실행기)을 쓰거나 R을 써야 합니다. 여기서는 psych 패키지를 활용한 코드를 소개합니다.

Note. From Handbook of structural equation modeling (p. 87), by R. H. Hoyle (Ed.), 2023, Guilford Press. Copyright 2023 by Guilford Press.

R

# R 코드 (jamovi Rj 에디터에 붙여넣기 가능)
# 가상 데이터 생성 및 시각화

set.seed(123)
library(psych)
library(MASS)

# 1. 데이터 생성 (N=200)
# 잠재변수 간 상관행렬 정의 (DL -> Eng -> Sat)
Sigma <- matrix(c(1.0, 0.5, 0.4,
                  0.5, 1.0, 0.6,
                  0.4, 0.6, 1.0), 3, 3)
latents <- mvrnorm(n = 200, mu = c(0,0,0), Sigma = Sigma)

# 관측변수 생성 (각 잠재변수당 3문항, 요인부하량 0.7~0.8 가정 + 오차)
create_item <- function(latent, loading) {
  item <- loading * latent + sqrt(1 - loading^2) * rnorm(200)
  item <- round(item * 1 + 3) # 5점 척도로 변환 (평균 3)
  item <- pmax(1, pmin(5, item)) # 1~5점 범위 제한
  return(item)
}

Data <- data.frame(
  DL1 = create_item(latents[,1], 0.8),
  DL2 = create_item(latents[,1], 0.75),
  DL3 = create_item(latents[,1], 0.7),
  Eng1 = create_item(latents[,2], 0.8),
  Eng2 = create_item(latents[,2], 0.85),
  Eng3 = create_item(latents[,2], 0.75),
  Sat1 = create_item(latents[,3], 0.8),
  Sat2 = create_item(latents[,3], 0.8),
  Sat3 = create_item(latents[,3], 0.7)
)

# 2. 행렬 플롯 (Exploratory Graphic)
# 교재 [Figure 4.3]과 유사한 형태: 대각선(히스토그램), 하단(산점도), 상단(상관)
pairs.panels(Data, 
             method = "pearson", # 상관계수
             hist.col = "#00AFBB",
             density = TRUE,  # 밀도 곡선
             ellipses = TRUE, # 상관 타원
             lm = TRUE,       # 선형 회귀선
             main = "디지털 리터러시, 몰입, 만족도 문항 간 행렬 플롯")

[분석 포인트]

  • 위 코드를 실행하여 나온 그래프를 볼 때, DL1, DL2, DL3 끼리의 상관이 높다면(타원이 좁고 길쭉함), 이들이 하나의 요인(디지털 리터러시)으로 묶일 수 있음을 시사합니다.
  • 대각선의 히스토그램을 보고 한쪽으로 쏠림(천장/바닥 효과)이 없는지 확인합니다.

4. 결과 제시 (Presentation of Results): 효과적인 전달

분석이 끝나면 결과를 논문이나 발표 자료에 실어야 합니다. 이때 경로도, 표, 점 도표(Dot Plot) 세 가지 방법이 있습니다.

4.1 경로도 (Path Diagrams)

  • 장점: 모델의 구조와 주요 수치를 한눈에 직관적으로 보여줍니다.
  • 단점: 모델이 복잡해지면 정보 과부하가 걸립니다. 효과 크기나 신뢰구간(CI)까지 다 적으면 너무 지저분해집니다.
  • 팁: 작은 모델에 추천합니다. jamovi의 SEMLj 모듈은 분석 후 자동으로 경로도를 그려줍니다.

4.2 표 (Tables)

  • 장점: 많은 정보(추정치, 표준오차, p값, 신뢰구간)를 콤팩트하게 담을 수 있습니다.
  • 단점: 수치들의 상대적 크기를 한눈에 비교하기 어렵습니다.
  • 팁: APA 스타일로 정리할 때 필수적입니다.

4.3 점 도표 (Dot Plots): 강력 추천

가장 강조하는 방식입니다.

  • 개념: 추정치(Estimate)를 점으로 찍고, 95% 신뢰구간(CI)을 양옆의 콧수염(Whisker)으로 표현합니다.
  • 장점:
    1. 비교 용이성: 어떤 경로 계수가 가장 큰지 시각적으로 즉시 비교 가능합니다.
    2. 유의성 판단: 신뢰구간이 0을 포함하는지(수염이 0 세로선을 건드리는지)를 보고 통계적 유의성을 직관적으로 판단합니다.
    3. 정렬(Ordering): 크기순으로 정렬하면 메시지가 더 명확해집니다.

[R을 이용한 점 도표 예시 생성]

여러분이 논문에 쓸 때 참고할 수 있도록, 위 시나리오 데이터의 분석 결과를 가정한 점 도표를 그려보겠습니다.

R

# 필요한 패키지 로드 (없으면 install.packages("ggplot2") 실행)
if (!require(ggplot2)) install.packages("ggplot2")
library(ggplot2)

# 1. SEM 분석 결과 데이터 생성 (가상 데이터)
# 실제 분석에서는 parameterEstimates(fit) 등의 함수로 추출한 값을 사용합니다.
sem_results <- data.frame(
  Type = c(rep("구조 경로 (Structural)", 3), rep("측정 요인부하량 (Measurement)", 3)),
  Parameter = c("디지털 리터러시 -> 몰입", 
                "몰입 -> 학업 만족도", 
                "디지털 리터러시 -> 학업 만족도",
                "DL1 (문항1)", "DL2 (문항2)", "DL3 (문항3)"),
  Estimate = c(0.65, 0.55, 0.15, 0.80, 0.75, 0.70), # 표준화 계수
  Lower_CI = c(0.50, 0.40, -0.05, 0.70, 0.65, 0.60), # 95% 신뢰구간 하한
  Upper_CI = c(0.80, 0.70, 0.35, 0.90, 0.85, 0.80)   # 95% 신뢰구간 상한
)

# 2. 요인 순서 정렬 (크기순 정렬이 시각적 인지에 유리함 [cite: 848])
# Estimate 크기에 따라 Parameter 순서를 재조정
sem_results$Parameter <- reorder(sem_results$Parameter, sem_results$Estimate)

# 3. 점 도표(Dot Plot) 그리기
ggplot(sem_results, aes(x = Estimate, y = Parameter, color = Type)) +
  
  # (1) 0점 기준선: 유의성 판단의 기준 (수직 점선)
  geom_vline(xintercept = 0, linetype = "dashed", color = "gray50") +
  
  # (2) 오차 막대 (Error Bars): 95% 신뢰구간 표현
  geom_errorbarh(aes(xmin = Lower_CI, xmax = Upper_CI), 
                 height = 0.2, size = 0.8) +
  
  # (3) 점 (Points): 추정치(계수) 표현
  geom_point(size = 3.5) +
  
  # (4) 디자인 테마 및 색상 설정
  scale_color_manual(values = c("steelblue", "darkorange")) +
  theme_classic(base_family = "sans") + # 깔끔한 논문 스타일
  
  # (5) 라벨 및 범례 설정
  labs(title = "구조방정식 모델링 분석 결과: 표준화 계수 및 95% 신뢰구간",
       subtitle = "디지털 리터러시가 학업 만족도에 미치는 영향 (매개효과 검증)",
       x = "표준화 계수 (Standardized Estimate)",
       y = NULL, # Y축 라벨 제거 (변수명이 있으므로)
       caption = "Note. 오차 막대는 95% 신뢰구간을 나타냄. 0을 포함하면 유의하지 않음.") +
  
  theme(legend.position = "bottom", # 범례를 아래로
        legend.title = element_blank(), # 범례 제목 제거
        plot.title = element_text(face = "bold", size = 14),
        axis.text.y = element_text(color = "black", size = 11))

[해석 방법]

  • DL -> Eng: 점이 0.65에 있고, 수염(CI)이 0을 지나지 않으므로 통계적으로 유의하고 효과가 큽니다.
  • DL -> Sat (Direct): 점이 0.15에 있고, 수염이 0을 가로지릅니다. 즉, 디지털 리터러시가 만족도에 미치는 직접 효과는 유의하지 않다는 것을 바로 알 수 있습니다. 이것은 완전 매개(Full Mediation) 모형을 지지하는 증거가 됩니다.

5. 결론 및 제언

구조방정식 모델링에서 시각화는 선택이 아닌 필수입니다.

  1. 연구 설계 단계: 경로도를 그려보며 이론적 가설을 구체화하십시오.
  2. 분석 전 단계: 행렬 플롯(Matrix Plot)으로 데이터를 샅샅이 탐색(Sleuthing)하십시오.
  3. 결과 보고 단계: 복잡한 모델일수록 점 도표(Dot Plot)를 활용하여 효과 크기와 정밀성(신뢰구간)을 강조하십시오.

여러분의 연구가 훌륭한 시각화를 통해 더욱 빛나기를 바랍니다.

[참고문헌]

  • Cleveland, W. S. (1984). Graphical methods for data presentation: Full scale breaks, dot charts, and multibased logging. The American Statistician, 38, 270-280.
  • Jöreskog, K. G., & Sörbom, D. (2006). LISREL 8.8 for Windows [Computer software manual]. Scientific Software International.
  • Pek, J., & Flora, D. B. (2018). Reporting effect sizes in original psychological research: A discussion and tutorial. Psychological Methods, 23(2), 208-225.
  • Pek, J., Davisson, E. K., & Hoyle, R. H. (202x). Visualizations for Structural Equation Modeling. In Handbook of Structural Equation Modeling.
  • Tukey, J. W. (1977). Exploratory data analysis. Addison-Wesley.