R语言medflex包中介效应分析

中介变量(mediator)是一个重要的统计概念,如果自变量 X 通过某一变量 M 对因变量 Y 产生一定影响,则称 M 为 X 和 Y 的中介变量。我们既往已经介绍了SPSS行中介效应分析和R语言mediation包行中介效应分析,今天继续介绍R语言medflex包中介效应分析。
在这里插入图片描述
我们先导入数据和R包

library(medflex)
UPBdata<-read.csv("E:/r/test/jiaolv.csv",sep=',',header=TRUE)

在这里插入图片描述
这是一个调查研究的数据(公众号回复:焦虑数据,可以获得数据),该数据集涉及385个人的子样本,即那些对一系列与恋爱关系和分手特征相关的问卷,观察分手期间经历的情绪困扰或负面情绪情绪作为中介变量,对伴侣表现出不想要的追求产生影响。Att:自我报告的焦虑依恋水平(标准化)attbin:自我报告的焦虑依恋水平的二进制版本:1 = 高于样本平均值,0 = 低于样本平均值 attcat:自我报告的焦虑依恋水平的多分类版本: L = 低,M = 中等,H = 高 negaff:自我报告的经验性消极情绪水平(标准化)initiator:离婚的发起人,gender:性别: F=女性,M=男性,educ:教育水平:H=高(至少有学士学位),M=中(完成中学教育)或L=低(其他),age:年龄(岁),UPB:二元变量,表示个人是否报告对前伴侣表现出不想要的追求行为,结局变量

在本研究中我们研究焦虑(Att)是否通过negaff(消极情绪)这个中介变量影响最终的追求行为。在这里medflex包介绍了2种方法,权重法和插补法
先来介绍权重法
在这里插入图片描述
先要建立negaff与协变量的线性方程

medFit <- glm(negaff ~ factor(attbin) + gender + educ + age,
              family = gaussian, data = UPBdata)

使用neWeight这个函数对方程加权生成权重

expData <- neWeight(medFit)
head(expData, 4)

在这里插入图片描述
新的变量attbin0和attbin1分别对应假想的暴露值x和x ∗(见上图2),attbin0是直接效应,attbin1是间接效应。
搞清楚了这个,我们直接对模型加权,生成加权后数据

expData <- neWeight(negaff ~ factor(attbin) + gender + educ + age,
                    data = UPBdata)

在这里插入图片描述
生成加权后数据我们可以查看它的权重(这步不是必要的)

w <- weights(expData)
head(w, 10)

在这里插入图片描述
生成加权数据后我们就可以生成最终模型进行分析了,默认是通过重抽样生成可信区间,重抽样需要点时间等一等

neMod1 <- neModel(UPB ~ attbin0 + attbin1 + gender + educ + age,
                  family = binomial("logit"), expData = expData)
summary(neMod1)

在这里插入图片描述
这里可以看到attbin1有统计学意义,表明焦虑(Att)是通过negaff(消极情绪)这个中介变量影响间接的影响到最求行动的。
如果设置se = "robust"可以不采用重抽样,近似求出可信区间
在这里插入图片描述
下面介绍一下插补法:先要生成一个等下要插补的程序

impFit <- glm(UPB ~ factor(attbin) + negaff + gender + educ + age,
              family = binomial("logit"), data = UPBdata)
expData <- neImpute(impFit)

在这里插入图片描述
插补后会形成新的数据集,就可以进一步分析了

expData <- neImpute(UPB ~ factor(attbin) + negaff + gender + educ + age,
                    family = binomial("logit"), data = UPBdata)
neMod1 <- neModel(UPB ~ attbin0 + attbin1 + gender + educ + age,
                  family = binomial("logit"), expData = expData, se = "robust")
summary(neMod1)

在这里插入图片描述
得到结果和权重法差不多,下面自变量是介绍3分类的,它的做法是基于插补法进行的,使用的是变量attcat:自我报告的焦虑的多分类版本: L = 低,M = 中等,H = 高。

expData <- neImpute(UPB ~ attcat + negaff + gender + educ + age,
                    family = binomial("logit"), data = UPBdata)
head(expData)
neMod <- neModel(UPB ~ attcat0 + attcat1 + gender + educ + age,
                 family = binomial("logit"), expData = expData, se = "robust")
summary(neMod)

在这里插入图片描述
得到的结果是相对于L低水平而言的。下面来进行连续变量Att:自我报告的焦虑依恋水平的中介效应分析

expData <- neImpute(UPB ~ att + negaff + gender + educ + age,
                    family = binomial("logit"), data = UPBdata, nRep = 3)
head(expData)
neMod1 <- neModel(UPB ~ att0 + att1 + gender + educ + age,
                  family = binomial("logit"), expData = expData, se = "robust")
summary(neMod1)

在这里插入图片描述
解释为焦虑依恋水平的直接和间接影响为 焦虑依恋水平增加一个标准差(即从x到x+1)的直接和间接影响对应于对应于表现出不需要的追求行为的几率的增加。
还可以进一步绘图表示

par(mfrow = c(1, 2))
plot(neMod, xlab = "log odds ratio")
plot(neMod1, xlab = "odds ratio", transf = exp)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dege857/article/details/130075196
今日推荐