### 导入数据处理包library(tidyverse)### 导入数据library(wooldridge)### 导入相关检验命令符包library(lmtest)library(car)### 导入数据输出包library(stargazer)### 添加year dummy进行回归lm_fertility 2) + black + east + northcen + west + farm + othrural + town + smcity + y74 + y76 + y78 + y80 + y82 + y84, data = fertil1)summary(lm_fertility)### 在R语言中我们一般把dummy当作factor进行处理### 我们可以把数据里的年份变量设置为dummy然后对year这一个变量进行回归### 效果和上面的单独设置year dummy是一样的### 创建新的表格 将year设置为factorfer % mutate(year = factor(year)) ### 对year进行回归lm_fer 2) + black + east + northcen + west + farm + othrural + town + smcity + year, data = fer)summary(lm_fer)
当我们控制住其他可能影响生育率的变量后,根据结果我们可以发现,和1972年相比,生育率在1982年和1984年急剧下降,根据t statistic和p-value我们也可发现结果是显著的。在生育率这个例子中,我们假设了自变量在不同时间点对因变量的局部效应是恒定的,比如在我们的回归结果中,自变量 educ受教育年限的系数值约为-0.128,即当其他变量不变时,100位多接受一年教育的女性平均会少生大概12个孩子,这个效果在不同的年份都是一样的。但我们都知道,这是非常不符合实际情况的,比如随着教育的普及,多接受一年教育对薪酬的局部效应在1950年和在1990年肯定是不同的。在之前的第七章我们已经提到过,我们可以添加year dummy与自变量的交互项来允许改变不同时间节点的自变量的系数值。课本中的eg 13.2: Changes in the Return to Education and the Gender Wage Gap研究了1978年和1985年这两个不同年份的关于薪酬的横截面数据。我们在回归中加入了year dummy和year dummy与自变量 educ以及 gender的交互项,如果year dummy和交互项的系数都是显著的,也即表明薪酬在1978年和1985年这两个不同时间节点有着不同的分布。使用数据 cps78_85,下面为R语言代码:### 对year进行回归lm_cps 2) + union + female + female:y85, data = cps78_85)summary(lm_cps)
根据回归结果我们可知,受教育水平在1978年的局部效应约为0.747,在2018年局部效应就变为0.747 + 0.185 = 0.933左右。 二、Difference-in-Difference独立混合横截面数据在分析事件或政策的影响方面有着非常大的作用,其中最有名的当属David Card和Alan B. Krueger在1994年发表于AER的论文Minimum Wage and Employment: A Case Study of the Fast-Food Industry in New Jersey and Pennsylvania,这篇论文使用了双重差分法 (Difference-in-Difference) 研究了新泽西州新的最低工资标准政策对该地区的就业率的影响。一般来说,因果关系是很难判定的。以这篇论文为例,影响就业率的因素有很多,尤其是涉及到时间跨度。可能在政策施行之后恰好赶上经济上升期,就业率也随之上升,那我们就无法得知就业率的变化是否全部或部分由于新的最低工资标准政策导致的。双重差分法为了解决这个问题,引入了一个比较对象。比如要研究旧金山地区的犯罪率,首先找一个各方面条件都与旧金山接近的一个地区作为对照组,即如果不考虑任何人为干预的因素,两个地区的犯罪率随着时间的自然推移变化是基本一致的。首先比较旧金山地区实施某种政策前后犯罪率的变化,我们得到第一重差分T + E,这里的E表示因为政策实施而受到影响的部分,一般我们称为treatment effect,T表示其他所有影响犯罪率的变量因素。而作为对照组的Waco地区,没有实施相应的政策,所以在两个时间点前后的第一重差分只有T,此时将得到的两个第一重差分再进行差分,即可得到我们想要的政策的局部效应。
下图进一步说明双重差分法,红色线代表我们的实验组即上文中提到的旧金山,黑色线代表我们的对照组,即Waco地区。从图可知,如果两个地区均不施加任何政策影响,则随着时间推移两地的犯罪率变化趋势是一致的 (旧金山是红色实线加虚线)。在x = 4这个时间节点,我们对旧金山施加处理,则其犯罪率走势红色虚线变为红色实线,两地的差异变为AC。如果没有对旧金山施加处理,则之后的时间节点两者的差异应该为BC,由此可看出AB段即为可能的政策影响效果E。换言之,在无政策实施的情况下,从x = 4这个时间节点到x = 6,两地的犯罪率变化的幅度应该是基本一致的,即F - B = D - C,对实验组施加处理以后,实验组变为F - A,对照组依旧为D - C,所以受处理影响的部分即为(D - C) - (F - A) = (F - B) - (F - A) = A - B。 如果用计量回归方程来表示,即为:
这里的d2和dT均为dummy variable,d2 = 1即表示在实验之后,dT = 1即表示属于实验组。当dT = 1, d2 = 0时:
当dT = 1, d2 = 1时:
通过差分可获得实验组试验前后的自变量的变化:
当dT = 0, d2 = 0时:
当dT = 0, d2 = 1时:
通过差分可获得对照组试验前后的自变量的变化:
通过双重差分获得treatment effect:
我们在差分的过程中把可能影响因变量的因素都消除掉了,最后剩下的系数即为施加处理后的效应。我们以书中的eg 13.3: Effect of a Garbage Incinerator's Location on Housing Prices为例,所使用的数据为 kielmc,这个案例探究了在住宅区附近修建垃圾焚烧厂对房价的影响。直觉上看,在住宅周边修建垃圾焚烧厂肯定会使房价下跌,但是影响房价的因素有很多,比如房子已经建成的时间、房子的大小等等,我们希望通过双重差分法来消除其他因素对房价的影响,确定垃圾焚烧厂与房价之间的因果关系。我们在回归中使用了两个dummy,y81 = 1时表示时间点在1981年即修建垃圾焚烧厂之后,nearinc = 1表示房子距离垃圾焚烧厂较近。
### 未添加控制变量 仅有year dummy和lm_price1 ### 添加age变量 即房子已经建成多久lm_price2 2), data = kielmc)### 继续添加新的控制变量 包括大小、房间数量等lm_price3 2) + intst + land + area + rooms + baths, data = kielmc)### 输出表格 在LaTex中显示### 表格中只显示了dummy的系数值和截距### 表格中最后一行Other controls是我在LaTex代码中手动添加的stargazer(lm_price1, lm_price2, lm_price3, omit = c("age", "I(age^2)", "intst", "land", "area", "rooms", "baths"))
这里我们关注的就是y81:nearinc这个变量的系数,也即treatment effect,我们可以发现添加控制变量后treatment effect的系数值变化很大,并且结果由不显著变为显著。对比这三个回归,很明显第三个是最好的,我们添加进去的变量基本包括了影响房价的各种因素,房价很大程度上是由这些变量决定的,也因此我们的dummy变量nearinc的系数值相较之下显得非常小。