在计算时间序列问题的时候,经常需要计算滞后数值。Stata 里使用 lag 函数计算,试例如下:
数据库中有变量 a
需要生成滞后一天的新变量,使用如下语句
sysuse sp500, clear
gen open_lag1=l1.open
但此时回报错(错误信息为:time variable not set),因为 Stata 并不知道按照什么样的时间滞后
应在先告诉 Stata 那个是时间变量。完整代码如下:
sysuse sp500, clear
tsset date
gen open_lag1=l1.open
对于 panel 数据,使用 tsset year 语句会报错(错误信息显示为:stata repeated time values in sample)。因为对于面板数据而言,需要两个维度的标识才能确定每一行观察值的位置,使用 tsset 时要求 year 值不能重复。正确的做法是 tsset id year 或 xtset id year,代码如下:
webuse nlswork, clear
xtset idcode year
gen tenure_lag1=l1.tenure
ID是 panel 数据里的调查对象编码
如果需要设置滞后2天、3天的,也很简单,代码如下:
gen tenure_lag1=l2.tenure
gen tenure_lag1=l3.tenure
说了半天,最重要的就是:gen 新的 lag 变量前一定要用 tsset 或 xtset 设置时间变量!