井出草平の研究ノート

媒介変数と間接効果と総合効果[R]

lavaan - Mediation
https://lavaan.ugent.be/tutorial/mediation.html

Yが従属変数、Xが独立変数(予測変数)、Mが媒介変数とする。

f:id:iDES:20200809171110p:plain

データは仮想のもの。

library(lavaan)
set.seed(1234)
X <- rnorm(100)
M <- 0.5*X + rnorm(100)
Y <- 0.7*M + rnorm(100)
Data <- data.frame(X = X, Y = Y, M = M)
model <- ' # direct effect
             Y ~ c*X
           # mediator
             M ~ a*X
             Y ~ b*M
           # indirect effect (a*b)
             ab := a*b
           # total effect
             total := c + (a*b)
         '

ラベルをそれぞれにつける。

独立変数Xにはc
従属変数Yにはb
媒介変数Mにはa

これは任意でいいが、間接効果の書き方が変わってくる。
まず:=は母数を定義づけるための記号である。
aba*bと定義づけられている。ここが間接効果に相当する。間接効果は構成する2つのパスの積であるため定義が積になっている。
totalというのは総合効果であり、c + (a*b)と定義づけられる。ちなみにcは直接効果である。

実行

fit <- sem(model, data = Data)
summary(fit, ci=T) ## 95%区間を追加

結果。

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
  Y ~                                                                   
    X          (c)    0.036    0.104    0.348    0.728   -0.168    0.241
  M ~                                                                   
    X          (a)    0.474    0.103    4.613    0.000    0.273    0.675
  Y ~                                                                   
    M          (b)    0.788    0.092    8.539    0.000    0.607    0.969

Variances:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
   .Y                 0.898    0.127    7.071    0.000    0.649    1.147
   .M                 1.054    0.149    7.071    0.000    0.762    1.346

Defined Parameters:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
    ab                0.374    0.092    4.059    0.000    0.193    0.554
    total             0.410    0.125    3.287    0.001    0.166    0.654

間接効果はabなので0.374[95%LC: 0.193-0.554]、総合効果は0.410[95%CI: 0.166-0.654]となる。
この方法はデルタ法で、ブートストラップで標準誤差を算出できるようだ。

fit2 <- sem(model, data = Data, se = "bootstrap",  bootstrap = 10000)
summary(fit2, ci=T)