2015-05-19 75 views
0

我想在运行回归模型后绘制一些估计值的置信区间。有效地绘制置信区间

因为我正在处理一个非常大的数据集,所以我需要一个有效的解决方案:特别是一个解决方案,不需要我数据集sortsave。在下面的例子中,我绘制估计b1b6

reg y b1 b2 b3 b4 b5 b6 

foreach i of numlist 1/6 { 
    local mean `mean' `=_b[b`i']' `i' 
    local ci `ci' /// 
    (scatteri /// 
    `=_b[b`i'] +1.96*_se[b`i']' `i' /// 
    `=_b[`i'] -1.96 * _se[b`i']' `i' /// 
    ,lpattern(shortdash) lcolor(navy)) 
} 
twoway `ci' (scatteri `mean', mcolor(navy)), legend(off) yline(0) 

虽然scatteri有效地绘出了估计,我不能让边界的置信区间类似rcap

有没有更好的方法来做到这一点?

+0

我会直接看'coefplot'(_Stata Journal_),然后决定是否自己写。 –

+0

这是一个细节,但是'foreach i numlist 1/6'比'forval i = 1/6'要少得多(而且效率低)。 –

+0

你不能将'scatteri'重铸到'rcap':参见'help twoway'。 –

回答

0

这里是您似乎想要的令牌代码。这个例子很荒谬。我个人认为,鉴于以前在coefplot背后完成的工作,完善这一点将毫无意义。 1.96的乘数仅适用于非常大的样本。

sysuse auto, clear 
set scheme s1color 

reg mpg weight length displ 

gen coeff = . 
gen upper = . 
gen lower = . 
gen which = . 

local i = 0 
quietly foreach v in weight length displ { 
    local ++i 
    replace coeff = _b[`v'] in `i' 
    replace upper = _b[`v'] + 1.96 * _se[`v'] in `i' 
    replace lower = _b[`v'] - 1.96 * _se[`v'] in `i' 
    replace which = `i' in `i' 
    label def which `i' "`v'", modify 
} 

label val which which 

twoway scatter coeff which, mcolor(navy) xsc(r(0.5, `i'.5)) xla(1/`i', val) /// 
|| rcap upper lower which, lcolor(navy) xtitle("") legend(off) 
+0

我以为scatteri比scatter/rcast更快。但是,使用1e8观测数据集,我们的代码都需要大约30秒,所以实际上没有使用散射而是使用散射/射频的速度增益。谢谢 – Matthew