如何使用 tsrevar 使用 stata 创建滞后变量

how to use tsrevar to create lag variable using stata

我得到了一个面板数据(时间:日期名称:代码)。我想为 x 创建最多 10 个滞后变量。所以我使用下面的代码。

tsrevar L(1/10).x
rename (`r(varlist)') x_#, addnumber

因为我的数据是每小时一班,而且只在白天观察。使用上面的代码,缺少每个交易日的第一个观察值。 我的替代解决方案是:

by ticker: gen lag1 = return[_n-1]

然后,我不得不将这段代码复制粘贴10次,看起来很乱。谁能教我如何解决这个问题

这是我的“10 分钟猜测”,因为我实际上并没有使用比每日周期更精细的东西。

据我所知,Stata 没有每小时 显示格式。实现您想要的效果的一种方法是在 tsset 数据时使用 delta() 选项。

clear
set more off

*----- example data -----

// an "hour-by-hour" time series which really has millisecond format
set obs 25

gen double t = _n*1000*60
format %tcDDmonCCYY_HH:MM:SS:.sss t

set seed 3129745
gen ret = runiform()

list, sep(0)

*----- what you want? -----

// 1000*60 milliseconds conform 1 hour
tsset t, delta((1000*60)) 

// one way
tsrevar L(1/2).ret
rename (`r(varlist)') ret_#, addnumber

// two other ways
gen  ret1 = L.ret
gen  ret11 = ret[_n-1]

// check
assert ret_1 == ret1
assert ret_1 == ret11

list, sep(0)

tsset还有一个generic选项,delta()本身有几个规格。看看并测试一下,看看是否找到更合适的。

(你提到了一个 "hourly frequency" 但你没有给出具体的示例数据。真的没有办法确定你在处理什么。)