27.통계데이터분석 - 회귀분석 - 매개효과분석.Rmd
0.02MB
27.통계데이터분석---회귀분석---매개효과분석.html
1.92MB

 

 

https://www.youtube.com/watch?v=2PamBrMhJ1Y&list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&index=28

  • 목표: 회귀분석을 이용한 매개효과분석 수행

1. 매개효과분석(mediation effect analysis) 개요

  • 매개효과/ 매개변수 정의
    • 매개효과: 변수 X,M,Y가 있다면 1st변수 X가 2nd변수 M에 영향을 미치고 이어 2nd변수 M이 다시 3rd변수 Y에 영향을 미치는 연쇄적 영향관계를 검정함
    • 매개변수: 이 때 독립변수 X와 종속변수 Y사이에서 일련의 영향관계가 어떠한 과정을 거쳐 발생하는지 설명하는 변수 M을 매개변수라고 함
      • 매개변수는 두 변수 간 영향 관계가 발생하는 이유를 설명함. 즉, 독립변수 X와 종속변수 Y간 관계에 내재된 간접적인 영향관계 프로세스를 설명
      • 이런 의미에서 매개효과는 간접효과라고도 불림
    • 예를 들어서 소득이 높은 사람은 기대수명이 높음. 그러나 이러한 영향관계는 보다 나은 의료 환경의 혜택을 매개로 더 잘 설명될 수 있음
  • 매개효과분석과 매개효과모델
    • 독립변수 X가 종속변수 Y에 미치는 영향이 제3의 변수 M을 통해 작동하는지 검정함
    • 제3의 변수 M이 X와 Y간의 매개변수로서의 역할을 하는지 검정
    • 매개변수는 독립변수와 종속변수 간 영향 관계에 작동 메커니즘을 설명함
    • 매개효과분석을 위한 모델을 위와 같이 그림으로 표현을 해 볼 수 있음
  • 총효과모델:
    • 매개변수 없이 독립변수와 종속변수만으로 구성된 모델임
    • 이때 회귀계수c종속변수 Y에 대한 독립변수 X의 총효과를 나타냄
  • 매개효과모델
    • 매개효과모델: 총효과모델에 제3의 변수 M이 추가된 모델임
    • 직접효과: 회귀계수c’제3의 변수 M을 통제한 상태에서 Y에 대한 X의 직접효과를 나타냄
    • 통제: ’제3의 변수 M을 통제’했다는 얘기는 X와 Y간의 관계를 설명하는 회귀모델에 M을 추가로 투입한다는 뜻임
      • 그러면 M이 Y에 미치는 영향을 통제한 상태에서 X와 Y간의 영향관계 파악가능
    • 간접효과: 회귀계수 a와 b의 곱인 ab는 Y에 대한 X의 간접효과를 나타냄
    • 매개효과분석: 이러한 간접효과가 존재하는지 검정
    • 총효과계산: 총효과는 ‘직접효과+간접효과’, 즉, c=c’+ab로 산출할 수 있음
  • 매개효과모델(매개변수M 포함)에서 Y에 대한 X의 직접효과(c’)총효과모델(매개변수M 포함 x)에서의 총효과(c)보다 작으면 매개효과 존재한다고 함
    • If c’ < c, then 매개효과가 존재 (부분매개)
  • 매개효과모델에서 Y에 대한 X의 직접효과(c’)가 0이면 완전매개라고 함
    • If c’ = 0, then 완전매개

2. 매개효과분석 절차

  • 매개효과분석은 일반적으로 바론 & 케니가 제시한 절차에 따라 수행함
  • 매개효과분석 절차
    • 바론 & 케니의 매개효과분석간접효과에 대한 통계적 검정결과를 제시하지 않기 때문에 매개효과 존재 여부 확인소벨 검정이나 부트스트랩핑으로 간접효과에 대한 통계적 유의성 검정을 수행해야 함
    • 절차1: 바론 & 케니의 매개효과분석을 통한 매개효과 존재 여부 확인
    • 절차2: (매개효과 존재 시) 소벨검정/부트스트랩핑으로 간접효과 유의성
  • 바론 & 케니의 매개효과분석 절차
    • 단계별로 세 번의 회귀 분석을 수행
    • 1단계: 회귀모델 \(Y=b_0+cX\) 생성
      • 독립변수 X의 회귀변수 c가 통계적으로 유의한지 검정하며, 유의해야 다음 단계로 진행
      • 바론 & 케니가제시한 방법은 독립변수 X와 종속변수 Y 간 유의한 관계가 없으면 매개할 것도 없기 때문에 다음 단계로의 진행은 의미가 없음
      • 이는 논쟁의 여지가 있고 실제 많은 경우 X와 Y 사이 유의적 영향관계가 없어도 매개변수 존재검정을 위한 다음 단계 진행이 가능하다고 알려짐
    • 2단계: 회귀모델 \(M=b_0+aX\) 생성
      • 독립변수 X의 회귀계수 a가 통계적으로 유의한 지 검정하며, 유의해야 다음 단계로 진행
      • X와 M간 어떠한 유의적 관계도 없으면 M은 매개변수가 아닌 Y에 대한 제 3의 독립변수 일 뿐이기 때문임
      • X가 M에 영향을 미칠 때만 M의 매개효과는 의미가 있음
    • 3단계: 회귀모델 \(Y=b_0+c'X+bM\) 생성
      • 즉 X를 통제한 후, 매개변수 M과 종속변수 Y간의 관계를 검정함
      • 회귀모델로 본다면, 종속변수 Y에 2개의 독립변수가 있는 것처럼 보임
      • 매개효과가 존재하려면
        • 매개변수 M의 회귀계수 b가 통계적으로 유의해야 함
        • 반면, 종속변수 Y에 대한 독립변수 X의 영향 c’은 사라지거나 적어도 약화돼야 함
      • 종속변수 Y에 대한 독립변수 X의 영향(c’)이
        • 종전 c에 비해 없어지면, (더는 통계적으로 유의하지 않으면) 매개변수 “M은 X와 Y사이를 완전매개한다”라 하고,
        • 종전 c에 비해 작아지면, “부분매개한다”라고 함

3. 매개효과분석 예

  • 자동차의 배기량과 연비 간의 영향관계에 대한 매개효과분석
    • 배기량이 커지면 연비는 감소하는데 배기량이 연비감소의 진짜 이유 아닐 수 있음
    • 배기량이 커지면 그에 따라 자동차 무게가 증가하고 증가된 무게는 연비를 저하시킬 수 있다는 새로운 가설을 검정하고자 함
      • 배기량 증가 -> 무게 증가를 가져오고,
      • 무게 증가 -> 연비감소를 가져오는
      • 일련의 영향관계를 분석하고자 함
    • 여기서 자동차 무게는 배기량-연비 간 영향관계를 설명하는 매개변수 역할을 수행
  • 이러한 매개효과 모델은 바론 & 케니 매개효과분석 절차에 따라 검정해 볼 수 있음
    • 1단계: 종속변수(연비:mpg)와 독립변수(배기량:disp)의 관계분석
      • 배기량이 연비에 유의한 영향을 미치게 되면 2단계로 진행함
    • 2단계: 매개변수(무게:wt)와 독립변수(배기량:disp) 간 영향 관계 검정
      • 배기량이 무게에 유의한 영향을 미쳐야만 3단계로 진행함
    • 3단계
      • 종속변수와 독립변수 및 매개변수 간 관계를 설명해 주는 회귀모델을 구축 ->
      • 매개변수와 종속변수의 관계가 유의한지 평가 ->
      • 유의한 영향관계를 가지면 배기량과 연비 간의 회귀계수 평가
        • 배기량과 연비 간 회귀계수가 매개변수인 무게가 포함되지 않은 상태에서의 회귀계수보다 작아지면 “매개효과가 존재한다” 라고 결론 내림
        • 즉, If c’ < c, then 매개효과가 존재 (If c’ = 0, then 완전매개)

4. 매개효과 분석 수행: 바론 & 케니 매개효과분석

  • mtcars데이터셋 사용해 매개효과 모델 분석
  • mtcars데이터셋은 32개 자동차 모델별 자동차에 관한 정보가 11개의 변수에 저장돼 있음
  • 바론 & 케니 매개효과분석 절차에 따라, 1단계로 독립변수와 종속변수 간 관계분석
model.total <- lm(mpg ~ disp, data=mtcars)
summary(model.total)
## 
## Call:
## lm(formula = mpg ~ disp, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.8922 -2.2022 -0.9631  1.6272  7.2305 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 29.599855   1.229720  24.070  < 2e-16 ***
## disp        -0.041215   0.004712  -8.747 9.38e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.251 on 30 degrees of freedom
## Multiple R-squared:  0.7183, Adjusted R-squared:  0.709 
## F-statistic: 76.51 on 1 and 30 DF,  p-value: 9.38e-10
  • 결과해석
    • 독립변수의 유의확률이 유의수준 0.05에 비해 매우 작음
    • 1단계 분석결과에 따르면, 유의수준 0.05에서 배기량은 연비에 유의한 영향을 미침
    • 배기량이 연비에 미치는 총효과는 독립변수의 회귀계수인 -0.04임
    • 독립변수와 종속변수 간 총효과가 유의함을 확인했기 때문에 2단계로 진행 가능
  • 2단계: 독립변수와 매개변수 간 관계를 검정함
model.M <- lm(wt ~ disp, data=mtcars)# 매개변수 wt,독립변수 disp
summary(model.M)
## 
## Call:
## lm(formula = wt ~ disp, data = mtcars)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.89044 -0.29775 -0.00684  0.33428  0.66525 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.5998146  0.1729964   9.248 2.74e-10 ***
## disp        0.0070103  0.0006629  10.576 1.22e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4574 on 30 degrees of freedom
## Multiple R-squared:  0.7885, Adjusted R-squared:  0.7815 
## F-statistic: 111.8 on 1 and 30 DF,  p-value: 1.222e-11
  • 결과해석
    • 독립변수는 통계적으로 유의함
    • 유의수준 0.05에서 배기량은 무게와 유의한 영향관계를 가짐
    • 독립변수와 매개변수 간 관계의 유의성 조건을 충족했기에 3단계로 이동가능
  • 3단계: 독립변수를 통제한 상태에서 매개변수와 종속변수 간 영향관계를 검정함
model.Y <- lm(mpg ~ disp + wt, data=mtcars) # 종속변수 mpg, 독립변수 disp, 매개변수 wt
summary(model.Y)
## 
## Call:
## lm(formula = mpg ~ disp + wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4087 -2.3243 -0.7683  1.7721  6.3484 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 34.96055    2.16454  16.151 4.91e-16 ***
## disp        -0.01773    0.00919  -1.929  0.06362 .  
## wt          -3.35082    1.16413  -2.878  0.00743 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.917 on 29 degrees of freedom
## Multiple R-squared:  0.7809, Adjusted R-squared:  0.7658 
## F-statistic: 51.69 on 2 and 29 DF,  p-value: 2.744e-10
  • 결과해석
    • 매개변수 무게는 유의확률 0.007로 유의수준 0.05에서 통계적으로 유의함
    • 독립변수 배기량은 유의확률 0.06로 유의수준 0.05에서 통계적으로 유의하지 않음
    • 따라서 이 매개효과 모델에서 “배기량과 연비 간 직접효과는 모집단에서 존재하지 않는다”고 볼 수 있음
    • 그런데 1단계 모델에서 배기량과 연비 간 관계는 통계적으로 유의하므로, “배기량과 연비 간 총효과가 존재”하는 반면, 3단계 모델에서 매개변수 무게의 투입으로”배기량과 연비 간 직접효과가 사라짐”
      • 즉, 통계적으로 유의하지 않아, c’< c 도 성립하지 않고 c’ = 0이 됨
      • 따라서 “무게는 배기량과 연비 간 관계를 완전매개한다”고 볼 수 있음
  • 배기량과 연비 간의 간접효과 계산
    • 간접효과는 ’독립변수와 매개변수 간의 회귀계수’와 ’매개변수와 종속변수 간의 회귀계수’의 곱으로 산출
    • 독립변수와 매개변수 간의 회귀계수2단계 모델에서 확인됨
      • 종속변수로 무게, 독립변수로 배기량을 사용한 회귀계수는 0.007임
    • 매개변수와 종속변수 간의 회귀계수3단계 모델에서 확인됨
      • 매개변수 무게와 종속변수 연비 간 회귀계수는 -3.351임
    • 배기량과 연비 간의 간접효과는 이 두 회귀계수의 곱인 -0.0235임
0.007*(-3.351)
## [1] -0.023457

5. 간접효과의 통계적 유의성 검정

  • 하지만 이러한 바론 & 케니에 의한 방법은 매개변수에 의한 간접효과의 통계적 유의성을 검정해주진 않음
  • 총효과 모델에서 배기량과 연비 간 유의한 영향관계가 있었음에도 불구하고 매개효과 모델에서 배기량과 연비 간 직접효과가 사라지는 이러한 영향관계의 변화가 통계적으로 유의한 지는 알 수 없음
  • 이러한 통계적 유의성 검정을 위해 전통적으로 소벨 검정/부트스트래핑 방법을 이용함

5-1. 소벨(Sobel) 검정 설명

  • 소벨 검정을 위해
    • 독립변수와 매개변수 간의 회귀계수 및 표준오차”와
    • 매개변수와 종속변수 간의 회귀계수 및 표준오차”가 필요함
  • 간접효과 유의성 검정을 위한 검정 통계량 계산식

\[Z=\frac{a×b} {\sqrt{a^2×SE^2_b+b^2×SE^2_a}}\]

  • 계산된 값을 Z값으로 간주해 표준정규분포 상에서 유의성을 검정함
    • 따라서 “이 값이 절대값으로 1.96보다 크면는 간접효과는 통계적으로 유의하다”라고 판단
  • 소벨검정 수행절차
    • 소벨 검정은 매개변수 M이 존재할 때, 독립변수 X가 종속변수 Y에 미치는 영향이 통계적으로 유의하게 감소하는지 검정함
    • multilevel 패키지 sobel()를 이용

5-2. sobel(), pnorm() or mediation.test() - 간접효과 유의성 검정을 위한 z값, 간접효과에 대한 p값 계산

  • sobel() 인수설명
    • pred: 독립변수 지정(disp)
    • med: 매개변수 지정(wt)
    • out: 종속변수 지정(mpg)
library(multilevel)
model.sob <- sobel(pred=mtcars$disp, med=mtcars$wt, out=mtcars$mpg)
model.sob
## $`Mod1: Y~X`
##                Estimate  Std. Error   t value     Pr(>|t|)
## (Intercept) 29.59985476 1.229719515 24.070411 3.576586e-21
## pred        -0.04121512 0.004711833 -8.747152 9.380327e-10
## 
## $`Mod2: Y~X+M`
##                Estimate  Std. Error   t value     Pr(>|t|)
## (Intercept) 34.96055404 2.164539504 16.151497 4.910746e-16
## pred        -0.01772474 0.009190429 -1.928609 6.361981e-02
## med         -3.35082533 1.164128079 -2.878399 7.430725e-03
## 
## $`Mod3: M~X`
##                Estimate   Std. Error   t value     Pr(>|t|)
## (Intercept) 1.599814597 0.1729964404  9.247673 2.737804e-10
## pred        0.007010325 0.0006628588 10.575896 1.222320e-11
## 
## $Indirect.Effect
## [1] -0.02349038
## 
## $SE
## [1] 0.008457775
## 
## $z.value
## [1] -2.777371
## 
## $N
## [1] 32
  • 결과해석
    • 바론 & 케니의 매개효과분석에서 생성했던 3개 희귀모델을 차례로 생성하고 검정
    • 이어서 간접효과에 대한 추정치($Indirect.Effect), 표준오차($SE), Z값($z.value) 산출
  • Z값으로 간접효과에 대한 p값을 계산할 수 있음
    • 이 Z값에 대응되는 확률을 표준정규분포 상에서 계산함
    • Z값이 - 이므로 Z값 이하 값 발생확률 계산 시, 표준정규분포 왼쪽꼬리 부분면적이 계산됨
    • 여기서는 오른쪽 꼬리부분 면적도 필요하기 때문에
      • 이 Z값을 절대값으로 환산해 한쪽 부분 꼬리부분면적을 구한 후
      • 2배를 곱해서 왼쪽과 오른쪽 꼬리부분 확률의 합을 계산
    • 표준정규분포에서 확률계산을 위해 pnorm() 이용
      • 오른쪽 꼬리부분 면적 계산을 위해 lower.tail=FALSE 지정
      • 왼쪽 꼬리부분 면적의 합까지 산출하기 위해 곱하기 2를 해 유의확률 계산
pnorm(abs(model.sob$z.value), lower.tail=FALSE)
## [1] 0.002740032
pnorm(abs(model.sob$z.value), lower.tail=FALSE) * 2
## [1] 0.005480063
  • 결과해석
    • 유의확률 0.005로 유의수준 0.05에서 유의하기 때문에 “매개효과가 존재한다” 할 수 있음
  • bda패키지 mediation.test()를 이용해도 간접효과에 대한 p값을 계산할 수 있음
    • mediation.test() 인수설명
      • mv: 매개변수 지정
      • iv: 독립변수 지정
      • dv: 종속변수 지정
library(bda)
mediation.test(mv=mtcars$wt, iv=mtcars$disp, dv=mtcars$mpg)
##                Sobel      Aroian      Goodman
## z.value -2.777370744 -2.76588301 -2.789002812
## p.value  0.005480063  0.00567689  0.005287061
  • 결과해석
    • Z값은 유의수준 0.05에서 통계적으로 유의하게 때문에
    • 배기량과 연비가 간 관계는, 무게에 의해 유의하게 매개된다는 간접효과를 확인할 수 있음

5-3. mediate() - 간접효과 추정 및 간접효과에 대한 p값 계산

  • 소벨 검정의 단점
    • 소벨 검정이 전통적으로 널리 사용되어 은 매개효과 검정방법이긴 하지만
    • 제약1: 간접효과가 정규분포를 따라야 한다는 가정을 충족해야 하고
    • 제약2: 표본크기가 상대적으로 커야 한다는 제약이 있음
    • 따라서 최근에는 정규성 과정으로부터 자유롭지 못하거나 상대적으로 표본 크기가 작을 경우에 사용할 수 있는 부트스트래핑 방법을 선호하는 경향이 있음
  • 부트스트래핑 방법의 장점
    • 다수의 무작위 표본을 생성해 간접효과를 추정하고
    • 이렇게 생성한 간접효과의 경험적 분포를 토대로 간접효과의 통계적 유의성을 검정
    • 따라서 특정 확률분포에 의존하지 않기 때문에 비교적 자유롭게 활용할 수 있음
  • mediation패키지 mediate()로 부트스트래핑 방법에 의한 매개효과 분석 수행
    • mediate()는 2개의 회귀모델, 매개변수 모델과 종속변수 모델이 필요함
      • 매개변수 모델: 매개변수를 종속변수로 하는 모델(model.M)
      • 종속변수 모델: 종속변수를 종속변수, 독립·매개변수를 독립변수로 하는 모델(model.Y)
    • 이 두 모델을 생성후 mediate() 인수로 제공하고, 동일결과를 제현하기 위해 seed번호지정
library(mediation)
model.M <- lm(wt ~ disp, data=mtcars) # 매개변수 wt,독립변수 disp
model.Y <- lm(mpg ~ disp+wt, data=mtcars) # 종속변수 mpg,독립·매개변수 disp·wt
set.seed(123)
  • mediate()의 인수설명
    • model.m: 매개변수 모델을 지정
    • model.y: 종속변수 모델을 지정
    • treat: 독립변수 지정
    • mediator: 매개변수 지정
    • 부트스트래핑를 위해서는 boot·sims 인수를 아래와 같이 지정해야 함
      • boot: TRUE를 지정하고
      • sims: 추출할 표본의 개수 지정. 기본 값은 1000개이고 여기서는 500을 지정
model.mediation <- mediate(model.m = model.M, 
                           model.y = model.Y, 
                           treat = "disp", 
                           mediator = "wt", 
                           boot = TRUE, sims = 500)
summary(model.mediation)
## 
## Causal Mediation Analysis 
## 
## Nonparametric Bootstrap Confidence Intervals with the Percentile Method
## 
##                Estimate 95% CI Lower 95% CI Upper p-value    
## ACME            -0.0235      -0.0389        -0.01   0.004 ** 
## ADE             -0.0177      -0.0342         0.00   0.024 *  
## Total Effect    -0.0412      -0.0509        -0.03  <2e-16 ***
## Prop. Mediated   0.5699       0.2182         0.95   0.004 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 32 
## 
## 
## Simulations: 500
  • 결과해석
    • 위 식을 실행하면 500개의 무작위 표본을 추출해 경험적 분포를 토대로 간접효과의 통계적 유의성을 검정해줌
      • Total Effect: 이 행은 총효과를 나타냄. 즉, 바론 & 케니 1단계 회귀모델에서 독립변수가 종속변수에 미치는 영향을 나타냄
      • ADE(Average Direct Effect): 직접효과를 의미함. 바론 & 케니 3단계 회귀모델에서 종속변수에 대한 독립변수의 영향을 나타냄
      • ACME(Average Cousal Mediation Effect): 간접효과, 즉, 매개효과로 (총효과-직접효과) 로 계산될 수 있음
    • 매개효과 분석의 목표간접효과를 추정하고 이에 대한 통계적 유의성을 검정하는 것임
      • ACME(간접효과)의 p-value는 0.004로 유의수준 0.05에 비해 작아 “매개효과는 존재한다”고 볼 수 있음
    • 총효과와 직접효과의 회귀계수 값을 비교하면
      • 총효과에 비해 직접효과가 절대값으로 더 크기가 작아짐
      • 따라서 “무게는 배기량과 자동차 연비 간의 관계를 부분매개한다”고 볼 수가 있음
    • 근데 유의수준을 0.05가 아닌 0.01로 낮추면
      • 배기량과 연비 간 총효과 Total Effect는 통계적으로 유의한 반면
      • 매개변수 모델에서 직접효과인 ADE는 더 이상 통계적으로 유의하지 않음
      • 따라서 유의수준 0.01에서 본다면 “자동차 무게는 배기량과 연비 간 관계를 완전매개한다”고 볼 수 있음
  • 총효과·직접효과·간접효과의 추정치와 95% 신뢰구간을 그래프로 표현할 수 있음
  • plot() 인수 설명
    • 1st: mediate()에서 생성된 모델 객체
    • cex: 점의 크기 지정
    • col: 색상 지정
    • lwd: 선의 굵기 지정
    • main: 그래프의 제목 지정
plot(model.mediation, cex=1.2, col="royalblue", lwd=2,
     main="Mediation Effect Analysis")
  • 도표해석
    • 가운데 있는 파란색점은 각각 간접효과·직접효과·총효과의 추정치를 나타냄
    • 그리고 점 왼쪽과 오른쪽으로 뻗어나간 선은 95% 신뢰구간을 의미함

+ Recent posts