在Stata循环中显示数据

时间:2013-09-02 16:14:01

标签: loops stata

我在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

}

这会有用吗?

2 个答案:

答案 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'' 
         ...
  }