如何使用Stata高效地创建滞后变量 [英] How to efficiently create lag variable using Stata

查看:30
本文介绍了如何使用Stata高效地创建滞后变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有面板数据(时间:日期,名称:股票代码)。我想为变量xy创建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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆