R数据分析:有调节的中介

写今天的文章之前啊,我们先来回顾回顾啥是中介,啥是调节

调节变量会影响XY的关系

Moderation tests the influence of a third variable (Z) on the relationship between X to Y

X -> Y (depending on Z)

而中介变量会中介或者说解释XY的关系

Mediation tests a hypothetical causal chain where the effect of one variable (X) on another variable (Y) is mediated, or explained, by a third variable (M)

X -> M -> Y

有调节的中介

最简单,最直观的有调节的中介如下图

有调节的中介就是在中介关系中有第4个变量Z能够调节整个中介作用,就是说中介因子的作用被调节了,而且这个调节的路径可以是中介路径上的任意一条(a,b,c')

X -> M -> Y (depending on Z)

The moderation can occur on any and all paths in the mediation model (e.g., a path, b path, c path, or any combination of the three)

那么今天要解决的问题就是用R做一个有调节的中介模型

例子如下:

一般情况下研究生花费在学习上的时间越多毕业的offer越多,这个关系被发表的文章数量所中介。

那么这个中介关系是不是会受到学习效率的调节呢?今天我么就要解决这个问题。

那么我们做如下规定

  • X为自变量学习时间

  • Y为offer数量

  • M为文章数

  • Z为学习效率

  • 数据模拟

    a1 = -.59 #学习时间对文章数量的系数
    a2 = -.17 #学习效率对文章数量的系数
    a3 = .29 #学习时间和学习效率在影响文章数量时的交互项系数
    b = .59 #文章数量对offer数量的系数
    cdash1 = .27 #学习时间对offer的系数
    cdash2 = .01 #学习效率对offer的系数
    cdash3 = -.01 #学习时间和学习效率在影响offer数量时的交互项系数

    n <- 200 #Set sample size
    X <- rnorm(n, 7, 1)
    Z <- rnorm(n, 5, 1)
    M <- a1*X + a2*Z + a3*X*Z + rnorm(n, 0, .1)
    Y <- cdash1*X + cdash2*Z + cdash3*X*Z + b*M + rnorm(n, 0, .1)

    Success.ModMed <- data.frame(offer = Y, time = X, pubs = M, efficiency = Z)

    上面的代码就模拟出了我们需要的数据,因为学习时间X和学习效率之间都是有交互项的,所以这两个变量需要中心化以避免多重共线性

    Success.ModMed$time.c <- scale(Success.ModMed$time, center = TRUE, scale = FALSE)

    Success.ModMed$efficiency.c <- scale(Success.ModMed$efficiency, center = TRUE, scale = FALSE)

    有调节的中介

    数据备好之后我们开始我们的分析,首先我们用mediation这个包。

    我们需要跑两个回归,基本上和4步回归法是一样的,首先是忽略掉总效应,然后直接看自变量X对中介变量的效应,然后控制中介变量看X的直接效应(控制X看中介变量的效应b),但是因为我们做的有调节的中介,而且模拟调节效应都在a和c'的路径上,所以在做这两个回归时必须加上调节作用,具体如下:

    library(mediation)

    mediate <- mediation::mediate
    Mod.Med.Model.1<-lm(pubs ~ time.c*efficiency.c, data = Success.ModMed)#模型1自变量对中介变量的效应,加了交互项

    summary(Mod.Med.Model.1)

    Mod.Med.Model.2<-lm(offer ~ time.c*efficiency.c + pubs, data = Success.ModMed)#模型二然后控制中介变量看X的直接效应,加了交互项
    summary(Mod.Med.Model.2)

    两个模型的输出结果如下:

    从输出我们就可以看出,整个模型的中介是存在的,那么我们如何知道调节变量是如何调节了中介路径呢

    接着看,我们的思想就是在调节变量的不同水平,中介路径系数是有显著差异的,此时又涉及到给调节变量划分水平的问题,之前的文章有讲,通常我们可以以一个标准差的距离划分不同水平

    首先我们看看在调节变量低水平,我们的中介关系是如何表现的:

    low.efficiency<-mean(Success.ModMed$efficiency.c)-sd(Success.ModMed$efficiency.c)
    #进行中介检验
    Mod.Med.Lowefficiency <- mediate(Mod.Med.Model.1, Mod.Med.Model.2,
    covariates = list(efficiency.c = low.efficiency), boot = TRUE,
    boot.ci.type = "bca", sims = 10, treat="time.c", mediator="pubs")

    我们还可以给这个水平的中介作用画个图:

    plot(Mod.Med.Lowefficiency, xlim = 0:1)

    可以看到在这个水平上中介作用中的直接效应和间接效应都是有显著意义的。

    那么接下来我们再看学习效率这个调节变量的高水平,我们的中介作用是如何变化的:

    high.efficiency<-mean(Success.ModMed$efficiency.c)+sd(Success.ModMed$efficiency.c)

    Mod.Med.Highefficiency <- mediate(Mod.Med.Model.1, Mod.Med.Model.2,
    covariates = list(efficiency.c = high.efficiency),
    #boot = TRUE,
    #boot.ci.type = "bca", sims = 10,
    treat="time.c", mediator="pubs")

    summary(Mod.Med.Highefficiency)
    plot(Mod.Med.Highefficiency, xlim = 0:1)

    此时,可以看到在这个水平上中介作用中的直接效应和间接效应依然都是有显著意义的。

    但是此时注意我们图中间接效应好像看起来是比上一个图大的,从图中就可以看出来有可能这个调节变量调节了这条路径。

    我们做一下检验:

    Mod.Med.Testefficiency <- mediate(Mod.Med.Model.1, Mod.Med.Model.2, #boot = TRUE,
    boot.ci.type = "bca", sims = 10, treat="time.c", mediator="pubs")

    test.modmed(Mod.Med.Testefficiency, covariates.1 = list(efficiency.c = low.efficiency),
    covariates.2 = list(efficiency.c = high.efficiency), sims = 10)

    通过对调节变量不同水平模型的中介间接效应和直接效应的检验,我们发现间接效应在调节变量的不同水平有显著性差异,而直接效应没有。

    那么我们就可以解释说,那些效率高的学生来说,花费在学习上的时间X通过影响文章发表的数量M对offer数量Y的影响更大,这种间接关系显著的大于效率低的学生

    小结

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

(0)

相关推荐

  • 中介效应是个什么作用?

    中介变量(mediator)是自变量X对因变量Y产生影响的中介,如果变量X通过影响变量M来影响因变量Y则称M为中介变量,也就是说自变量X对因变量Y的影响有一部分或者全部是通过中介变量M来发挥作用的.通 ...

  • 互助问答第435期:关于中介效应的问题

    关于中介效应的问题 老师,您好!请问一下,在用逐步回归法检验中介效应时,用的是面板数据,且每一个模型中自变量以及控制变量都滞后一期.这样做没问题吧,谢谢老师.如下所示 Yit=C0+C1Xit-1+C ...

  • 弥散效应、

    ​1.弥散效应 弥散效应是指应力波在传播过程中不能保持初始波形,各谐波分量以各自的相速传播,造成波形拉长,上升沿变缓,波形出现高频震荡的现象. 中文名     弥散效应 对象          应力波 ...

  • 三种中介效应检验方法及操作步骤

    介绍三种常见中介效应检验方法,分别是因果逐步回归检验法.系数乘积法.改良后的因果逐步回归法,以及如果使用SPSSAU进行操作. 什么是中介效应 中介效应:如果自变量X通过影响变量M而对因变量Y产生影响 ...

  • “中介调节效应”类型的文章比较好发?但,你是不是忽略了因变量和自变量的一些隐藏的意思?

    自从我们一直强调"中介调节效应"类型的文章比较好发之后,似乎就出现了"救命稻草"的现象.这大概率是因为这种类型的文章只需要去做调查,且相对干预研究来说,调查的实 ...

  • med4way:中介效应和交互效应分析

    med4way:中介效应和交互效应分析

  • JASP案例实践:简单中介效应分析

    我想考察有用性对满意度的影响,以及趣味性在有用性对满意度影响中的中介作用. 这三个研究变量均为连续数据.使用JASP 0.14.1 进行中介效应分析,暂不考虑控制变量. JASP在中介分析上很好操作, ...

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

    什么是中介和调节 中介的简单叙述就是一个变量X影响了另外一个变量M,而这个另外的变量还会去影响第三个变量Y.中介就是在尝试解释XY的关系,所以很多人做机制探索的时候就是在做中介,一个很形象的例子就是收 ...

  • R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍

    看似小小的中介,废了我好多脑细胞,这个东西真的不简单,从7月份有人问我,我多重中介,到现在的纵向数据中介,从一般的回归做法,到结构方程框架下的路径分析法,到反事实框架做法,从中介变量和因变量到是连续变 ...

  • R数据分析:广义估计方程式GEE的做法和解释

    好久没有更新文章了,因为同学们咨询的问题有点多,另一个原因就是自己实在太懒.... 今天继续给大家写广义估计方程式GEE. In statistics, a generalized estimatin ...

  • R数据分析:潜增长模型LGM的做法和解释,及其与混合模型对比

    今天收到了北京大学老师打来的电话,问我如果没有被数据科学方向的导师录取,愿不愿意去读生物统计的博士. 我婉拒了,些许遗憾,但不后悔,原因全是个人选择,读博挺好的,但是我决定换一种环境,去工作了. 从去 ...

  • R数据分析:如何用lavaan包做结构方程模型,实例解析

    今天给大家写一个非常经典的结构方程模型的例子,这个例子是用来研究精神错乱的,模型总共有3个因子,一个社会经济地位SES,另外两个分别是1967年和1971年的精神错乱alien.每个因子两个测量指标, ...

  • R数据分析:用lme4包拟合线性和非线性混合效应模型

    快一个月没更新文章啦,今天收到好几个粉丝的催更私信,好的吧,实在对不住大家期待的眼神,看样子不能再拖啦,想想写啥好呢,大家咨询比较多的,混合模型算一个,今天就继续给大家写写混合模型如何做吧. 混合模型 ...

  • R数据分析:潜变量与降维方法(主成分分析与因子分析)

    今天把潜变量和降维分析的方法合起来给大家写写,因为这两个东西之间有诸多共同之处. 潜变量 为啥需要潜变量呢?考虑一个问题,比如你想测测一个人有多幸福,你怎么测? 估计你会看看这个人: 脸上有没有笑容 ...

  • R数据分析:再写潜在类别分析LCA的做法与解释

    应粉丝要求,再给大家写一期潜在类别分析的教程,尽量写的详细一点. 首先,问题导入,啥是潜在类别分析? Latent Class Analysis (LCA) is a statistical mode ...

  • R数据分析:交叉滞后模型非专业解释

    今天继续写交叉滞后模型,本文大部分内容参考自文献:Kearney, Michael. (2017). Cross-Lagged Panel Analysis. 所以不论自己写的怎么样都建议大家去瞅瞅原 ...