我在Stata 12中有一个循环查看文件中的每个记录,如果它发现flag
等于1,则会生成五个估算值。我的代码如下所示:
forvalues i=1/5 {
gen y3`i' = y2
gen double h`i' = (uniform()*(1-a)+a) if flag==1
replace y3`i' = 1.6*(invibeta(7.2,2.6,h`i')/(1-invibeta(7.2,2.6,h`i')))^(1/1.7) if
flag==1
}
a
在别处定义。我想检查一下个人的估算。因此,我需要优先显示估算变量,仅适用于flag
= 1的情况。我还希望显示另一个值s
。我需要帮助来弄清楚语法。我已经尝试过我能想到的所有引号和下标组合,但我不断收到错误消息。
另一个有用的修改发生在我身上。假设我有三个连接文件,我想在其上执行此例程。让他们有一个等于1,2或3的变量文件。我想为每个设置一个单独的种子,并在我的程序中执行它,所以我有一个记录。我想象的是:
forvalues j=1/3 {
set seed=12345 if file=1
set seed=56789 if file=2
set seed=98765 if file=3
insert code above
}
这会有用吗?
答案 0 :(得分:3)
您不会对未显示的代码发表评论,但“显示”一词可能会误导您。
list y3`i' if flag == 1
或者你可以寻求一些变化。请注意,display
适用于一次最多显示一行输出。
P.S。正如你是威廉·莎士比亚,知道那个杯子http://www.stata.com/giftshop/much-ado-mug/的灵感来自你的作品。
答案 1 :(得分:0)
一个辅助问题询问每次循环选择不同的种子。这很简单:
forval j = 1/3 {
local seed : word `j' of 12345 56789 98765
set seed `seed'
...
}
或
tokenize 12345 56789 98765
forval j = 1/3 {
set seed ``j''
...
}