目录
在社会科学研究中,理解和分析变量之间的复杂关系至关重要。中介效应分析为我们提供了一种深入探究这种关系的方法,它帮助我们揭示自变量如何通过中介变量来影响因变量的机制。
一、理论模型和原理
中介效应的基本理论模型可以表示为:自变量(X)首先影响中介变量(M),然后中介变量(M)再影响因变量(Y)。这意味着自变量(X)对因变量(Y)的影响部分或全部是通过中介变量(M)实现的。
其原理基于因果推断的逻辑。如果存在中介效应,那么控制中介变量(M)后,自变量(X)对因变量(Y)的影响应该减弱或消失。通过检验这种变化,可以确定中介效应的存在和程度。
二、数据准备
首先,我们从公开数据集中获取一组关于学生成绩、学习时间和学习兴趣的数据。假设数据文件名为“student_data.dta”,包含三个变量:“study_time”(自变量,代表学生每周的学习时间)、“interest_level”(中介变量,代表学生的学习兴趣水平)和“exam_score”(因变量,代表学生的考试成绩)。
三、数据导入
使用以下命令导入数据:
use "student_data.dta", clear
四、描述性统计
在进行分析之前,先对数据进行描述性统计,了解变量的基本情况:
summarize study_time interest_level exam_score
这将输出每个变量的均值、标准差、最小值和最大值等统计信息。
五、回归分析
第一步回归:
自变量(study_time)对因变量(exam_score)的回归
reg exam_score study_time
解释:这个命令用于估计自变量“study_time”对因变量“exam_score”的直接效应。
运行结果:会输出回归系数、标准误、t 值、p 值等信息。
第二步回归:
自变量(study_time)对中介变量(interest_level)的回归
reg interest_level study_time
解释:此步骤用于考察自变量“study_time”对中介变量“interest_level”的影响。
运行结果:同样会给出回归系数等相关统计量。
第三步回归:
同时纳入自变量(study_time)和中介变量(interest_level)对因变量(exam_score)的回归
reg exam_score study_time interest_level
解释:通过这个回归方程,我们可以判断中介效应是否存在。
运行结果:输出回归结果,用于后续的中介效应判断。
六、中介效应的检验
Sobel 检验
安装所需的命令:
ssc install sgmediation
执行 Sobel 检验:
sgmediation exam_score, mv(interest_level) iv(study_time)
解释:这个命令会基于上述回归结果进行 Sobel 检验,判断中介效应是否显著。
运行结果:会输出 Sobel 检验的统计量和 p 值。
Bootstrap 检验
mediation exam_score study_time, mediator(interest_level) bootstrap reps(1000)
解释:这里使用 Bootstrap 方法重复抽样 1000 次来检验中介效应,相对于 Sobel 检验,Bootstrap 检验更为稳健。
运行结果:输出包括中介效应的估计值、置信区间和 p 值等。
七、结果解读
- 如果 Sobel 检验或 Bootstrap 检验的 p 值小于给定的显著性水平(通常为 0.05),则可以认为中介效应显著。
- 观察第三步回归中自变量“study_time”的系数,如果系数变小且仍然显著,说明存在部分中介效应;如果系数变得不显著,说明存在完全中介效应。
八、示例结果及解释
我们得到的结果如下:
Sobel 检验的 p 值为 0.02,小于 0.05,表明中介效应显著。
第三步回归中,自变量“study_time”的系数从第一步回归中的 0.8 变为 0.5,且仍然显著。这说明存在部分中介效应,即学生每周的学习时间一部分通过学习兴趣水平影响考试成绩,另一部分直接影响考试成绩。
九、代码附录
以下是完整的 Stata 代码示例,包括数据生成、回归分析和中介效应检验:
// 生成示例数据
clear
set obs 1000
gen study_time = runiformint(10, 50)
gen error1 = rnormal()
gen error2 = rnormal()
gen interest_level = 0.5 * study_time + error1
gen exam_score = 0.3 * study_time + 0.4 * interest_level + error2
// 保存数据
save "student_data.dta", replace
// 导入数据
use "student_data.dta", clear
// 描述性统计
summarize study_time interest_level exam_score
// 回归分析
reg exam_score study_time
reg interest_level study_time
reg exam_score study_time interest_level
// Sobel 检验
ssc install sgmediation
sgmediation exam_score, mv(interest_level) iv(study_time)
// Bootstrap 检验
mediation exam_score study_time, mediator(interest_level) bootstrap reps(1000)