中介模型的标准化回归系数计算

最近觉得自己做的二阶结构方程模型过于花哨,想改成最基础的中介模型。中介模型曾经用Rstudio里mediation包做过,所以没什么困难。
然后尴尬的地方就来了,mediation包计算的结果不报告标准化回归系数。网上也有人说R对标准化回归系数不友好,好吧,就是被歧视了呗。
既然不给我,我就自己算。

##先把数据“无中生有”##
n <- 50
X <- rnorm(n,40,12)
a <- 0.40
M <- a*X+rnorm(n,0,0.5)
b <- 0.35
cdash <- 0.1
Y <- cdash*X+b*M+rnorm(n,0,0.5)
my_data <- data.frame(X,M,Y)

##中介模型##
library("mediation")
a_regression <- lm(M~X,data = my_data)
b_regression <- lm(Y~X+M,data = my_data)
c_regression <- lm(Y~X,data = my_data)
c2_regression <- lm(Y~X+M,data = my_data)
contcont <- mediate(a_regression,b_regression,treat = "X",
                    mediator = "M",boot = TRUE,
                    boot.ci.type = "bca",sims = 5000)
summary(contcont)

Causal Mediation Analysis 
Nonparametric Bootstrap Confidence Intervals with the BCa Method
               Estimate 95% CI Lower 95% CI Upper p-value    
ACME             0.1236       0.0529         0.23  0.0036 ** 
ADE              0.1182       0.0126         0.19  0.0236 *  
Total Effect     0.2419       0.2276         0.26  <2e-16 ***
Prop. Mediated   0.5111       0.2186         0.94  0.0036 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Sample Size Used: 50 
Simulations: 5000

因为是自己编出来的数据,可能会拟合后出现不显著的情况,如果遇到就重新生成一套(反正吹牛不花钱)。我就是第二轮才成的。

言归正传,在结果里确实看不到标准化回归系数的结果。百度检索相关关键词,看到知乎上有人解答了,《回归模型中的标准化回归系数是什么,该如何计算得到?——by 医小咖》
https://zhuanlan.zhihu.com/p/164970155
在这篇文章里,作者给出了两个重要公式:
每变化1个标准差的回归系数 = 未标准化回归系数 * 该自变量的标准差
标准化回归系数 = 未标准化回归系数 * 该自变量的标准差 / 因变量的标准差
那么接下来检验一下对不对。

##提取非标准化回归系数a##
a_coeff <- summary(a_regression)$coefficients
a_coeff
a_coeff[2,1]
[1] 0.3999142
##计算##
a_coeff[2,1]*sd(X)/sd(M)
[1] 0.9945679
##同理,计算b和c##
b_coeff <- summary(b_regression)$coefficients
b_coeff
b_coeff[3,1]
[1] 0.3091171
b_coeff[3,1]*sd(M)/sd(Y)
[1] 0.5053385
c2_coeff <- summary(c2_regression)$coefficients
c2_coeff
c2_coeff[2,1]
[1] 0.1182374
c2_coeff[2,1]*sd(X)/sd(Y)
[1] 0.4807086
##结果汇总##
X → M非标准化 & 标准化:0.400 & 0.995
M → Y非标准化 & 标准化:0.309 & 0.505
X → Y非标准化 & 标准化:0.118 & 0.481

接下来验算一下,用lavaan包拟合结构方程模型,其中Std.lv为非标准化,Std.all为标准化。
经过对照可以看出结果是一致的。

library("lavaan")
model <- '
Y~c2*X
M~a*X
Y~b*M
ab:=a*b
total:=c2+(a*b)
'
fit <- sem(model,data = my_data)
fit <- sem(model,data = my_data,se="bootstrap",bootstrap=5000)
summary(fit, fit.measures = TRUE,standardize=TRUE,rsquare = TRUE)

##截取主要结果##
Regressions:
              Estimate  Std.Err  z-value  P(>|z|)
  Y ~                                                 
    X     (c2)   0.118    0.044    2.677    0.007
  M ~                                                 
    X     (a)    0.400    0.006   66.797    0.000
  Y ~                                                 
    M     (b)    0.309    0.110    2.805    0.005
   Std.lv  Std.all
                  
    0.118    0.481
                  
    0.400    0.995
                  
    0.309    0.505

这时候我忽然问自己,为什么不一开始直接就用lavaan包计算呢?
因为一开始觉得mediation包可以提供ACME间接效应(ab),ADE直接效应(c'也就是c2)和Total effect总效应(c)的结果。折腾了一大圈发现,用lavaan包算出来的非标准化系数也能用来算上面这些效应。真是哭笑不得。

而且,我还在网上找到一个叫做QuantPsyc的包,可以直接算标准化回归系数,不过遗憾的是不能在R里直接下载。
国外的网友形容这个功能短小精悍(The function is short and sweet),我把包的公式扒下来了。虽然不能完全看懂,但是大概感觉和上面知乎文章里的公式一致,说明这个公式还是正确的,也算是找到了半个出处吧。
本来试图推导这个公式,或者找到公式的出处,感觉有些难,以后再说吧。

>lm.beta
function (MOD) 
{
    b <- summary(MOD)$coef[-1, 1]
    sx <- sd(MOD$model[-1])
    sy <- sd(MOD$model[1])
    beta <- b * sx/sy
    return(beta)
}

参考资料:
温忠麟, & 叶宝娟. (2014). 中介效应分析:方法和模型发展. 心理科学进展, 22(005), 731-745.

https://zhuanlan.zhihu.com/p/164970155《回归模型中的标准化回归系数是什么,该如何计算得到?》

https://www.r-bloggers.com/2010/11/example-8-14-generating-standardized-regression-coefficients/#:~:text=Standardized%20%28or%20beta%29%20coefficients%20from%20a%20linear%20regression,standardized%20post-hoc%20based%20on%20the%20appropriate%20standard%20deviations.《generating standardized regression coefficients》

https://blog.csdn.net/huangyouyu523/article/details/78565159《R语言做如何做多元回归分析(逐步回归)之 提取回归结果参数-调整R方,标准化回归系数》

https://www.zhihu.com/question/312961041/answer/1159685698《使用R 语言mediation 包做中介效应分析,结果输出中的ACME 和ADE 分别代表什么?》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容