Stata 使用outreg2时如何添加因变量的平均值?

Stata 使用outreg2时如何添加因变量的平均值?,stata,Stata,我有一组回归,使用社区贡献的Stata命令estout以以下格式导出: foreach yvar of varlist yvar1 yvar2 { eststo: quietly regress `yvar' xvar1 xvar2, robust estadd ysumm } esttab using mydoc.csv, se stats(N ymean r2_a) replace 然而,我发现社区贡献的命令outreg2可以创建更好的回归表,所以我想改用它 当使用out

我有一组回归,使用社区贡献的Stata命令
estout
以以下格式导出:

foreach yvar of varlist yvar1 yvar2 {
    eststo: quietly regress `yvar' xvar1 xvar2, robust
    estadd ysumm
}

esttab using mydoc.csv, se stats(N ymean r2_a) replace
然而,我发现社区贡献的命令
outreg2
可以创建更好的回归表,所以我想改用它

当使用
outreg2
时,我想包括因变量(
ymean
)的平均值,但我不能调用
e(ymean)
,因为没有创建相关的标量

下面是我的代码:

local first_loop yes

foreach yvar of varlist yvar1 yvar2 {
    quietly regress `yvar' xvar1 xvar2, robust
    if "`first_loop'"=="yes"{
        outreg2 using outreg2_test.xls, replace ctitle(`yvar') ///
         addstat(Mean, e(ymean)) label
        local first_loop no
    }
    else {
        outreg2 using outreg2_test.xls, append ctitle(`yvar') ///
         addstat(Mean, e(ymean)) label
    }
}
我上面的代码不起作用,因为
outreg2
无法识别
e(ymean)

我的问题是:

  • 此标量是否特定于
    estadd

  • 当使用
    outreg2
    时,是否有办法在回归输出表中包含因变量的平均值

似乎
e(ymean)
不是
回归的标准回归输出

最简单的方法可能是指定您希望报告因变量(
depvar
选项),以及您希望报告平均值、系数和标准误差

例如:

outreg2 using outreg2_test.xls, replace ctitle(`yvar') depvar stats(coef se mean) label
请注意,此方法还将报告自变量的平均值

或者,要仅报告列底部的
ymean
,您可以汇总因变量并手动添加平均值:

local first_loop yes

foreach yvar of varlist yvar1 yvar2 {
  quietly regress `yvar' xvar1 xvar2, robust
  quietly summ `yvar'   
  if "`first_loop'"=="yes"{
    outreg2 using outreg2_test.xls, replace ctitle(`yvar') addstat(Mean, r(mean)) label
    local first_loop no
  }
  else {
    outreg2 using outreg2_test.xls, append ctitle(`yvar') addstat(Mean, r(mean)) label
  }
}

如果愿意,您还可以将
ymean
添加到本地宏中,并在
addstat()
选项中使用它,并且根据您的回归分析,您可能希望添加
if e(示例)
到您的
汇总
命令。

在调用
outreg2
之前,也可以使用命令
estadd ysumm

local first_loop yes

foreach yvar of varlist yvar1 yvar2 { 
    quietly regress `yvar' xvar1 xvar2, robust
    estadd ysumm
    if "`first_loop'"=="yes"{
        outreg2 using outreg2_test.xls, replace ctitle(`yvar') ///
           addstat(Mean of dependent variable, e(ymean)) label

        local first_loop no
    }
    else {
        outreg2 using outreg2_test.xls, append ctitle(`yvar') ///
           addstat(Mean of dependent variable, e(ymean)) label
    }
}

@布伦丹:谢谢你的解决方案。第一个解决方案给出了我想要的结果,但它创建了太多行(每个平均值都在一行中)。然而,第二个解决方案创建了因变量所有观测值的平均值,而不仅仅是回归中使用的观测值。有没有办法解决这个问题?如前所述,尝试将
if e(sample)
添加到
summ
命令中(请确保
summ
回归后执行)。@brendan如果我的问题太基本,请原谅我。如何将
if(esample)
添加到
summ
命令中?