如何使用Stata高效地创建滞后变量 [英] How to efficiently create lag variable using Stata
本文介绍了如何使用Stata高效地创建滞后变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有面板数据(时间:日期,名称:股票代码)。我想为变量x
和y
创建10个LAG。现在,我使用以下代码逐个创建每个LAG变量:
by ticker: gen lag1 = x[_n-1]
然而,这看起来很混乱。
有人能告诉我怎样才能更有效地创建滞后变量吗?
我应该使用循环还是Stata有更有效的方法来处理此类问题?
推荐答案
@Robert向您展示了简化的方法。以下是"传统的"、枯燥的完成方式:
clear
set more off
*----- example data -----
set obs 2
gen id = _n
expand 20
bysort id: gen time = _n
tsset id time
set seed 12345
gen x = runiform()
gen y = 10 * runiform()
list, sepby(id)
*----- what you want -----
// "traditional" loop
forvalues i = 1/10 {
gen x_`i' = L`i'.x
gen y_`i' = L`i'.y
}
list, sepby(id)
和组合:
// a combination
foreach v in x y {
tsrevar L(1/10).`v'
rename (`r(varlist)') `v'_#, addnumber
}
如果目的是创建滞后变量以便在某些估计中使用它们,请知道您可以在许多估计命令中直接使用时间序列运算符;也就是说,一开始就不需要创建滞后变量。请参阅help tsvarlist
。
这篇关于如何使用Stata高效地创建滞后变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文