Stata:返回一个宏,其中包含存储在e()中的所有标量的列表

时间:2014-02-05 21:07:13

标签: stata

我正在尝试编写程序,并希望迭代存储在e()中的所有标量。我希望控制台上显示的列表响应ereturn list - 通常包括e(N)e(r2)和& c。

我无法对其进行硬编码,因为用户可以使用estadd添加到列表中。

我希望能够输入类似的内容:

levelsof e_scalars
return list

并看到类似的内容:

macros:
    r(escalars) : "e(N) e(r2) e(df)"

有没有办法退回该名单?

感谢。

2 个答案:

答案 0 :(得分:1)

这会让你走近:

sysuse auto
reg price mpg
estadd scalar mystat 42 
ereturn list

local scalars: e(scalars)
di "`scalars'"

foreach element of local scalars {
    di "e(`element') is " e(`element')
}

编程手册(第267页)中的“Macro extended functions for names of stored results”下记录了这一点。

答案 1 :(得分:1)

扩展@Dimitriy的回答:

clear all
set more off

sysuse auto, clear

regress price mpg
ereturn list

local groupscalars: e(scalars)

foreach element of local groupscalars {
    local e_scalars "`e_scalars' e(`element')"
}

estadd local mymacro = `"`e_scalars'"'
ereturn list

给你:

macros:
            e(mymacro) : "e(N) e(df_m) e(df_r) e(F) e(r2) e(rmse) e(mss) e(rss) e(r2_a) e(ll) e(ll_0).."
            e(cmdline) : "regress price mpg"
              e(title) : "Linear regression"
          e(marginsok) : "XB default"
                e(vce) : "ols"
             e(depvar) : "price"
                e(cmd) : "regress"
         e(properties) : "b V"
            e(predict) : "regres_p"
              e(model) : "ols"
          e(estat_cmd) : "regress_estat"