确定自事件以来的时间段(最多n个领先/滞后)

时间:2013-03-08 16:20:27

标签: stata

我想测量自事件发生以来的周期数(这里是几年)(此处由指标变量pos表示),直到给定数量的线索和滞后(此处为三个)。

以下代码有效,但似乎是hackish,并且我错过了一些基本的东西。是否有更强大的解决方案,利用内置函数或更好的逻辑?我在11.2。谢谢!

version 11.2
clear

* generate annual data
set obs 40
generate country = cond(_n <= 20, "USA", "UK")
bysort country: generate year = 1766 + _n
generate pos = 1 if (year == 1776)

* generate years since event (up to three)
encode country, generate(countryn)
xtset countryn year
generate time_to_pos = 0 if (pos == 1)
forvalues i = 1/3 {
    replace time_to_pos = `i' if (l`i'.pos == 1)
    replace time_to_pos = -1 * `i' if (f`i'.pos == 1)
}

1 个答案:

答案 0 :(得分:2)

明确问题。

这可以缩短。这是一种方式。从您的代码开始设置沙坑

version 11.2
clear
* generate annual data
set obs 40
generate country = cond(_n <= 20, "USA", "UK")
bysort country: generate year = 1766 + _n

现在是

gen time_to_pos = year - 1776 if  abs(1776 - year) <= 3

这就是你的例子所需要的一切。如果您想在每个面板中推广到多个事件,我想知道此类事件的规则。

我打算从http://www.stata-journal.com/article.html?article=dm0055展示一个技巧,但似乎并不需要。