查看原文
其他

工具&方法丨关于交互项的那些事(二):画交互效应图原来如此简单

数据Seminar 2021-06-03

The following article is from 计量经济学及Stata应用 Author 陈强

在上期推文中,我们从边际效应(求偏导数)的角度考察了交互效应的经济含义。这隐含地假设了,在交互项的两个变量中,至少有一个为连续变量,故可以求偏导数。显然,如果两个变量都是离散变量(比如虚拟变量),则此法不通,因为无法求导数。

但离散变量的交互效应也有其方便之处,可以将相应的回归方程用分段函数来表示。比如,考虑如下包含交互项的模型:

其中, 为虚拟变量,而  为连续变量(如也为离散变量,可类似讨论),则此模型可写为

这意味着,如果根据虚拟变量  取值为0或1将全样本分为两个子样本,则这两个子样本所对应的回归方程并不相同(截距项与斜率均可不同)。对于分段函数,很容易用画图的方法来形象地展示,即所谓“交互效应图”(interaction plot)。

下面以Stata手册(Stata Manual)所提供的案例进行示范。我们使用的数据集为nhanes2,来自Second National Health and Nutrition Examination Survey (NHANES II),包含10,351名美国人在1976-1980间的健康数据。

被解释变量为“bpsystol”(systolic blood pressure,收缩压),而解释变量为“agegrp”(age group,年龄组)与“sex”(性别)。其中,agegrp为离散变量(分类变量),而sex为虚拟变量。

首先,载入数据集,并考察agegrp与sex的分布。

. use http://www.stata-press.com/data/r15/nhanes2

. tab agegrp sex

从上表可知,变量sex的参照组为男性(1=male,即sex=0),而另一组为女性(2=female,即sex=1)。变量agegrp则分为六类,分别对应于年龄在20-29,30-39,40-49,40-59,60-69,以及70岁以上的个体。

如果要手工书写此回归方程,则需首先根据agegrp定义五个虚拟变量(其中的某一类,比如20-29年龄组可作为参照类,无须放入回归方程),然后手工生成一系列与sex的交互项,此过程有些繁琐。Stata很贴心地提供了一个命令,即可轻松搞定包含交互项的回归:

. regress bpsystol agegrp##sex

其中,“agegrp##sex”表示既包含根据agegrp所生成的虚拟变量与sex虚拟变量(即所谓“主效应”,main effects,就是一次项),也包含agegrp系列的虚拟变量与sex的交叉项(即一系列的交互项)。

从上表可知,所有交互效应(五个交互项)均在1%水平上显著为正,且此交互效应随着年龄组而上升。然而,女性虚拟变量本身(Female)则显著为负。

更直观地,我们可通过画“交互效应图”(interaction plot)来考察。为此,首先计算在agegrp与sex的不同组合下(共有6x2 = 12种可能情形),被解释变量的平均拟合值,即所谓“predictive margin”(拟合边际)。

. margins agegrp#sex

其中,“agegrp#sex”表示将“agegrp”与“sex”相乘。

其中,第1行(20-29#Male)的第1列Margin值表示,对于样本中20-29岁的男性子样本,其被解释变量bpsystol的平均拟合值为123.8862;以此类推。显然,此“拟合边际”(子样本的平均拟合值)为样本数据的函数,故也是随机变量,上表中还给出了使用Delta Method计算的标准误,以及相应的t统计量、p值与95%置信区间。

下面将上表的拟合边际及其标准误用画图表示:

. marginsplot


其中,横轴为年龄组,蓝点线表示男性,红点线表示女性,而纵轴为相应子样本的拟合边际,即“线性预测”(Linear Prediction)。

如果性别对于“年龄组对收缩压的作用”并无影响,则上图中的蓝线与红线应相互平行;但蓝线与红线实际上交叉了,故直观上可判断存在交互效应。

进一步,对于最年轻的20-29岁年龄组,男性的平均血压高于女性,且二者的95%置信区间并无交叠,故此年龄组的男性平均血压“似乎”显著地高于女性。然而,对于最高龄的70岁以上组,女性平均血压“似乎”反而高于男性。这里之所以强调“似乎”,因为此结论并不严格。严格的统计推断需要根据“男性平均血压减去女性平均血压之差”来构建置信区间,而上述置信区间分别只是男性平均血压与女性平均血压的置信区间。

为了进一步考察两性之间的平均血压是否存在显著差异,可使用以下命令来计算在给定年龄组,当性别从“男性”(sex=0)变为“女性”(sex=1)时,对于血压的“平均边际效应”(average marginal effects):

. margins agegrp, dydx(sex)

直观上,此命令表示,在给定agegrp的情况下,把被解释变量对sex求导数(dydx)。但因为sex为虚拟变量,故其实表示当sex从0变为1时被解释变量bpsystol的平均变化(discrete change from the base level)。这相当于计量经济学中的“平均边际效应”(average marginal effects),因为在存在交互项的情况下,边际效应并非常数,而随着样本点而变。

其中,第1部分的“1.sex”表示作为基准的男性,故不显示结果(base outcome)。而第2部分的“2.sex”则表示女性,其第1行(20-29)的第1列dy/dx值表示,相对于样本中20-29岁的男性子样本,同年龄组的女性子样本的平均拟合值更低12.60132;以此类推。

上表也提供根据Delta Method计算的标准误,以及相应的t统计量、p值与95%置信区间。特别地,对于50-59岁年龄组,男性与女性子样本的平均血压并无显著差异(p值为0.495)。

将上表的结果更直观地画图:

. marginsplot, yline(0)

其中,选择项“yline(0)”表示在纵轴为0的位置画一条水平线。

从上图可知,对于20-29,30-39,40-49岁组,女性平均血压均显著低于同年龄组的男性平均血压;对于50-59岁组,二者无显著差异(因为95%置信区间包含0);而对于60-69岁与70岁以上组,此关系反转,女性平均血压反而显著高于同年龄组的男性平均血压。

为何出现此反转?前面的回归结果告诉我们,所有交互效应均显著为正,是否与此矛盾呢?其实,上图的拟合边际之变化考察的是总效应,也包含了女性虚拟变量本身的显著负效应。正是因为交互效应显著为正,且随着年龄组不断增大,才使得女性的平均血压从年轻组的显著低于男性,而逐渐反转为老年组的显著高于男性。

关于交互项的进一步讨论,比如交互效应的副作用(多重共线性等),使用交互项的注意事项,非线性模型中的交互项等重要话题,将在下期推文中继续介绍。



参考文献

陈强,《高级计量经济学及Stata应用》,第2版,高等教育出版社,2014年
陈强,《计量经济学及Stata应用》,高等教育出版社,2015年(配套教学视频,可在网易云课堂学习)









►往期推荐

回复【Python】👉简单有用易上手

回复【学术前沿】👉机器学习丨大数据

回复【数据资源】👉公开数据

回复【可视化】👉你心心念念的数据呈现

回复【老姚专栏】👉老姚趣谈值得一看


►一周热文

工具 & 方法 | 推荐收藏!备忘清单大荟萃之Python

数据呈现丨Python绘制桑基图,流量分析不用愁

关于交互项的那些事(一):什么是交互项?

数据呈现 | 简单易学!用Python最基础的绘图包来做动图

工具&方法 | 计量软件大搜罗,哪款是你的Mr.Right?








数据Seminar

这里是大数据、分析技术与学术研究的三叉路口


作者:陈强出处:计量经济学及Stata应用推荐:杨奇明编辑:青酱







    欢迎扫描👇二维码添加关注    


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存