多归责MICE,标准化系数的R中的中介分析

问题描述

我需要对R进行中介分析,其中包含不完整的数据作为我的硕士论文。根据van Buuren&Groothuis-Oudshoorn(2011),对于缺失,我使用了 MICE多重插补

对于调解分析,我已经考虑参考 Tingley等人。 (2014; https://oar.princeton.edu/jspui/bitstream/88435/pr1gj2f/1/Mediation%20JSS.pdf

在这里,您可以找到他的代码https://cran.r-project.org/web/packages/mediation/mediation.pdf 假设的例子 要使用中介,必须列出多个数据集。然后,还必须根据您的数据集重复处理分配列表多次。

datasets <- list(D1=D1,D2=D2) # list of multiply imputed data sets
mediators <- c("M1")
outcome <- c("Ycont1")
treatment <- c("T1","T1") # note how the treatment indicator is repeated
covariates <- c("X1+X2")
olsols <- mediations(datasets,treatment,mediators,outcome,covariates,families=c("gaussian","gaussian"),interaction=FALSE,conf.level=.90,sims=1000)
output <- amelidiate(olsols) # summary(output)
plot(output)

对于我的硕士论文,我想了解eCoach与患者之间的治疗联盟是否介导了基于互联网的抑郁症干预的完整模块数量与抑郁症严重程度之间的关系。

已完成模块数(ModuleEr)->治疗联盟(WAI_C)->抑郁症严重程度(QIDS_t1)

我的变量是数字。我对标准系数特别感兴趣。我也尝试了Tingley的代码,并适应了我的变量:

df <-data
library(mice)
library(mediation) 

出于测试原因的简单估算

imp <- mice(df,m=5,seed = 1234)

我转换每个估算数据集

imp1 <- complete(imp,1)
imp2 <- complete(imp,2)
imp3 <- complete(imp,3)
imp4 <- complete(imp,4)
imp5 <- complete(imp,5)

我只对数字变量进行数据标准化

imp1z <- scale(imp1[,1:13])
imp2z <- scale(imp2[,1:13])
imp3z <- scale(imp3[,1:13])
imp4z <- scale(imp4[,1:13])
imp5z <- scale(imp5[,1:13])

我制作了两个由多个估算数据集组成的列表:一个带有标准化变量的列表,一个带有非标准化变量的列表

datasets1 <- list(imp1=imp1,imp2=imp2,imp3=imp3,imp4=imp4,imp5=imp5)
datasets2<- list(imp1z=imp1z,imp2z=imp2z,imp3z=imp3z,imp4z=imp4z,imp5z=imp5z)

然后,我定义我的介体,结局,治疗肠胃炎

mediators <- c("WAI_C")
outcome <- c("QIDS_t1")
treatment <- c("ModuleEr","ModuleEr","ModuleEr" ) # is it correct to repeat the treatment as many times as you have data sets? I hav read it here: https://rdrr.io/cran/mediation/src/R/amelidiate.R
covariates <- c("QIDS_t0")

接下来,我将调解函数与非标准变量一起使用。我想知道如何定义families = c(“ gaussian”,“ gaussian”)。我的变量不是正态分布的……

olsols1 <- mediations(datasets1,conf.level=.95,sims=10)
output1 <- amelidiate(olsols1)
summary(output1)
plot(output1) # the plot function doesn’t work: Error in plot.new() : figure margins too large

我的输出1看起来像这样 enter image description here 如果我对标准数据集(datasets2)重复中介功能,则会收到错误消息:

olsols2 <- mediations(datasets2,sims=10)
output2 <- amelidiate(olsols2)
summary(output2)

eval中的错误(predvars,data,env):找不到对象“ WAI_C” 其他:警告: 在dataarg $ weight中 将左侧转换为列表

怎么了?为什么找不到WAI_C?我检查了所有5个标准化数据集,它们都包含WAI_C。为什么介体变量特别受到影响?

该如何将左侧转换为列表?

由于output1仅显示Acme,ADE,总效果。如何获得相关的回归系数?只需建立回归方程式就足够了吗?

Med1 <- with(data = imp,exp = lm(scale(WAI_C) ~ scale(ModuleEr) + scale(QIDS_t0)))
Med1.pooled <- pool(Med1)
summary(Med1.pooled)

Med2 <- with(data = imp,exp = lm(scale(QIDS_t1) ~ scale(ModuleEr) + scale(WAI_P) + scale(QIDS_t0)))
Med2.pooled <- pool(Med2)
summary(Med2.pooled)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)