问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

R数据分析:中介作用与调节作用的分析与解释

创作时间:
作者:
@小白创作中心

R数据分析:中介作用与调节作用的分析与解释

引用
简书
1.
https://www.jianshu.com/p/bdf084f42e80

中介作用和调节作用是统计分析中常见的概念,它们帮助我们理解变量之间的复杂关系。本文将详细介绍中介作用和调节作用的分析方法,并通过R语言进行具体实现。

什么是中介和调节

中介作用描述了一个变量X通过影响另一个变量M,进而影响第三个变量Y的过程。例如,收入高的人通常活得更久,可能是因为他们能够获得更好的医疗保健。在这个例子中,医疗保健就是中介变量。

调节作用则关注第三个变量Z如何影响X和Y之间的关系。调节变量可以增强、减弱甚至反转X和Y的关系。例如,学习自我效能可以调节考试重要性和应试焦虑之间的关系。

中介分析

中介分析检验的是X(自变量)对Y(因变量)的影响是否通过第三个变量M(中介变量)来实现。基本的中介模型如下图所示:

在这个模型中,总效应c等于直接效应c'加上间接效应ab。中介效应可以分为完全中介和部分中介:完全中介是指控制M后X的直接效应消失,部分中介是指控制M后X的效应减弱但仍然存在。

4步回归法

  1. 总效应:回归Y对X
  2. 路径a:回归M对X
  3. 路径b:回归Y对M和X
  4. 反向路径:回归X对Y和M
N <- 100
X <- rnorm(N, 175, 7)
M <- 0.7*X + rnorm(N, 0, 5)
Y <- 0.4*M + rnorm(N, 0, 5)
Meddata <- data.frame(X, M, Y)

fit <- lm(Y ~ X, data=Meddata)
fita <- lm(M ~ X, data=Meddata)
fitb <- lm(Y ~ M + X, data=Meddata)
fitc <- lm(X ~ Y + M, data=Meddata)

library(stargazer)
stargazer(fit, fita, fitb, fitc, type = "html", 
          title = "Baron and Kenny Method",
          out="test.html")

Sobel test

Sobel test假设间接效应ab是正态分布的,适用于大样本数据。

library(multilevel)
library(bda)
sobel(Meddata$X, Meddata$M, Meddata$Y)
mediation.test(M,X,Y)

Bootstrapping

Bootstrapping方法适用于小样本数据,通过重复抽样来估计间接效应的显著性。

library(mediation)
fitM <- lm(M ~ X,     data=Meddata) 
fitY <- lm(Y ~ X + M, data=Meddata) 
fitMed <- mediate(fitM, fitY, treat="X", mediator="M")
summary(fitMed)
plot(fitMed)

调节效应分析

调节效应分析检验变量Z如何影响X和Y之间的关系。基本的调节模型如下图所示:

模拟数据

N  <- 100 
X  <- abs(rnorm(N, 6, 4)) 
X1 <- abs(rnorm(N, 60, 30)) 
Z  <- rnorm(N, 30, 8) 
Y  <- abs((-0.8*X) * (0.2*Z) - 0.5*X - 0.4*X1 + 10 + rnorm(N, 0, 3)) 
Moddata <- data.frame(X, X1, Z, Y)

中心化处理

为了避免多重共线性问题,需要对交互项的变量进行中心化处理。

Xc    <- c(scale(X, center=TRUE, scale=FALSE)) #Centering IV; hours of sleep
Zc    <- c(scale(Z,  center=TRUE, scale=FALSE))

回归分析

library(gvlma)
fitMod <- lm(Y ~ Xc + Zc + Xc*Zc)
summary(fitMod)

可视化交互作用

library(rockchalk)
ps  <- plotSlopes(fitMod, plotx="Xc", modx="Zc", xlab = "X", ylab = "Y", modxVals = "std.dev")

小结

本文详细介绍了中介作用和调节作用的统计分析方法及其在R语言中的实现。通过具体的例子和代码,帮助读者理解这些复杂的统计概念,并能够实际应用到数据分析中。希望这篇文章能够帮助大家更好地理解中介作用和调节作用的分析方法。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号