使 foreach 遍历变量的所有值 + return 当前值

Making foreach go through all values of a variable + return the current value

我想使用 Stata FAQ here 构建一个迭代。第二种方法似乎适合我的情况。我构建了以下代码:

levelsof ID, local(levels)
foreach l of local levels {
    var var1 var2 if ID == `l', lags(1/4) vsquish
    vargranger
}

想法:遍历 ID 中的所有 ID,然后执行 vargranger。但是,它运行一次,然后输出 no observations。这不是真的,因为我的搜索变量中有 200 个 ID。

我想添加到我的循环中的第二件事,ID 中使用的当前 ID 的 return / print 函数。

对于 ID 的每个值,输出应该如下所示:

ID = XYZ

Sample:  2001 - 2019                            Number of obs     =         16
...

vargranger

   Granger causality Wald tests
  +------------------------------------------------------------------+
  |          Equation           Excluded |   chi2     df Prob > chi2 |
  |--------------------------------------+---------------------------|
  |         var1                    var2 |  11.617     4    0.020    |
  |         var1                     ALL |  11.617     4    0.020    |
  |--------------------------------------+---------------------------|
  |         var2                    var1 |  6.2796     4    0.179    |
  |         var2                     ALL |  6.2796     4    0.179    |
  +------------------------------------------------------------------+
当前级别的

display已经很简单了,比如说:

levelsof ID, local(levels)
foreach l of local levels {
    di "{title:`l'}" _n 
    count if !missing(var1, var2) & ID == `l'
    var var1 var2 if ID == `l', lags(1/4) vsquish
    vargranger
}

“无观察结果”报告可能来自 var,并不代表您拥有多少标识符。您应该像上面那样添加检查(例如)您必须使用多少观察值。