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)
但它只有一列,并且条形图是重叠的,而不是彼此相邻。我想知道是否有人可以帮助我创建此图表?
regsave
和 eclplot
是社区贡献的,正如您被要求解释的那样(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
我 运行 对两个变量进行相同的回归,一个有稳健的标准误差,一个没有。因此,我总共有 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)
但它只有一列,并且条形图是重叠的,而不是彼此相邻。我想知道是否有人可以帮助我创建此图表?
regsave
和 eclplot
是社区贡献的,正如您被要求解释的那样(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