交互项是实证分析中最常用到的探索性分析之一。它即可以用于调节效应分析,即考察处理效应如何随着对象特征和现实条件的不同而产出差异 (江艇,2022);也可以在一定的逻辑推理下,间接性的考察解释变量对被解释变量的传导机制。当然,还有用的最多的——凑篇幅和水字数。
但是,即便通过简单的 '同号为正、异号为负' 即可判断交互项的大致影响,但有时候依然会因大脑宕机掉进沟里。此外,单纯分析显著性和正负方向,似乎也有点单薄,能凑的字数也有限。这个时候,画图就排上用场了。
我们以 Stata 自带的车辆数据为例,分析车辆长度对价格的影响是否会因车辆来源 (是否为进口) 而存在差异。在代码中,这其实就是对车辆来源 foreign 和 长度 length 进行一个见到的交互项:
sysuse auto, clear
reg price i.foreign##c.length
结果如下,交互项系数在 10% 的统计水平上显著为正,说明外国车的价格对长度更加敏感。
----------------------------------------------------------------------------------
price | Coefficient Std. err. t P>|t| [95% conf. interval]
-----------------+----------------------------------------------------------------
foreign |
Foreign | -1.10e+04 7362.054 -1.491 0.140 -2.57e+04 3707.282
length | 77.393 16.985 4.557 0.000 43.518 111.269
|
foreign#c.length |
Foreign | 79.642 42.336 1.881 0.064 -4.793 164.078
|
_cons | -9107.104 3348.327 -2.720 0.008 -1.58e+04 -2429.076
----------------------------------------------------------------------------------
细心的筒子会关注到,length 的系数显著为正。这个解释其实之前在一篇推文中说过:在交互项模型中,一次项系数的方向与显著性重要吗?。其实就是 Foreign = 0 时,汽车长度对价格的影响。我们也可以验证一下,将样本限定为国产车,可以发现系数是一样的,都是 77.393,标准误和显著性有所差异,应该是样本损失造成的。
. reg price length if foreign == 0
Source | SS df MS Number of obs = 52
-------------+---------------------------------- F(1, 50) = 16.75
Model | 122754080 1 122754080 Prob > F = 0.0002
Residual | 366440721 50 7328814.42 R-squared = 0.2509
-------------+---------------------------------- Adj R-squared = 0.2359
Total | 489194801 51 9592054.92 Root MSE = 2707.2
------------------------------------------------------------------------------
price | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
length | 77.393 18.910 4.093 0.000 39.411 115.376
_cons | -9107.104 3727.954 -2.443 0.018 -1.66e+04 -1619.289
------------------------------------------------------------------------------
然而,这就完了吗?其实还可以对交互项的含义做进一步的拓展。我们来问一个简单的问题:产地会影响长度对价格的敏感性,那这种敏感性对所有长度的车辆都存在吗?
我们用 marginsplot
绘制交互项的边际效应,以回答这个问题。代码如下:
reg price i.foreign##c.length
margins r.foreign, at(length = (140(10)230))
#de ;
marginsplot,
title('')
xtitle('车辆长度', size(*.85))
ytitle('边际效应', size(*.85))
ciopts(color(gs0) recast(rcap))
plotopts(
msize(*.5)
color(gs0)
recast(scatter)
xlabel(, tposition(inside) labsize(*.85) grid)
ylabel(, tposition(inside) angle(0) labsize(*.85) grid)
yline(-5000(2500)15000, lstyle(grid) lwidth(thin) lcolor('235 235 235'))
yline(0, lp(dash))
graphregion(fcolor(gs16) lcolor(gs16))
plotregion(lcolor(gs16) lwidth(*0.9)));
#de cr
下图展示了边际效应图,可以发现只有当车辆长度超过 160 的时候,产地才会显著影响长度对价格的敏感性,而当车辆低于 160 时,这种影响是不显著的。显然,这一结论可以进一步丰富文章的实证结果,引出更具针对性的政策建议。
最后,还有一些需要注意的细节,代码中是将车辆长度限定在 140-230,即 at(length = (140(10)230)
。这一区间是根据描述统计结果确定的,因为 length 的最值即为 142 和 233,分析超出或低于样本数据的边际效应没有意义。
. sum length
Variable | Obs Mean Std. dev. Min Max
-------------+---------------------------------------------------------
length | 74 187.9324 22.26634 142 233
科研不易,祝大家且行且珍惜。
联系客服