Describe 레만투_혼합효과모형 here 간략한 이론 혼합 효과 모형(Mixed Effect Model)은 고정 효과(fixed effect)와 무선 효과(random effect)을 이용하여 종속변수를 설명한다. 아래에서 A는 고정 효과, B는 무선 효과이다. {{{ Y = AX + BZ + e }}} HLM 또는 다층 모형(Multilevel Model)은 집단과 개인, 개인과 시행처럼 위계적인 형태를 띄고 있는 자료를 분석하기 위한 모형이다. 아래의 모형을 보면 절편(β0)과 회귀계수(β1)가 또다른 회귀식의 형태를 띄고 있다. {{{ Y = β0 + β1X + e β0 = γ00 + γ01Z + u0 β1 = γ10 + γ11Z + u1 }}} 위의 HLM은 혼합 효과 모형으로 다시 나타낼 수 있다. 맨 위의 회귀식에 아래의 두 회귀식을 대입하면 아래와 같다. {{{ Y = (γ00 + γ01Z + u0) + (γ10 + γ11Z + u1)X + e }}} 이것을 전개하면 아래와 같다. {{{ Y = γ00 + γ10X + γ01Z + γ11ZX + u0 + u1X + e }}} 이를 다시 혼합 모형의 표기법으로 바꾸면 아래와 같다. {{{ Y = a0 + a1X + a2Z + a3ZX + b0 + b1X + e }}} lme4 아래에서 소개하는 nlme 패키지의 lme 함수보다 lme4 패키지의 lmer 함수를 사용할 것을 권한다. 자세한 설명은 추후에. 일단은 아래 링크를 참고하라. 참고: http://www.stat.columbia.edu/~cook/movabletype/archives/2006/01/fitting_multile.html nlme nlme 패키지는 비선형 혼합 효과 모형(nonlinear mixed effect model)을 지원한다. 여기서는 nlme를 이용하여 위계적 선형 모형((Hierarchical Linear Model:HLM)을 다루는 방법을 알아보겠다. 아래는 HLM을 선형 혼합 효과 모형으로 해석하는 방법을 간략히 소개한 것이다. 예제 먼저 nlme 패키지를 풀러들인다. {{{ > library(nlme) }}} 자료 만들기 nlme 패키지에 포함된 샘플 자료를 불러들인다. MathAchieve는 학생 자료이고, MathAchSchool은 학교 자료이다. Bryk와 Rodenbush(1992)의 HLM 책에 있는 예제 자료이다. {{{ > data(MathAchieve) > data(MathAchSchool) }}} Bryk와 Rodenbush의 HLM 프로그램과 달리 nlme에서는 각 수준의 자료를 따로 만들지 않는다. 먼저 분석할 자료를 만들어보자. 우선 학생 자료에서 학교 번호, 사회경제적 수준(socioeconomical status:SES), 수학성적을 뽑아서 HLM 분석을 위한 데이터프레임으로 만든다. 이름은 Bryk라고 하자. {{{ > Bryk = as.data.frame(MathAchieve[c("School","SES","MathAch")]) }}} tapply 함수를 이용하여 사회경제적 수준의 학교별 평균을 계산한다. {{{ > attach(MathAchieve) > mses = tapply(SES, School, mean) > detach(MathAchieve) }}} Bryk 데이터 프레임에 학교별 평균을 덧붙여준다. 아래에서 첫째줄은 학생마다 그 학생이 속한 학교의 평균 SES를 덧붙여준다. 그리고 둘째줄은 각 학교의 평균 SES에 대한 학생의 SES의 편차를 구한다. {{{ > Bryk$mses = mses[as.character(Bryk$School)] > Bryk$cses = Bryk$SES - Bryk$mses }}} 비슷한 방법으로 학교 자료에서 학교의 종류(공립학교, 카톨릭계 학교)를 뽑아서 Bryk 데이터프레임에 덧붙인다. {{{ > sector = MathAchSchool$Sector > names(sector) = row.names(MathAchSchool) > Bryk$sector = sector[as.character(Bryk$School)] }}} 학교의 분류는 이산변수이므로 factor로 바꿔준다. {{{ > Bryk$sector = factor(Bryk$sector, levels = c("Public", "Catholic")) }}} contrast coding을 하기 위해 contrasts 함수를 사용한다. 이제 회귀식에서 Bryk$sector는 Public은 0, Catholic은 1로 코딩한다. {{{ > contrasts(Bryk$sector) Catholic Public 0 Catholic 1 }}} 분석 Bryk 데이터 프레임에 필요한 자료는 다 들어갔으니 분석을 실시한다. 분석할 모형은 아래와 같다. 간단히 말하면 학교의 평균적인 SES와 학교의 종류에 따라서 학생 SES와 수학 성적의 관계가 변화하는 것을 나타내는 모형이다. {{{ (MathAch) = β0 + β1(cse) + e β0 = γ00 + γ01(mses) + γ02(sector) + u0 β1 = γ10 + γ11(mses) + γ12(sector) + u1 }}} 위의 모형을 혼합 효과 모형으로 바꾸면 아래와 같다. {{{ (MathAch) = γ00 + γ01(mses) + γ02(sector) + u0 + (γ10 + γ11(mses) + γ12(sector) + u1)(cses) + e = γ00 + γ01(mses) + γ02(sector) + γ10(cses) + γ11(mses)(cses) + γ12(sector)(cses) + u1(cses) + u0 + e }}} 위의 모형에서 고정 효과 부분만 R의 관계식으로 다시 쓰면 아래와 같다. {{{ MathAch ~ 1 + mses + sector + cses + mses:cses + sector:cses }}} 절편은 명시적으로 써주지 않아도 기본으로 포함되므로 빼고, 상호작용항은 줄여서 다시 쓰면 아래처럼 된다. {{{ MathAch ~ mses*cses + sector*cses }}} 무선 효과는 R의 관계식으로 아래처럼 된다. "| School"이 붙는 이유는 무선 효과가 학교 수준이기 때문이다. {{{ ~ 1 + cses | School }}} 선형 혼합 효과 모형 분석은 lme 함수를 이용한다. {{{ > bl = lme(MathAch ~ mses*cses + sector*cses, random=~cses|School, data=Bryk) }}} 해석 다른 분석과 마찬가지로 summary 함수를 이용하면 분석 결과를 볼 수 있다. {{{ > summary(bl) Linear mixed-effects model fit by REML Data: Bryk AIC BIC logLik 46523.66 46592.45 -23251.83 Random effects: Formula: ~cses | School Structure: General positive-definite, Log-Cholesky parametrization StdDev Corr (Intercept) 1.5426150 (Intr) cses 0.3182015 0.391 Residual 6.0597955 Fixed effects: MathAch ~ mses * cses + sector * cses Value Std.Error DF t-value p-value (Intercept) 12.127931 0.1992919 7022 60.85510 0e+00 mses 5.332875 0.3691684 157 14.44564 0e+00 cses 2.945041 0.1556005 7022 18.92694 0e+00 sectorCatholic 1.226579 0.3062733 157 4.00485 1e-04 mses:cses 1.039230 0.2988971 7022 3.47688 5e-04 cses:sectorCatholic -1.642674 0.2397800 7022 -6.85076 0e+00 Correlation: (Intr) mses cses sctrCt mss:cs mses 0.256 cses 0.075 0.019 sectorCatholic -0.699 -0.356 -0.053 mses:cses 0.019 0.074 0.293 -0.026 cses:sectorCatholic -0.052 -0.027 -0.696 0.077 -0.351 Standardized Within-Group Residuals: Min Q1 Med Q3 Max -3.1592608 -0.7231893 0.0170471 0.7544510 2.9582205 Number of Observations: 7185 Number of Groups: 160 }}} 위의 결과로 회귀식을 다시 쓰면 아래처럼 된다. {{{ (MathAch) = β0 + β1(cse) + e β0 = 12.13 + 5.33(mses) + 1.23(sector) + u0 β1 = 2.95 + 1.04(mses) - 1.64(sector) + u1 u0 ~ N(0, 1.54) u1 ~ N(0, 0.32) e ~ N(0, 6.06) }}}