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

时间:2015-07-06 11:35:58

标签: stata

我有一个面板数据(时间:日期名称:自动收报机)。我想为x创建最多10个滞后变量。所以我使用以下代码。

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

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

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

然后,我必须复制并粘贴此代码10次,这看起来非常混乱。谁能教我如何解决这个问题

1 个答案:

答案 0 :(得分:0)

这是我的" 10分钟猜测"鉴于我实际上并没有使用比每日周期更精细的东西。

Stata没有我所知道的每小时显示格式。实现所需目标的一种方法是在delta()数据时使用tsset选项。

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()本身有几个规格。看看并测试一下,看看你是否找到了更合适的效果。

(你提到了一个&#34;每小时的频率&#34;但是你没有提供具体细节的示例数据。真的无法确切知道你正在处理什么。)< / p>