使用先前值的公式

时间:2013-10-03 05:41:47

标签: stata

在Stata中,我想要一个由公式计算的变量,其中包括在变量ID定义的块内乘以前一个值。我尝试使用延迟,但这对我不起作用。

在下面的公式中,Y-1旨在表示上述值(滞后)。

gen Y = 0 
replace Y = 1 if count == 1
sort ID
by ID: replace Y = (1+X)*Y-1 if count != 1


X          Y         count      ID
.          1          1          1
2          3          2          1
1          6          3          1
3         24          4          1
2         72          5          1
.          1          1          2
1          2          2          2
7         16          3          2

2 个答案:

答案 0 :(得分:1)

您的代码可以更加简洁。方法如下:

input X   count   ID
.     1    1
2     2    1
1     3    1
3     4    1
2     5    1
.     1    2
1     2    2
7     3    2
end 
gen Y = count == 1 
bysort ID (count) : replace Y = (1 + X) * Y[_n-1] if count > 1 

虚拟(指标)变量的创建可以利用真或假表达式被评估为1或0这一事实。

by之前的排序和后续的by命令可以压缩为一个。请注意,我在ID的块中明确指出,count应保持排序。

这实际上是一个评论,而不是另一个答案,但如果这样表达的话就不那么清楚了。

答案 1 :(得分:0)

Y-1,公式中的滞后将被翻译,如下所示。

gen Y = 0 
replace Y = 1 if count == 1
sort ID
by ID: replace Y = (1+X)*Y[_n-1] if count != 1