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

最近觉得自己做的二阶结构方程模型过于花哨,想改成最基础的中介模型。中介模型曾经用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 分别代表什么?》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容