结合【学习支持(X)→学习投入(M)→学习成绩(Y)】的案例,讲解最基础、最常用的“逐步回归法+Bootstrap检验”,所有命令直接复制粘贴即可,新手零踩坑。
先明确变量设定(直接对应你的数据,替换变量名即可):
自变量X:学习支持(score_x,连续变量,得分越高,学习支持越充足);
中介变量M:学习投入(score_m,连续变量,得分越高,学习投入程度越高);
因变量Y:学习成绩(score_y,连续变量,得分越高,成绩越好);
控制变量:性别(gender)、年级(grade)、家庭教养方式(family)(根据自身研究添加,可删可加)。
第一步:数据预处理(必做,避免结果偏差)
先检查数据是否有缺失值、异常值,对连续变量进行中心化处理/标准化处理(减少多重共线性,如果VIF值小于5,中介检验可做可不做),命令如下:
* 1. 导入数据(替换为你的数据路径)use "D:\学习投入中介检验数据.dta", clear* 2. 缺失值处理(两种方法,选一种即可)* 方法1:删除缺失值(适合缺失值较少的情况)drop if missing(score_x, score_m, score_y, gender, grade, family)* 方法2:均值填补(适合缺失值较多的情况)——根据自己的数据缺失值类型分类处理foreach var of varlist score_x score_m score_y { egen `var'_fill = mean(`var') replace `var' = `var'_fill if missing(`var') drop `var'_fill}* 3. 连续变量中心化(自变量、中介变量、因变量均需中心化)foreach var of varlist score_x score_m score_y { egen mean_`var' = mean(`var') gen c_`var' = `var' - mean_`var' drop mean_`var'}* 注:中心化后的变量名前加“c_”,后续回归用中心化变量
注意:
关于缺失值的处理方法,可查看往期文章,根据自己数据的缺失值类型,进行分类处理,要具体问题具体分析。
连续变量需要标准化处理,虚拟/分类变量不做处理
*连续变量标准化处理norm score_x, method(zee)
第二步:逐步回归法(中介检验核心步骤)
逐步回归法分为3步,每一步对应一个回归方程,必须依次执行,且记录每一步的核心结果(系数、标准误、P值、R²),这是后续判断中介效应的关键。
* 第一步回归:X对Y的总效应(方程1:Y = cX + 控制变量 + ε)reg c_score_y c_score_x gender grade family* 保存该回归结果,后续用于对比est store m1* 第二步回归:X对M的效应(方程2:M = aX + 控制变量 + ε)reg c_score_m c_score_x gender grade familyest store m2* 第三步回归:X和M同时对Y的效应(方程3:Y = c'X + bM + 控制变量 + ε)reg c_score_y c_score_x c_score_m gender grade familyest store m3* 查看三个模型的结果(对比系数,初步判断中介效应)esttab [m1 m2 m3] using 逐步回归结果.doc, stats(coef,tstat) addstat(Ajusted R2,`e(r2_a)') replace * 或outreg2 [m1 m2 m3] using 逐步回归结果.doc* 注:b(3)、se(3)表示保留3位小数,star指定显著性标记,replace表示覆盖原有文件
图中y2为因变量,reli为自变量,tu为中介变量,其余为控制变量。
第三步:Bootstrap检验(验证间接效应,CSSCI必做)
逐步回归法只能初步判断中介效应是否存在,但存在一定局限性(如对间接效应的检验力较弱)。CSSCI期刊更认可“Bootstrap检验”,它通过重复抽样,验证间接效应(a×b)的显著性,避免正态分布假设带来的偏差,命令如下:
* 方法1:使用sgmediation2命令(适合新手,直接输出间接效应及显著性)* 先安装命令(第一次使用需安装,后续无需重复)ssc install sgmediation2, replace* 执行Bootstrap检验(重复抽样5000次,CSSCI常用标准)sgmediation2 c_score_y c_score_x, m(c_score_m) cov(gender grade family) boot reps(5000)* 说明:m()指定中介变量,cov()指定控制变量,boot表示执行Bootstrap,reps指定抽样次数* 方法2:使用bootstrap命令(更灵活,可自定义输出)bootstrap ab = _b[c_score_x] * _b[c_score_m], reps(5000) seed(12345) nodots: reg c_score_y c_score_x c_score_m gender grade family* 说明:seed(12345)固定种子,保证结果可重复;nodots简化输出;ab表示间接效应(a×b)* 或bootstrap r(ind_eff) r(dir_eff), reps(5000): sgmediation c_score_y, mv(c_score_m) iv(c_score_x) cv(gender grade family)
* 导出Bootstrap检验结果(含间接效应、置信区间)estat bootstrap, allgraph export "Bootstrap间接效应分布图.png", replace // 保存分布图putdocx beginputdocx paragraph, halign(center)putdocx text ("Bootstrap中介效应检验结果"), boldputdocx table tbl = etableputdocx paragraphputdocx image "Bootstrap间接效应分布图.png"putdocx save "Bootstrap检验报告.docx", replace
注意:
安装命令失败:如果ssc install安装失败,可尝试用“findit 命令名”(如findit sgmediation2),找到对应链接安装;
抽样次数:Bootstrap抽样次数建议≥5000次,次数越多,结果越稳健,CSSCI论文通常要求5000次及以上;
结果结果解读:判断:如果Bootstrap检验的95%置信区间不包含0,说明间接效应显著,中介效应成立;若包含0,则中介效应不显著。