更新於 2024/09/27閱讀時間約 10 分鐘

使用R語言跑多層次模型:連續調節變項交互作用

使用R語言跑多層次模型:類別調節變項交互作用圖一文當中,已經說明如對類別交互作用變項進行分析,但在使用R跑多層次模型時,有時候會遇到連續調節變項,這時候分析方法會有所差異,本文在介紹遇到連續調節變項時,如何進行簡單斜率分析,以及如何畫交互作用圖,最後再說如何使用Johnson-Neyman法。

1.加載相關package

library(lme4)
library(lmerTest)
library(ggplot2)
library(interactions)
library(haven)

2.加載資料

hsbfull<- read_sav("hsbfull with meanses and sesdev.sav")

3.跑Random Coefficients Model

mathach ~ 1 + sesdev + meanses + sesdev * meanses + (1 + sesdev | schoolid)
  • mathach 是數學成績的依變量。
  • sesdev 是家庭社會經濟地位的自變量。
  • meanses 是學校平均家庭社會經濟地位的自變量。
  • sesdev * meanses 是家庭社會經濟地位和學校平均家庭社會經濟地位的交互作用項。
  • (1 + sesdev | schoolid) 是學校層級的隨機截距和隨機斜率。

輸出結果

REML criterion at convergence: 46557.3

Scaled residuals:
Min 1Q Median 3Q Max
-3.1898 -0.7267 0.0158 0.7547 2.9205

Random effects:
Groups Name Variance Std.Dev. Corr
schoolid (Intercept) 2.6932 1.6411
sesdev 0.6804 0.8249 -0.19
Residual 36.7159 6.0594
Number of obs: 7185, groups: schoolid, 160

Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 12.6806 0.1492 153.6986 84.966 <2e-16 ***
sesdev 2.1978 0.1281 154.8150 17.157 <2e-16 ***
meanses 5.8688 0.3614 153.4153 16.240 <2e-16 ***
sesdev:meanses 0.2854 0.3188 168.8930 0.895 0.372
---
Signif. codes: 0***0.001**0.01*0.05.0.1 ‘ ’ 1
  • Random effects 共有三個,分別是schoolid (Intercept)/sesdev/Residual
  • 固定效應 sesdev 的估計係數為2.1978,p 值小於 0.001。這意味著,家庭社會經濟地位每增加一個單位,學生數學成績平均會增加 2.8028 分。
  • 固定效應 meanses 的估計係數為 5.8688,p 值小於 0.001。
  • 固定效應 sesdev:meanses 的估計係數為 0.2854,p為0.372,並非小於.05,代表交互作用不顯著。實際中,交互作用不顯著就不需要進行下一步分析,但這裡為了教學演練,還是繼續做簡單斜率分析,以及如何畫交互作用圖。

4.簡單(截距)斜率分析

sim_slopes(CroLev2, pred = sesdev, modx = meanses, cond.int = TRUE, 
centered="none", johnson_neyman = FALSE)
  • data:剛跑的模型。
  • pred:自變量。這裡假設是sesdev
  • modx:調節變量。這裡假設是meanses,對於連續變量,會自動挑出的三个值:平均值低出 1 個標準差(- 1 SD)/平均值(Mean)/平均值高出 1 個標準差(+ 1 SD)。這三個值可能代表了調節變量的低、中、高三個水平。幫助我們了解自變量對依變量的影響在不同水平下是否存在差異

SIMPLE SLOPES ANALYSIS 輸出結果:

When meanses = -0.4133998124 (- 1 SD):

Est. S.E. t val. p
--------------------------- ------ ------ -------- ------
Slope of sesdev 2.52 0.17 14.97 0.00
Conditional intercept 9.92 0.22 45.55 0.00

When meanses = 0.0001433542 (Mean):

Est. S.E. t val. p
--------------------------- ------- ------ -------- ------
Slope of sesdev 2.95 0.16 18.93 0.00
Conditional intercept 12.13 0.20 60.86 0.00

When meanses = 0.4136865208 (+ 1 SD):

Est. S.E. t val. p
--------------------------- ------- ------ -------- ------
Slope of sesdev 3.37 0.23 14.98 0.00
Conditional intercept 14.33 0.28 51.13 0.00
  • Est.:估計值
  • S.E.:標準誤差
  • t val.:t 值
  • p:p 值

語法解釋

  • 自變量是sesdev,調節變項是meanses,依變量是學生的數學成績。
  • 語法中列出了meanses的三個不同水平:平均值-1 個標準差(meansas = -0.4133),平均值(meansas = 0.000),和平均值+1 個標準差(meansas = 0.413)。
  • 對於三個不同水平,語法都列出了簡單斜率(Slope of sesdev)和條件截距(Conditional intercept)。
  • 以平均值+1 個標準差(meansas = 0.413)為例子,其sesdev的斜率為3.37,截距為14.33。

5.交互作用圖

interact_plot(CroLev2, pred = sesdev, modx = meanses,
x.label = "SES", y.label = "Math Achievement",
legend.main = "School MEAN SES")
  • CroLev1:剛跑的模型。
  • pred:自變量。
  • modx:調節變量。
  • x.label:x 軸標籤。
  • y.label:y 軸標籤。
  • legend.main:圖例標題。

6.Johnson-Neyman法

對於連續變項而言,之前方法是先訂出平均值-1 個標準差/平均值/平均值+1 個標準差三個水平,但此標準其實是根據專家建議而已,並沒有數據支持。Johnson-Neyman法可以實際從分析數據中,找出特定關鍵數值。理解Johnson-Neyman法給出的值的含義很重要,但通常不容易直觀地理解。對於自變量和調節變量的交互作用,預測變量的斜率通常只在調節變量的某些值下具有統計學意義。以下為Johnson-Neyman法的視覺化語法:

johnson_neyman(CroLev2,
pred = sesdev,
modx = meanses, alpha = .05)

參數說明:

  • CroLev1:剛跑的模型。
  • pred:自變量。
  • modx:調節變量。
  • alpha:設定顯著水準門檻。

輸出結果如下:

#> JOHNSON-NEYMAN INTERVAL 
#>
#> When meanses is OUTSIDE the interval [0.80, 2.67], the slope of
#> sesdev is p < .05.
#>
#> Note: The range of observed values of Illiteracy is [0.50, 2.80]
#>
付費訂閱
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.