1

イベントが発生してから(ここではインジケーター変数で表されますpos)、指定された数のリードとラグ(ここでは3)までの期間(ここでは年)を測定したいと思います。

次のコードは機能しますが、ハックっぽく、基本的なものが欠けているようです。組み込み関数またはより優れたロジックを利用する、より堅牢なソリューションはありますか?私は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)
}
4

1 に答える 1

2

明確な質問。

これは短縮できます。これが1つの方法です。サンドピットを設定するためのコードから始めます

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からトリックを紹介するつもりでしたが、必要ないようです。

于 2013-03-08T18:39:35.413 に答える