R:有缺失值时的中介效应分析代码
一、问题
最近在分析一批数据(有缺失值)的中介效应,但是遇到了以下问题:
(1)“sobel” 函数 (multilevel包):显示 z 值、相关关系、中介变量等,不显示 p 值,支持缺失值(默认剔除后计算)
(2)“mediation.test” 函数 (bda包):只显示 z 值 和 p 值,不支持缺失值
二、数据举例:
数据集:T1
X: 母亲教育年限(MEY)
M: 大脑灰质体积(GMV)
Y: 认知得分(COG),有缺失值(NA)
三、解决方法
# 使用Sobel函数
## 加载环境
install.packages("multilevel")
library(multilevel)
## 进行Sobel 测试
T1_SOBEL = Sobel(T1$MEY,T1$GMV,T1$COG)
T1_SOBEL
# 使用mediation.test函数
## 加载环境
install.packages("bda")
library(bda)
## 去掉缺失值并产生新数据表
T1_SUB = T1[which(T1$COG>"0"),]
## 利用新的数据表进行Mediation 分析
T1_MED = mediation.test(T1_SUB$GMV,T1_SUB$MEY,T1_SUB$COG)
T1_MED
四、拓展
1. 当缺失值比较少(整体5%以内)的时候,可以去掉缺失值进行分析;
2. 在去掉缺失值分析之后,为验证结果,可填补缺失值后再进行分析(见R中数据缺失值的处理);
3. 没有方法是完美的,第一步去掉缺失值直接分析作为Main Analysis,第二步复杂的方法作为Sensitivity Analysis
4. 不足之处难免,还请指出。感谢@蘭若 学姐的帮助~
还没人转发这篇日记