Stata条形图多模型

Stata bar chart multiple models

我 运行 对两个变量进行相同的回归,一个有稳健的标准误差,一个没有。因此,我总共有 4 个回归结果。这是一个复制 material:

sysuse auto, clear      

tempfile abcd
   save abcd, empty replace

preserve
reg price mpg
regsave mpg
gen Y=1
gen X="Normal SEs"
save abcd, replace
restore

preserve
reg price rep78
regsave rep78
gen Y=1
gen X="Normal SEs"
append using abcd
save abcd, replace
restore

            
forvalues i=1/2{
if `i'==1 local sub="mpg"
if `i'==2 local sub="rep78"
            preserve
            reg price `sub', robust
            regsave `sub'
            gen Y=1
            gen X="Robust SEs"
            append using abcd
            save abcd, replace
            restore
            }
            
use abcd, clear

我想创建一个水平条形图,比较使用稳健和不使用稳健时 mpg 和 rep78 回归的标准误差大小。理想情况下,它应该在轴上有“mpg”,然后是两个不同颜色的条(用于稳健和正常的 SE),“rep78”也是如此。理想情况下,它看起来像这样 (https://www.stata.com/support/faqs/graphics/gph/graphdocs/horizontal-bar-chart-with-multiple-bars-graphed-over-another-variable/index.html)。但是,link 中的图表采用平均值而不是每个类别中的单个回归(在我的实际数据集中,我有 6 个回归)

我尝试了以下方法:

eclplot stderr stderr stderr Y, horizontal supby(X) rplottype(bar)   

但它只有一列,并且条形图是重叠的,而不是彼此相邻。我想知道是否有人可以帮助我创建此图表?

regsaveeclplot 是社区贡献的,正如您被要求解释的那样(Stata 标签维基)。

对于所述问题,您不需要 preserve restore save append 编排等等。您可以循环回归并将您想要的内容保存到数据集中的其他变量。

注意:结果变量与现有数据集不一致。

注意:默认的假设是您不需要比数据集中的观测值更多的结果。

对于更严肃的程序,我会使用 postfile.

编写代码
sysuse auto, clear 

gen predictor = "" 
gen robust = mod(_n, 2) == 0  
label def robust 0 "not robust" 1 "robust"
label val robust robust 

gen se = . 

local i = 1 

foreach x in mpg rep78 { 
    
reg price `x'
replace se = _se[`x'] in `i'
replace predictor = "`x'" in `i'

local ++i 
reg price `x', robust 
replace se = _se[`x'] in `i'
replace predictor = "`x'" in `i'

local ++i 

} 

graph hbar (asis) se, over(robust) over(predictor) scheme(s1color) asyvars