본문 바로가기
Statistics/Bayesian

MRP Concept : Multilevel regression with Poststratification

by bents 2021. 2. 23.

MRP 란?

Multilevel Regression with Poststratification

 

이전에 배운 "선형 믹스 모델"의 업그레이드 버전이다.

믹스 모델은 계층형 구조를 가진 선형모델이다.

그러나 "샘플크기"의 문제에 부딪혀 적절한 fitting이 어려운 점이 생길 때, 이를 해결하고자 등장했다.

빅데이터 시대에 샘플크기가 문제라니? 라고 할 수 잇지만, 빅데이터 시대에도 충분히 발생가능한 일이다.

여러 피쳐의 교집합에 해당하는 표본크기는 경우에 따라서 매우 작을 수 있기 때문이다!!

 

 

각 그룹의 표본크기는 크지만, 교집합은 매우 작음...

 

이를 위해 (베이지안 가정) 사후분포의 샘플링 결과에 과거의 모집단분포( 또는 과거에 사용한 샘플(데이터))를 사용해서 회귀계수를 조정하는 기법이 MRP 다. 과거의 데이터를 활용하면 어떤 이점이 있을까? 현재성을 포기할만큼 유의미할까? 확실한 건 모델링을 못할 정도로 데이터가 부족한 점을 해결한다는 측면에서는 안 쓸 이유는 없다. 베이지안 방법을 적용한 믹스모델부터 차근차근 보자. 가령, 모집단 평균이 0.7이고, 교육수준이라는 그룹변수별로 서로 다른 평균을 가지고 있다고 가정하자. 그룹별 사전분포를 활용하면 그룹별 모평균을 추정하기 위해 많은 표본크기가 필요하지 않다. 빈도주의적 접근법에 비해 효율적이다.

 

 

 

또한 MRP 가 기본적으로 베이지안을 활용하기 때문에 결과값에 "확률"을 부여할 수 있다. 이는 결과에 대한 해석시, 큰 장점을 가진다.

교육수준이 낮은 그룹의 경우, 빈도주의자관점에서는 "평균이 0.55이고, 지난 달에 평균보다 유의미하게 크다"이지만, 베이지안 관점에서는 "평균이 0.55이고, 지난 달 보다 평균이 크다고 판단할 확률이 80% 입니다"라고 말할 수 있다. 즉, 신뢰성/불확실성을 수치적으로 보여줄 수 있다. 판단은 인간의 몫으로 맡기는 것.

빈도주의적 관점 베이지안 관점

 

베이지안 사후분포를 무엇으로 만드는가?

몬테카를로 시뮬레이션으로 만든다. 즉 사전분포에 샘플데이터를 적용하면서 사후분포를 만들어 적정한 분포로 수렴함.

Hamiltonian MCMC (일명 NUTS)가 multi-modal 같은 독특한 분포도 잘 잡아내는 추출기법이라고 해서 사용되지만, 속도측면에서 느리고, 항상 비슷한 결과물이 나온다고 보장할 수 없다. 그래서 적절하게 타협해서 가장 일반적인 사후 분포를 만들어내는 MCMC(ADVI)방식이 현실에서 많이 사용됨. 

 

 

 

사후분포가 만들어지면, "참조테이블(모든 변수의 조합별 과거 데이터)"과 일대일 대응하는 LMM모델의 각 변수의 조합에 값을 넣는다. 결과적으로, 각 변수의 조합마다 종속변수에 미치는 가중치를 참조테이블의 조합별 데이터 비율만큼 조정한다.

fitted model의 모수(계수)가 일차적으로 만들어지면, 각 변수의 조합별 과거비율만큼 곱해서 계수값을 조정한다.

실제 모델링할때는
참조 데이터 입력하면
이를 반영한 사후샘플링이 결과물로 나옴.

# before modeling : 믹스 모델링
gender_race_ = shared(gender_race)
age_ = shared(age)
edu_ = shared(edu)
age_edu_ = shared(age_edu)
poll_ = shared(poll)
state_ = shared(state)
use_poll_ = shared(1)
n_ = shared(n)

# before poststratificaiton : 사후층화추출
gender_race_.set_value(ps_gender_race)
age_.set_value(ps_age)
edu_.set_value(ps_edu)
age_edu_.set_value(ps_age_edu)
poll_.set_value(np.zeros_like(ps_gender_race))
state_.set_value(ps_state)
use_poll_.set_value(0)
n_.set_value(ps_n)

 

표본을 기반으로 원하는 모평균를 계산할 수 있다.

 

 

 

 

끝! 

출처]

- 개념 : www.slideshare.net/LatanaBrandAnalytics/multilevel-regression-and-poststratification-mrp-for-brand-tracking-pyconde-pydata-berlin-recap

- (LMM코드) : github.com/junpenglao/GLMM-in-Python/blob/master/GLMM_in_python.ipynb

- (선거예측 MRP)코드 : austinrochford.com/posts/2017-07-09-mrpymc3.html

'Statistics > Bayesian' 카테고리의 다른 글

MRP - 예제 실습하기  (0) 2021.02.23
GLMM 이해하기 3 - 실전해석편  (0) 2021.02.23
GLMM 이해하기 - 2 (+EDA 꿀팁)  (0) 2021.02.22
GLMM 이해하기 - 1 (+EDA꿀팁)  (0) 2021.02.07
베이즈정리 - 몬티홀 문제  (0) 2020.12.30