温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
徐 婷 (对外经贸大学), xt2544720640@foxmail.com
徐云娇 (厦门大学),jilyo@stu.xmu.edu.cn
目录
许多经济、金融时间序列会随时间有一个增长的趋势,我们称其具有时间趋势 (time trend)。假如在因果推断中我们忽视了两组序列具有相同或者相反的趋势,则很有可能错误地认为其中一个变量的变化是由另一个变量的变化所导致的,导致伪回归问题 (spurious regression problem)。
在回归方程中加入时间趋势项可以避免此问题,常见的时间趋势有线性趋势 (linear time trend)、指数趋势 (exponential trend) 与二次型趋势 (quadratic time trend)。
考虑以
系数
指数趋势是指时间序列每一期的增长率是相同的,具体回归模型可表示如下:
此时再来考察系数
由以上推导可以看出,
另一种比较常用的时间趋势项形式为二次型,与上两种形式不同的是,二次型时间趋势会随时间发生变化,考虑以下回归模型:
此时,假设其他变量不变,我们对 margins
与 marginsplot
命令更直观地进行边际分析。详情请见 Stata因子变量:好用好用! (微信版)。
这里需要注意的是,不是加入越多高次的时间趋势项就越好,因为当我们加入足够多的
时间序列所具有时间趋势是可以定量度量的 (通过
假如一组时间序列是季度或更高频的数据,那么其很可能含有季节性因素 (seasonality),在进行进一步回归分析之前,我们有必要对数据进行季节性调整,可以选择的方法包括:回归法、移动平均比率法以及目前最权威的 X-12 方法 (陈强, 2014)。这里,我们介绍不对数据进行预处理,而引入月度 (或季度) 虚拟变量直接回归的方法:
其中,
如果我们收集的数据为年度数据,那么是否就不需要考虑时间虚拟变量了呢?
答案是否定的,我们有时仍需要引入时间虚拟变量,以反映某些冲击事件对特定年度经济数据的影响,比如 2008 年的全球金融危机导致这一年几乎每个国家的股市出现下跌,再如 2020 年的新冠疫情将导致全球经济萎缩 5.2% (世界银行半年度《全球经济展望》)。
年份虚拟变量设置的方法与季节性虚拟变量设置的方法十分类似,同样也是在回归模型中引入一系列代表特定年份的虚拟变量:
如以上公式所示,
在程序语句上,时间趋势项在 Stata 因子分析中被标示为连续变量,运算符为 c.x
,如 c.year
;而时间虚拟变量在 Stata 因子分析中被标示为类别变量,运算符为 i.x
,如 i.year
。
在经济含义上,时间趋势项通常近似代表了社会中所发生的技术进步;而时间虚拟变量的目的是控制住某些特殊年份造成的影响,例如严重的自然灾害、战争以及金融危机,参见 ResearchGate Question: Is anyone familiar with Time Trends vs Time Dummies?
在适用范围上,时间虚拟变量因其所受约束更少所以应用更加广泛。当把时间趋势项纳入模型时,实际上我们隐含假设了某些单调性 (线性趋势) 或某种函数形式;但是时间虚拟变量则不受此约束,它可以表现为毫无规律的 “锯齿” 形态,也可以表现为时间趋势项那样的函数形式。在某种程度上,时间虚拟变量可以吸收掉所有的特定时间效应,包括时间趋势,参见 Economics Job Market Rumors 。
总结以上,时间趋势项相当于赋予了给定年份一个时间指数(如果样本区间是 2000-2010 年,则时间趋势变量给 2000 年赋值为 1,2001 年赋值为 2 等),它可以解释其他自变量解释不了的因变量的外生增加或下降。时间虚拟变量则是当观测值在指定的月份/季度/年份时等于 1,否则等于 0,它控制住了特定时间的固定效应,比如指定时间段的冲击影响。
当然,假如有明确的需要以及可靠的理论依据,那么模型就可以同时纳入时间趋势项与时间虚拟变量。
下面本文基于数据集 gss.dta 来简要说明在模型中加入时间趋势项和时间虚拟变量的区别和联系。degree 为因变量,表示被调查者的受教育程度;coh 为时间趋势项,用被调查者出生的年份减 1900 后除以10来衡量;year 为时间虚拟变量,用被调查者出生的年份减 1900 后设置的虚拟变量来衡量。
.use "http://fmwww.bc.edu/repec/bocode/g/gss.dta", clear
.gen year = coh*10
在这里,我们在模型一中同时加入时间虚拟变量i.year
、时间趋势项c.coh
,在模型二中仅加入时间虚拟变量。回归后分别求取拟合值 yhat1 和 yhat2 ,通过比较两种拟合值的差异来分析两个模型的异同。
.reg degree i.year c.coh
.predict yhat1
.reg degree i.year
.predict yhat2
.twoway scatter yhat1 yhat2, aspect(1) || ///
function identity = x, range(.5 2.1) ///
ytitle(trend + dummies) ///
xtitle(only dummies)
如下图所示,在包含时间虚拟变量的模型中加入时间趋势项后,并没有改变模型,只是将相同的信息以不同的系数进行区分。在本例中,两种模型得出的拟合结果是完全相同的。所以,如果在模型中同时加入时间虚拟变量和趋势项难以解释,在没有损失信息的情况下,可以去掉时间趋势项。
在这里,我们将时间虚拟变量以每 10 年为单位进行划分,在模型三中同时加入以每 10 年为单位的时间虚拟变量i.decade
、时间趋势项c.coh
,在模型四中仅加入时间趋势项。回归后分别求取拟合值 yhat3 和 yhat4 ,再加上模型二的拟合值 yhat2 ,通过比较三个拟合值的差异来分析模型的异同。
.gen decade = floor(coh)
.reg degree i.decade coh
.predict yhat3
.reg degree coh
.predict yhat4
.sort coh
.by coh : gen byte mark = _n == 1
.twoway line yhat3 coh if mark || ///
line yhat4 coh if mark || ///
scatter yhat2 coh if mark, ///
legend(order( 1 "trend + decade" ///
2 "just trend" ///
3 "annual estimate" ))
如果划分时间虚拟变量的时间跨度更长,例如,时间趋势项按年度划分,而时间虚拟变量按 10 年划分,那么这两个模型实质上是不同的。
本部分以政策评估中常用的双重差分 (Differences in Diffenrences, DID) 模型为例:
其中,
在关于 DID 识别策略的稳健性检验中,我们必须验证干预组与控制组是否满足共同趋势假设,即在控制可观测协变量
那么在共同趋势无法得到满足的情况下,我们该如何寻求解决方案呢?
三重差分 (DDD) 与合成控制法 (SCM) 固然是很好的解决办法,但在某些情况下,我们有更简便的选择,那就是往以上模型中加入时间趋势项,得到:
Angrist & Pischke (2008) 指出,在各州具有不同 (但较有规律) 的变动趋势时,以上既包含了年份虚拟变量有包含了时间趋势项的 DID 模型,仍然可以对政策效应进行有效识别。原因是年份虚拟变量吸收了每个州时间上所受的共同冲击,时间趋势项又可以解决各州趋势不一致的问题。
此部分参考先前推文:连享会-倍分法DID详解 (一):传统 DID (微信版) 中的数据生成方法,改变干预组与控制组的时间趋势,并比较在未加入时间趋势项和加入时间趋势项的两种情况下,DID 模型是否可以正确估计政策效应。
///设定60个个体,设定随机数种子
clear all
set obs 60
set seed 10101
gen id =_n
///生成有600个观测值的面板数据
expand 11
drop in 1/60
count
///生成州变量
gen State = 0
replace State = (inrange(id,31,60))
///以id分组生成时间标识
bys id: gen time = _n+1999
///生成协变量x1, x2
gen x1 = rnormal(1,7)
gen x2 = rnormal(2,5)
///生成treat和post变量,以2005年为接受政策干预的时点,id为31-60的个体为干预组,其余为控制组
gen D = 0
replace D = (inrange(id,31,60))
gen post = 0
replace post = (time >= 2005)
///生成时间变量
sort id time
by id: gen T = _n
///干预组与控制组的时间趋势不一致,政策的真实效果为10,且不随时间发生变化。
bys id: gen y0 = 10 + 0.5 * T + 5 * x1 + 3 * x2 + rnormal()
bys id: gen y1 = 15 + T + 5 * x1 + 3 * x2 + rnormal() if time < 2005
bys id: replace y1 = 15 + T + 10 + 5 * x1 + 3 * x2 + rnormal() if time >= 2005
gen y = y0 + D * (y1 - y0)
///将基础数据结构保存成dta文件
save "DID_Time_Trend.dta",replace
我们对 (7) 式模型进行实现:
///实现(7)式模型
clear
use "DID_Time_Trend.dta"
reg y i.State i.time c.D#c.post x1 x2, r
Stata 估计结果如下:
------------------------------------------------------------------------------
| Robust
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.State | 6.541262 .1292255 50.62 0.000 6.287461 6.795064
|
time |
2001 | .5158501 .2095098 2.46 0.014 .1043685 .9273316
2002 | 1.470104 .2170314 6.77 0.000 1.04385 1.896358
2003 | 2.054685 .2101834 9.78 0.000 1.641881 2.46749
2004 | 2.728637 .2282535 11.95 0.000 2.280343 3.176932
2005 | 2.325115 .2455191 9.47 0.000 1.842911 2.80732
2006 | 2.956873 .2151182 13.75 0.000 2.534376 3.379369
2007 | 4.080774 .221301 18.44 0.000 3.646134 4.515414
2008 | 4.69696 .2323645 20.21 0.000 4.240592 5.153329
2009 | 5.573186 .2389316 23.33 0.000 5.103919 6.042452
|
c.D#c.post | 12.37039 .178694 69.23 0.000 12.01943 12.72135
|
x1 | 4.99772 .0062709 796.97 0.000 4.985404 5.010037
x2 | 3.005184 .0087694 342.69 0.000 2.987961 3.022408
_cons | 10.17657 .1737664 58.56 0.000 9.835286 10.51785
------------------------------------------------------------------------------
我们可以发现政策变量的系数虽然显著但存在较大偏误,并且置信区间不包含真实政策效果 10 ,说明未纳入时间趋势项的 DID 模型不能有效识别政策效应。
将时间趋势项纳入模型,对 (8) 式进行实现:
///实现(8)式模型
clear
use "DID_Time_Trend.dta"
reg y i.State##c.T i.time c.D#c.post x1 x2, r
Stata 估计结果如下:
note: 2009.time omitted because of collinearity
Linear regression Number of obs = 600
F(14, 585) = 67886.42
Prob > F = 0.0000
R-squared = 0.9994
Root MSE = 1.0208
------------------------------------------------------------------------------
| Robust
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.State | 4.832934 .2144808 22.53 0.000 4.411688 5.254181
T | .4927767 .0265998 18.53 0.000 .440534 .5450193
|
State#c.T |
1 | .5696779 .0604302 9.43 0.000 .4509915 .6883644
|
time |
2001 | -.2609188 .1793334 -1.45 0.146 -.6131345 .091297
2002 | -.0852692 .1850952 -0.46 0.645 -.4488013 .278263
2003 | -.2698823 .1695362 -1.59 0.112 -.602856 .0630914
2004 | -.3877898 .1940886 -2.00 0.046 -.7689852 -.0065944
2005 | -.1348258 .180441 -0.75 0.455 -.489217 .2195653
2006 | -.2847543 .1578393 -1.80 0.072 -.594755 .0252464
2007 | .0591873 .169159 0.35 0.727 -.2730455 .3914202
2008 | -.0942736 .1725591 -0.55 0.585 -.4331844 .2446373
2009 | 0 (omitted)
|
c.D#c.post | 9.522704 .3503993 27.18 0.000 8.834511 10.2109
|
x1 | 4.993368 .0057933 861.91 0.000 4.981989 5.004746
x2 | 3.007577 .008313 361.79 0.000 2.99125 3.023904
_cons | 10.25255 .1806734 56.75 0.000 9.897704 10.6074
------------------------------------------------------------------------------
从回归结果看,我们最为关心的政策变量系数现在仍是高度显著的,并且非常接近真实值 10,置信区间同样也包含 10,可见 (8) 式模型在这种情况下显著优于 (7) 式模型,所以此时我们有必要将时间趋势项纳入传统的 DID 模型中。
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD