调节解释 您所在的位置:网站首页 stata回归结果各项含义 调节解释

调节解释

2023-03-12 09:42| 来源: 网络整理| 查看: 265

调节笔记

正常,调节是z取0时,x对Y的影响

中心化后

我们需要进行中心化处理,对 、分别进行中心化,中心化处理之后的统计含义均可以解释为取样本均值的情况下,变动1单位对的影响,并且有效的解决了可能存在的多重共线性问题。

一、调节效应的涵义

调节(moderation)是社会科学研究中重要的方法学概念,是研究者探索多个变量之间关系的重要手段。如果因变量和自变量的关系(回归斜率的大小和方向)随第三个变量的变化而变化,则称在和之间起调节作用,此时称为调节变量。

调节效应在实现方式上,又分为交互项方式和分组回归方式,由于篇幅限制本文只介绍用交互项实现调节效应的结果解读与争议讨论,用分组回归方式实现调节效应的结果解读与争议讨论将在下篇推文介绍。

二、实现方式——交互项

在主回归模型中加入调节变量、自变量与调节变量的交互项实现调节效应。

变量设定:为因变量,为自变量,为调节变量

主回归模型调节效应模型

为什么加入交互项就会反映调节效应呢?我们对自变量求导可得对的边际效应公式:

可以看到,对的边际效应(回归斜率的大小和方向)不再是常数,而会随着的取值发生变化,因此加入交互项可以反映调节效应,并且调节的方向受到系数正负的影响。

三、结果解读

(1)当显著为正、显著为正,表明调节变量能够正向调节对的正向影响。

(2)当显著为正、显著为负,表明调节变量能够负向调节对的正向影响。

(3)当显著为负、显著为正,表明调节变量能够负向调节对的负向影响,即随着调节变量的增大,对的负向逐渐趋于减弱。

(4)当显著为负、显著为负,表明调节变量能够正向调节对的负向影响,即随着调节变量的增大,对的负向逐渐趋于增强。

容易搞混的同学请记住口诀符号相同(正正、负负)会增强主效应,符号不同(正负、负正)会减弱主效应。

四、争议争议1

需不需要对交互项中的自变量和调节变量进行中心化处理?期刊中有两种做法。

做法1

因为加入交互项之后自变量系数的统计含义发生改变,且可能会出现多重共线性问题,因此,为了方便对自变量系数进行统计解释,并且排除多重共线性问题的影响,需要对自变量和调节变量进行中心化处理。

(1)加入交互项后自变量系数的统计含义发生改变:

求导可得:

系数表示取样本均值的情况下, 变动1单位对的影响。

求导可得:

系数表示取0的情况下,变动1单位对的影响(在实际情况中取0很少出现)。

因此加入交互项之后的经济含义发生了变化。

(2)交互项既具有的信息,又具有的信息,因此交互项与 、可能存在多重共线性,使回归结果产生偏误。

为解决以上两个问题,我们需要进行中心化处理,对 、分别进行中心化,中心化处理之后的统计含义均可以解释为取样本均值的情况下,变动1单位对的影响,并且有效的解决了可能存在的多重共线性问题。(数学公式不再赘述,具体可参考文献:方杰,温忠麟,梁东梅,李霓霓.基于多元回归的调节效应分析[J].心理科学,2015)

Stata中实现中心化示例:// TobinQ为因变量,SA为自变量,Size为调节变量 center SA Size gen inter= c_SA*c_Size reg TQ SA Size inter 文献示例:

李成友,孙涛,王硕.人口结构红利、财政支出偏向与中国城乡收入差距[J].经济学动态,2021(01):105-124.

做法2

期刊中较多文献,并没有对需不需要对对自变量和调节变量进行中心化处理进行讨论。

争议2

在调节效应模型中需不需要关注自变量的显著性和符号?

很多同学会遇到在调节效应模型中交互项显著,但自变量的系数不再显著,甚至发生符号的变化,此时是否存在调节效应的问题。

因为在调节效应模型中:

求导可得:

只要显著,即可说明对的边际效应会受到的显著影响,而无需关注的显著性和符号。

文献示例

沈煜,孙文凯.污染信息公开如何影响健康消费决策[J].世界经济,2020,43(07):98-121.

主回归:

调节效应:

可以看到,作者只关注了交互项的显著性,无论调节效应模型中自变量的显著性或者系数符号如何,调节效应均是成立的。

四、讨论

本文认为论文中做调节效应分析的可行逻辑为:

1:对自变量和调节变量进行中心化处理(注意:虚拟变量为离散型变量不需要进行中心化处理),可以使自变量的系数易于解释,并且排除了多重共线性的影响。

2:进行以上处理之后,在调节效应模型中只需关注交互项的显著性和符号,不需要关注自变量的显著性和符号。

对于常见的实证回归表格,由于其一般未汇报的相关信息,研究者往往难以通过实证表格所汇报的信息计算当取特定值时,对的边际效应的标准误。因此,Brambor et al. (2006) 建议,研究者可通过绘制如下图形的方式,直观展示不同取值情况下,对的边际效应及其显著性。

在建立模型时,我们往往会根据一定的经济理论加入一些交乘项,在 Stata 里,用 margins 命令可以直接得到相关变量的边际效应,进而可以使用 marginsplot 图示边际效应,详情参见 [Stata:边际效应分析]。如果希望做更为深入的分析,并采用更为酷炫的图形展示,则可以使用外部命令 interflex,详情参见 [Stata:交叉项\交乘项该这么分析!]。至于有关交乘项更一般化的介绍,则可以参考 [Stata:交乘项该如何使用?] 和 [加入交乘项后符号变了!?]。

然而,「百闻不如一见,百见不如一干」。若能亲手计算一次边际效应,必能大大加深对齐背后原理的理解,在论文写作过程中也能够自信地应对各种奇葩结果的解释。

为此,本文采用 庖丁解牛 的方式,介绍一下如何手动计算交乘项的边际效应。在下一篇推文中,我们将进一步对包含三个交乘项的情形进行拆解。

1. 边际效应计算原理1.1 两个变量的交乘项

在线性模型中,假设 X 和 Y 的关系会受到第三者 Z (通常被形象地称为 调节变量) 的影响,模型的基本形式如下:

Y=\beta_{0}+\beta_{1} X+\beta_{2} Z+\beta_{3} X Z + u

所谓 X 的边际效应 是指 X 每增加 1 单位时 Y 的变化,即:

\frac{\partial Y}{\partial X}=\beta_{1}+\beta_{3} Z

由上式可以看出, X 的边际效应不再是常数,它会随着 Z 的变化而变化。因此,在讨论 X 对 Y 的边际影响时,我们必须考虑 Z 的取值。

例如,假设 \hat{\beta}{1}=2 , \hat{\beta}{3}=0.5 ,则当 Z=1 时,「X 对 Y 的边际影响」为:

\frac{\partial Y}{\partial X}|{ Z=1}=\beta{1}+\beta_{3} Z = 2+0.5\times 1 = 2.5

多数情况下,我们会更多地关注当 Z=\bar{Z} (样本均值) 或特定分位数 (如第 25,50, 75 百分位数) 时, X 对 Y 的边际效应。

在该模型中,X 对 Y 的边际效应的标准误,即 {\partial Y}/{\partial X} 的标准误也与 Z 的取值有关:

\operatorname{Var}({\partial Y}/{\partial X}) = \sqrt{\operatorname{Var}\left(\beta_{1}\right)+Z^{2} \operatorname{Var}\left(\beta_{3}\right)+2 Z \operatorname{Cov}\left(\beta_{1}, \beta_{3}\right)}

利用模型估计得到的 \beta_{1} 的方差、 \beta_{3} 的方差、 \beta_{1} 和 \beta_{3} 的协方差以及给定的 Z 值,可以得到 X 的标准误。计算标准误有助于在绘制边际效应图时附加上置信区间。

1.2 三个变量的交乘项

对于含有三个变量交乘项的模型(如下模型),也可以用上述原理来手动计算变量的边际效应。 \begin{aligned} Y=& \beta_{0}+\beta_{1} X+\beta_{2} Z+\beta_{3} W \\ &+\beta_{4} X Z+\beta_{5} X W+\beta_{6} Z W \\ &+\beta_{7} X Z W+u \end{aligned}

该模型中 X 的边际效应和 ∂y/∂x 的方差的表达式如下所示:

\begin{aligned} {\partial Y}/{\partial X}=\beta_{1}+\beta_{4} Z+\beta_{5} W +\beta_{7} Z W \end{aligned}

\begin{aligned} \operatorname{Var}(\partial Y / \partial X) &=\operatorname{Var}\left(\beta_{1}\right)+Z^{2} \operatorname{Var}\left(\beta_{4}\right)+W^{2} 2 \operatorname{Var}\left(\beta_{5}\right)+Z^{2} W^{2} \operatorname{Var}\left(\beta_{7}\right) \\ &+2 Z \operatorname{cov}\left(\beta_{1} \beta_{4}\right)+2 W \operatorname{cov}\left(\beta_{1} \beta_{5}\right)+2 Z W \operatorname{cov}\left(\beta_{1} \beta_{7}\right) \\ &+2 Z W \operatorname{cov}\left(\beta_{4} \beta_{5}\right)+2 W Z^{2} \operatorname{cov}\left(\beta_{4} \beta_{7}\right)+2 Z W^{2} \operatorname{cov}\left(\beta_{5} \beta_{7}\right) \end{aligned}

特别地,一种特殊的情况是,在三个变量中有一个是 0-1 变量,比如下面模型中的 $D$ 变量。

Y=\beta_{0}+\beta_{1} X+\beta_{2} W+\beta_{3} D+\beta_{4} XW+\beta_{5} XD+\beta_{6} WD+\beta_{7} XWD+u

在这种情况下,我们可以根据 D 将样本分成两个样本组,即 G1 组 (D=1) 和 G2 组 (D=0) ,使每个组中只包含一个交乘项,然后对两个样本组分别进行回归分析并求得 X 的边际效应。

Y=\beta_{0}+\beta_{1g} X+\beta_{2g} W+\beta_{3g} XW+u, \ \ g=1,2

当我们把该模型拆成两个含有两个交乘项的模型时,变量 X 的边际效应和 {\partial Y}/{\partial X} 的标准误的表达式与含有两个变量交乘项的模型一致,此处不再赘述。

连享会 最新专题 直播2. Stata 实现

下面我们使用 Stata 自带的 nlsw88.dta 数据为例,手动计算交乘项的边际效应。

2.1 两个变量的交乘项

wage=\beta_{0}+\beta_{1} grade+\beta_{2} ttl +\beta_{3} grade\times ttl+u

其中, wage 表示个体的工资水平, grade 表示已完成受教育的年限, ttl 表示个体的工作时间,而 grade\times ttl 是 grade 与 ttl 的乘积。

计算边际效应

在上述模型表示,已完成受教育年限会影响工资水平,而个体的工作经验又充当了调节变量,我们要计算的是已完成受教育年限对工资的边际效应。

首先,对上述模型进行估计。

sysuse "nlsw88.dta", clear gen grade_x_ttl = grade*ttl reg wage grade ttl grade_x_ttl Source | SS df MS Number of obs = 2,244 -------------+---------------------------------- F(3, 2240) = 133.83 Model | 11301.2662 3 3767.08872 Prob > F = 0.0000 Residual | 63053.0643 2,240 28.1486894 R-squared = 0.1520 -------------+---------------------------------- Adj R-squared = 0.1509 Total | 74354.3305 2,243 33.1495009 Root MSE = 5.3055 ------------------------------------------------------------------------------ wage | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- grade | 0.252 0.132 1.91 0.056 -0.006 0.509 ttl_exp | -0.144 0.128 -1.12 0.264 -0.396 0.108 grade_x_ttl | 0.032 0.010 3.21 0.001 0.013 0.052 _cons | 0.934 1.658 0.56 0.573 -2.317 4.184 ------------------------------------------------------------------------------

模型中变量的系数,以及系数的方差协方差存储分别在矩阵 b 和矩阵 V 中。

. ereturn list // 列示内存中的返回值 matrices: e(b) : 1 x 4 e(V) : 4 x 4 . matrix list e(V) // 呈现系数的方差-协方差矩阵 symmetric e(V)[4,4] grade ttl_exp grade_x_ttl _cons grade .0173019 ttl_exp .01534545 .01651049 grade_x_ttl -.00123247 -.00125844 .00009963 _cons -.21378964 -.19844023 .01533119 2.7477949 . dis %4.3f sqrt(.0173019) // 变量 grade 的系数标准误 0.132

然后,从矩阵中提取我们需要的 β1、β3、var(β1)、var(β3)、cov(β1 β3),分别赋给标量b1、b3、varb1、varb3、covb1b3。

matrix b = e(b) matrix V = e(V) scalar b1 = b[1,1] scalar b3 = b[1,3] scalar varb1 = V[1,1] scalar varb3 = V[3,3] scalar covb1b3= V[1,3]

最后,计算边际效应。如果我们要计算在 ttl 的均值下 grade 的边际效应,我们需要找到 ttl 的均值,然后带入到边际效应的计算公式里即可。当然,我们也可以带入其他的 ttl 值来得到 grade 的边际效应。

sum ttl scalar ttl_mean = r(mean) dis "Margins:" b1+b3*ttl_mean dis "Std.Err:" sqrt(varb1+varb3*(ttl_mean^2)+2*covb1b3*ttl_mean) Margins:.65359238 Std.Err:.04536131绘制边际效应图

为了绘制 grade 的边际效应图,我们需要知道 grade 的边际效应如何随着 ttl 变化。

首先,我们需要得到一系列连续变化的 ttl 值,在数据中,ttl 的最小值是 0.16,最大值是 28.9,用以下命令得到以 0.01 为间隔从 0.16 变化到 28.9 的序列。

set obs 2875 generate MVZ=(_n+15)/100

然后,分别计算每一个 MVZ 上 X 的边际效应 conbx、标准误 consx、5%置信区间的上界 upperx和下界 lowerx。

gen conbx=b1+b3*MVZ gen consx=sqrt(varb1+varb3*(MVZ^2)+2*covb1b3*MVZ) gen ax=1.96*consx gen upperx=conbx+ax gen lowerx=conbx-ax

为了图形的美观,我们构建了一些辅助值。这些辅助值产生的效果可以参见后文绘制的图形。

gen where=-0.045 gen pipe = "|" gen yline=0 graph twoway hist ttl, width(0.5) percent color(gs14) yaxis(2) /// || scatter where ttl , plotr(m(b 4)) ms(none) mlabcolor(gs5) mlabel(pipe) mlabpos(6) legend(off) /// || line conbx MVZ,clpattern(solid) clwidth(medium) clcolor(black) yaxis(1) /// || line upperx MVZ,clpattern(dash) clwidth(thin) clcolor(black) /// || line lowerx MVZ,clpattern(dash) clwidth(thin) clcolor(black) /// || line yline MVZ,clpattern(solid) clwidth(thin) clcolor(black) /// || , /// xlabel( 0 5 10 15 20 25 30, nogrid labsize(2)) /// ylabel(-.2 0 .2 .4 .6 0.8 1 1.2 1.4 1.6 , axis(1) nogrid labsize(2)) /// ylabel(0 1 2 3 4 5, axis(2) nogrid labsize(2)) /// yscale(noline alt) /// yscale(noline alt axis(2)) /// xscale(noline) /// legend(off) /// xtitle("" , size(2.5)) /// ytitle("" , axis(2) size(2.5)) /// xsca(titlegap(2)) /// ysca(titlegap(2)) /// scheme(s2mono) graphregion(fcolor(white) ilcolor(white) lcolor(white))

(2)含有三个变量的交乘项

\begin{aligned} w a g e=& \beta_{0}+\beta_{1} g r a d e+\beta_{2} t t l+\beta_{3} \text {union} \\ &+\beta_{4} g r a d e \times t t l+\beta_{5} g r a d e \times u n i o n+\beta_{6} t t l \times u n i o n \\ &+\beta_{7} g r a d e \times t t l \times u n i o n+u \end{aligned}

其中,wagegradettlgrade_x_ttl 的含义同模型一。此外,该模型中加入了 union 变量,该变量表示该妇女是否为工会成员,分别用 1 和 0 表示。并加入 了 gradeunionttlunion 的交乘项 grade_unionttl_union,以及 gradettlunion 三个变量的交乘项 grade_x_ttl_union

在该模型中,union 是 0-1 变量,我们根据 union 将模型二改写成如下形式:

wage=\beta_{0}+\beta_{1g} grade+\beta_{2g} ttl_{-} \exp +\beta_{3g} grade _{-} ttl+ u

\text { if } union=1, g=1 ; \text { if }union=0, g=2

我们需要分别估计 union=1 和 union=0 时的模型,并分别计算 grade 边际效应。方法同模型一,此处直接附上代码和图形。

**计算边际效应:union==1** reg wage grade ttl grade_x_ttl if union==1 matrix b_1=e(b) matrix V_1=e(V) scalar b1_1=b_1[1,1] scalar b3_1=b_1[1,3] scalar varb1_1=V_1[1,1] scalar varb3_1=V_1[3,3] scalar covb1b3_1=V_1[1,3] sum ttl if union==1 scalar ttl_mean_1=r(mean) dis "Margins_1:" b1_1+b3_1*ttl_mean_1 dis "Std.Err_1:" sqrt(varb1_1+varb3_1*(ttl_mean_1^2)+2*covb1b3_1*ttl_mean_1) gen conbx_1=b1_1+b3_1*MVZ gen consx_1=sqrt(varb1_1+varb3_1*(MVZ^2)+2*covb1b3_1*MVZ) gen ax_1=1.96*consx_1 gen upperx_1=conbx_1+ax_1 gen lowerx_1=conbx_1-ax_1 **计算边际效应:union==0** reg wage grade ttl grade_x_ttl if union==0 matrix b_0=e(b) matrix V_0=e(V) scalar b1_0=b_0[1,1] scalar b3_0=b_0[1,3] scalar varb1_0=V_0[1,1] scalar varb3_0=V_0[3,3] scalar covb1b3_0=V_0[1,3] sum ttl if union==0 scalar ttl_mean_0=r(mean) dis "Margins_0:" b1_0+b3_0*ttl_mean_0 dis "Std.Err_0:" sqrt(varb1_0+varb3_0*(ttl_mean_0^2)+2*covb1b3_0*ttl_mean_0) gen conbx_0=b1_0+b3_0*MVZ gen consx_0=sqrt(varb1_0+varb3_0*(MVZ^2)+2*covb1b3_0*MVZ) gen ax_0=1.96*consx_0 gen upperx_0=conbx_0+ax_0 gen lowerx_0=conbx_0-ax_0 **绘图** graph twoway line conbx_1 MVZ, clpattern(solid) clwidth(medium) clcolor(blue) /// || line upperx_1 MVZ, clpattern(dash) clwidth(thin) clcolor(blue) /// || line lowerx_1 MVZ, clpattern(dash) clwidth(thin) clcolor(blue) /// || line conbx_0 MVZ, clpattern(solid) clwidth(medium) clcolor(red) /// || line upperx_0 MVZ, clpattern(dash) clwidth(thin) clcolor(red) /// || line lowerx_0 MVZ, clpattern(dash) clwidth(thin) clcolor(red) /// || line yline MVZ, clpattern(solid) clwidth(thin) clcolor(black) /// || , /// xlabel( 0 5 10 15 20 25 30, nogrid labsize(2)) /// ylabel(-.2 0 .2 .4 .6 0.8 1 1.2 1.4 1.6 , nogrid labsize(2)) /// xscale(noline) /// legend(off) /// xtitle("" , size(2.5)) /// xsca(titlegap(2)) /// ysca(titlegap(2)) /// scheme(s2mono) graphregion(fcolor(white) ilcolor(white) lcolor(white))



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有