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

什么是中介和调节

中介的简单叙述就是一个变量X影响了另外一个变量M,而这个另外的变量还会去影响第三个变量Y。中介就是在尝试解释XY的关系,所以很多人做机制探索的时候就是在做中介,一个很形象的例子就是收入高的人通常活得更久,机制是什么,一种可能是收入高的人医疗保健更好,那么医疗保健就是中介。通过这么一个分析,你就似乎是找到了收入和寿命之间的作用机制。当然这个例子很浅显,但是一般中介就是这么理解。

Mediation analysis tests a hypothetical causal chain where one variable X affects a second variable M and, in turn, that variable affects a third variable Y. Mediators describe the how or why of a (typically well-established) relationship between two other variables and are sometimes called intermediary variables since they often describe the process through which an effect occurs.

中介最常规的做法就是4步回归法Baron & Kenny’s (1986) 4-step indirect effect method,网上有很详细的教程,但是这个方法的统计效能不高。

调节作用也会牵扯到第三个变量Z,这个时候我们就不是在探讨因果路径上的关系了,调节要回答的问题是什么时候XY的关系才会发生,这个调节因子是可以加强、减弱、甚至是反转XY的关系的。

moderation tests for when or under what conditions an effect occurs. Moderators can stength, weaken, or reverse the nature of a relationship.

给大家举个例子

学习自我效能可以调节考试重要性和应试焦虑之间的关系,什么意思呢,就是那些学习自我效能高的同学面对重要的考试焦虑程度比那些学习自我效能低的同学面对重要考试时的焦虑程度低,而且呀,所有的同学面对不重要考试的时候均不焦虑。

上面的例子中只有在自我效能高的同学中才会有焦虑减弱的情况,也就是说考试重要性与焦虑的关系被学习自我效能这个变量调节了,而且是个weaken的关系。

通常来讲对于调节作用的做法就是做调节变量和自变量的交互,那么交互的各种情况我之前的文章中都有介绍,有兴趣的自行翻阅。

今天就给大家写一写中介和调节的R语言一般做法。

中介分析

Mediation tests whether the effects of X (the independent variable) on Y (the dependent variable) operate through a third variable, M (the mediator).

最基本,最鲜明的中介如下图:

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

在上图中我们有这么一种关系 c = c’ + ab,也就是总效应等于直接效应加上间接效应

那么中介效应又可以分为完全中介和部分中介:完全中介就是M控制了之后X的直接效应就没了,部分中介就是说M控制了之后X的效应减弱了但还有。

Perfect mediation occurs when the effect of X on Y decreases to 0 with M in the model. Partial mediation occurs when the effect of X on Y decreases by a nontrivial amount (the actual amount is up for debate) with M in the model.

首先我们模拟出我们的数据:

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)
2.2 Method 1: Ba

4步回归法做中介:

  1. 先做X到Y的回归,这一步得到总效应(可以不显著)
  2. 做X到M的回归,这一步必须显著
  3. 控制X做M到Y的回归,得到路径b,b必须显著
  4. 做Y到X的回归,一定不显著
#1\. 总效应
fit <- lm(Y ~ X, data=Meddata)
summary(fit)
#2\. 路径a
fita <- lm(M ~ X, data=Meddata)
summary(fita)
#3\. 路径b
fitb <- lm(Y ~ M + X, data=Meddata)
summary(fitb)
#4.反向路径
fitc <- lm(X ~ Y + M, data=Meddata)
summary(fitc)

到这儿我们所有的中介步骤都跑完了,我们还是用特别好用的stargazer包给大家展示一下模型结果:

library(stargazer)
stargazer(fit, fita, fitb, fitc, type = "html", 
          title = "Baron and Kenny Method",
          out="test.html")
R数据分析:中介作用与调节作用的分析与解释

从输出的结果可以看到,控制了M后XY的关系不在显著了,似乎是一个完全中介,但是此时我们还是有必要对整个间接效应做一个检验,检验方法一个是the Sobel test 另一个是 bootstrapping

先进行Sobel test

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

mediation.test(M,X,Y)

运行上面的代码就可以得到直接效应和间接效应以及中介的显著性检验。

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

Sobel test的假设为间接效应ab是正态分布的,所以大样本的时候好使,小样本的时候有可能检验效能不足,这个时候就得用到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)

上面的代码中用到了mediation这个包,这个就是用bootstrapping方法检验中介的

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

从图中可以看到,自助抽样1000次后间接效应依然显著,直接效应不显著,我们可以很放心的说这个是一个完全中介了。

当然,输出中还有这个中介效应图:

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

调节效应分析

Moderation tests whether a variable (Z) affects the direction and/or strength of the relation between an IV (X) and a DV (Y). In other words, moderation tests for interactions that affect WHEN relationships between variables occur.

看上面的英文解释,调节要回答的什么时候某种XY之间的关系才会出现

最基本,最鲜明的调节作用如下图

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

我们依然用模拟数据来说明一切

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)

我们模拟出来了两个自变量XX1还有一个调节变量Z,如果把调节变量也算作自变量的话就是3个自变量。

对于调节作用的一般检验就是做交互,为了避免多重共线性,必须将交互的两个变量中心化。

因为你都是要放在一个回归方程中的嘛,所以得考虑多重共线性问题

那么,我们准备讨论XZ之间的交互,所以先将它两中心化:

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)

跑出来的回归结果:

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

我们还可以可视乎交互作用:

library(rockchalk)
ps  <- plotSlopes(fitMod, plotx="Xc", modx="Zc", xlab = "X", ylab = "Y", modxVals = "std.dev")
R数据分析:中介作用与调节作用的分析与解释

这个可视化又令我回忆起之前写的交互简单斜率图的画法的文章,因为我们的调节变量为连续变量所以有个参数modxVals,在这儿我将其设置为了modxVals = "std.dev",就是说在调节变量的加减一个标准差的水平上画简单斜率图。

和之前文章一样的,有兴趣可以去翻翻

至于这个调节作用的解释也很清晰了,就是在Z的不同水平X和Y的关系不一样,Z的水平越高XY的关系越积极

小结

我觉得这篇文章把R做中介和调节写的很明白了,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么编程基础没有从零学Python和R的,加油。数据分析问题咨询,代处理请私信(spss,R,Mplus)。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期内容:

R数据分析:双因素方差分析与交互作用检验

R数据分析:双连续变量交互作用的简单斜率图作图及解释

python机器学习:机器学习模型评价-交叉验证与留一验证

R数据分析:中介效应的做法

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容