매개효과 분석 - Mediation
Reponse variable(=Y)와 인과관계가 있는 predictor(=X)가 있을때, X가 어떤 중재변수에 의해 일부 또는 전체적인 영향을 받을때 그때 그 중재 변수를 매개변수(Mediator=M)라고 합니다. 즉, M mediate the effect of X on Y 로 표현할 수 있습니다. 이런 매개효과분석에는 여러가지 방법이 있지만 제일 고전적인 방법인 Baron & Kenny 방법과 SAS의 Proc causalmed 를 예제를 통해 알아 보겠습니다.
매개효과분석은 사회과학 분야(심리학 등)에서 많이 사용되는데 요즘은 의학 논문에서도 가끔 활용되고 있는듯 합니다.
아래 예제는 SAS support 를 참고해서 정리한것입니다. 자세한 설명은 SAS support를 참고해주세요.
☞ http://support.sas.com/kb/59/081.html
Baron & Kenny 의 매개효과 분석 이해하기
Reponse variable(=Y), predictor(=X), mediator(=M) 으로 가정하고 M변수가 mediator가 될수 있는지 알아보겠습니다.
< Baron & Kenny 의 매개효과 검정 단계 >
Step 1,2,3 을 만족할때, M 변수가 mediation 효과가 있다고 할 수 있습니다.
- 만약 d ≒ 0 ( d가 0에 가깝게 아주 작을때) 이면, Full mediation 한다고 할 수 있습니다.
- 만약 d < c 이면 partial mediation (부분매개)한다고 할 수 있습니다.
- Total effect = d + (a * b)
- Direct effect = d
- Indirect effect = a * b
* Total effect = Direct effect + Indirect effect
* 중요한 것은 indirect effect 이며 이 부분이 mediated 된 효과를 의미합니다.
* 매개효과분석에서 X 는 M 에 시간적으로 우선하는 경우입니다. (temporal precedence)
공복혈당(FPG)이 ldl 콜레스테롤변수(ldl)를 매개하여 간기능수치(SGOT)를 높이는지 테스트 해보겠습니다.
X=ldl, M=FPG, Y=Log_SGOT 입니다. Baron & Kenny의 3 step을 그대로 따라 해보겠습니다.
ods output 부분은 이후 sobel test에 이용될 예정입니다.
< SAS Code >
data test_data;
set test_data;
X=ldl;
M=FPG;
Y=log_SGOT;
keep X M Y;
run;
*1) M -> X model;
proc reg data=test_data;
model M = X;
ods output parameterestimates=compa(keep=variable estimate stderr where=(variable="X"));
run;
*2) Y -> X model;
proc reg data=test_data;
model Y = X;
ods output parameterestimates=compc(keep=variable estimate where=(variable="X"));
run;
*3) Y -> X M model;
proc reg data=test_data;
model Y = X M;
ods output parameterestimates=compbcp(keep=variable estimate stderr where=(variable in ("X","m")));
run;
< SAS Output >
- Step 1에서 a=0.09214, Step 2의 c=0.00031472, Step 3의 d=0.00024441, b=0.00076310 입니다.
- Step 2,3 을 보면 d<c 으로 mediator FPG에 의해 X가 Y에 미치는 영향력이 작아졌음을 알수 있습니다.
- Step 1,3 은 조건을 만족하나, Step 2는 유의성이 없어 조건을 만족하지 않습니다.
( 그럼에도 불구하고, 소벨테스트를 통해 a*b (indirect effect) 가 유의하게 되어, Step 2의 c가 유의하지 않아도 mediation 효과가 있는 경우가 있습니다.)
소벨테스트 (Sobel Test)
위의 SAS 코드 실행을 통해 compa, compbcp 테이블에 a, d, b estimate 값과 standard error 값을 저장했습니다. 이를 이용해서 Sobel Test를 해보겠습니다.
- Sobel 테스트는 간접효과인 a*b가 유의하게 a*b ≠ 0 가 아닌지 테스트합니다.
< SAS Code >
data sobel;
merge compa(drop=variable rename=(estimate=a stderr=sa))
compbcp(where=(variable="FPG") rename=(estimate=b stderr=sb));
sobel=a*b/sqrt(a**2*sb**2 + b**2*sa**2);
p=2*(1-probnorm(sobel));
run;
proc print data=sobel label noobs;
var sobel p;
format p pvalue6.;
label sobel="Sobel Test" p="Pr>|Z|";
run;
위 결과 p-vaue=0.01 로 유의하여 FPG는 유의한 매개변수라고 할 수있습니다.
* 아래 사이트 방문하여 소벨테스트 결과를 볼수 있습니다.
☞ http://quantpsy.org/sobel/sobel.htm
Proc causalmed 이용하기
동일하게 indirect effect p-valur=0.01로 M변수의 매개효과가 유의합니다.
< SAS Code >
proc standard data=test_data out=std_test_data m=0 s=1;
var Y X M;
run;
proc causalmed data=std_test_data;
model Y = X M;
mediator M = X;
run;
'의학통계 > 통계분석' 카테고리의 다른 글
생존분석 - Survival Function의 차이 Log-Rank Test (0) | 2022.07.24 |
---|---|
생존분석 - Kaplan-Meier Method 기초 (0) | 2022.07.07 |
공분산분석 - ANCOVA (Analysis of Covariance) (0) | 2022.06.23 |
다중회귀모형 - Multiple Linear Regression (0) | 2022.06.22 |
선형회귀모형 - Linear Regression (0) | 2022.06.22 |
댓글