본문 바로가기
Statistics/Bayesian

GLMM 이해하기 - 1 (+EDA꿀팁)

by bents 2021. 2. 7.

Multilevel == mixed model 한방에 이해하기

믹스 모델이란?

: 특정 변수(상위계층 변수)를 통제함으로써 여러개 선형모델을 만드는 것. 

The mixed effects model is an extension and models the random effects of a clustering variable. Mixed models can model variation around the intercept (random intercept model), around the slope (random slope model), and around the slope (random intercept and slope model).

 The linear mixed model is:


*gamma = 변수에 대한 fixed effects + random effects
*clustering 변수에 대응하는 관찰값 
  = covariate 변수에 대응하는 관찰값

클러스터 변수란?

: 모델의 독립변수에 직접적인 영향을 주는 "상위 클러스터/레벨 변수"다. (계층형 구조)

관측치값은 레벨1로 가장 하단의 데이터.

선형모델에 클러스터 변수가 어떻게 적용되나?

: 독립변수가 아닌 특정 변수에 큰 영향을 미치는 변수(latent variable)가 존재하기 마련.. ! 이를 클러스터 변수로 삼아서 모델을 계층적으로 만든다. 그럼 독립변수간의 상관성을 줄여 선형모델 성능을 높이면서 동시에 fixed effect와 random effect를 모델에 모두 담을 수 있다. 따라서 독립변수와 클러스터의 변수가 (covariate 또는 varibale가) 종속변수를 결정짓는데 얼마나 영향(effect 또는 coef.계수)을 주는지 알아야 함. fixed effect는 전체 관측값의 분산정보를 설명할 수 있는 "독립변수"와 "종속변수"의 정보량이다. random effect는 "계층관계를 갖는 변수간의 분산을 설명하는 정보량"이다.

Fixed-effect parameters describe the relationships of the covariates to the dependent variable for an entire population
"relationships of the covariates to the dependent variable" --> the covariates are the independent variables in the model.

Random effects are specific to clusters of subjects within a population.

그럼 클러스터 변수를 어떻게 찾나요? 

- 분석목적에 따라 다름..그래서 분석가가 필요함! 헤헤

Gelman & Hill (2007) make the case that th classification of a variable as a fixed effect or random effect will vary depending on the objective of the study and the analysis.

클러스터변수가 독립변수/종속변수에 미치는 영향의 종류 : intercept, slope

random Intercept : the varability around the intercept based on the different levels of the cluster variable "계층변수가 종속변수에 영향을 미침"

random Intercept : the varability around the slope based on the different levels of the cluster variable "계층변수가 독립변수에 영향미침"

비교하기 random intercept / random slopes

모델링 방법 : 모델 가정 / 추정법

1. Mixed-effect regression test assumptions

  • Independence of errors
  • Equal variance of errors
  • Normality of errors

2. Fixed effect 에 대한 가설검정하기

--> Maximum likelihood estimation (ML) and restricted maximum likelihood (REML)

: are commonly used to estimate the mixed-effect model in conjuction with an optimization algorithm.

  • Multiple fixed effects : F-test
  • Single fixed effects : REML

3. Random effect 가설검정하기

만약 clustering variable 후보군 중 몇 개가 "분산이 다르게 나타난다면" Random effect 가설 검정하기

 

 # GLMM은 statsmodel, Pymc3, Tensorflow , Pystan 등 여러툴로 모델링 가능함. 결과는 매우 유사함. 좋아하는 거 선택하길.

- 모든 패키지별 깃헙 코드 [ pymc 참고***]

import statsmodels.api as sm
import statsmodels.formula.api as smf

# random intercept
md = smf.mixedlm("bounce_time ~ age_scaled", data, groups=data["county"])
mdf = md.fit()
print(mdf.summary())

# random slope+intercept
md = smf.mixedlm("bounce_time ~ age_scaled", data, groups=data["county"], re_formula="~age_scaled")
mdf = md.fit()
print(mdf.summary())

# nested mixed : how random effects are nested - diversify
data["location_county"] = data["location"] + "_" + data["county"]
data.head()

md = smf.mixedlm("bounce_time ~ age_scaled", data, groups=data["location_county"], re_formula="~age_scaled")
mdf = md.fit()
print(mdf.summary())

번외 - EDA 꿀팁

import pandas as pd
import researchpy as rp
import statsmodels.api as sm
import scipy.stats as stats

# 범주형 자료까지 요약summary함 describe()의 약점보완!
rp.codebook(df)

# 그룹별 summary도 볼 수 있다!
rp.summary_cont(df.groupby(["treatment", "sex"])["weight"])

# notch boxplot은 median의 신뢰구간도 함께 볼 수 있다.
boxplot = df.boxplot(["weight"], by = ["treatment", "sex"],
                     figsize = (16, 9),
                     showmeans = True,
                     notch = True)

출처]
https://www.pythonfordatascience.org/mixed-effects-regression-python/

www.kaggle.com/ojwatson/mixed-models

peerj.com/articles/4794/#

Gelman - https://robotcat.tistory.com/440