Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: estimates save/add problem in regression loop


From   Helge <hl.statlist@googlemail.com>
To   statalist@hsphsun2.harvard.edu
Subject   st: estimates save/add problem in regression loop
Date   Wed, 1 Sep 2010 15:01:33 +0200

dear statalist,

i have modified a regression loop i use to generate output to also
save all regression results in memory (i used to clear them after each
table was generated) so i can have a look at specific e(sample) and
other things later if necessary. this is my code

-------------------------------------
version 10
set more off
cap log close
cd   $datadir
log using regressions_test, replace
use regress_final.dta, clear

cd results

local i1 "Lgdpgr mob_fixed wdi_urbanpop Lopen Ldurable"
/*local i2 "mob_fixed wdi_urbanpop Lopen Ldurable yrsforeign
yrsanarchy yrstrans"*/
/*local i3 "Lpart Lcomp"*/

local vars "T left_wing right_wing political_ctrl ethn_sep
ethn_sep_ctrl muslim religious religious_ctrl guerilla guerilla_ctrl
polwing polwing_ctrl small_org large_org small_org5 large_org5"

local tframe0 ""
local tframe1 "if tframe==1"
local tframe2 "if tframe==2"

forvalues j=1/1 {
forvalues f=0/2 {
foreach z in "" "tg_" {
foreach t in "_total" "_civ" "_mil" "_dom" "_int" {
foreach y in "" "nkill_" {
foreach x of local vars {
capture: eststo `z'`y'`x'`t'`f'`j', prefix() title(dependent variable:
`z'`y'`x'`t', time frame `f', specification `j'): ///
	xtnbreg `z'`y'`x'`t' Lgdpqt_2 Lgdpqt_3 Lgdpqt_4 Lgdpqt_5 ///
	lpop yrsconflict past_T_total Lpolcat_2 Lpolcat_3 Lpolcat_4 year_*
`i`j'' `tframe`f'', fe irr iter(40)
	capture qui testparm Lgdpqt_5 Lgdpqt_4, equal
	estadd r(p), prefix(gdp_5)
	capture qui testparm Lgdpqt_4 Lgdpqt_3, equal
	estadd r(p), prefix(gdp_4)
	capture qui testparm Lgdpqt_3 Lgdpqt_2, equal
	estadd r(p), prefix(gdp_3)
	capture qui testparm Lpolcat_4 Lpolcat_3, equal
	estadd r(p), prefix(pol_4)
	capture qui testparm Lpolcat_3 Lpolcat_2, equal
	estadd r(p), prefix(pol_3)
}
estout `z'`y'*`t'`f'`j' using tf`f'_`z'`y'`j'`t'.tex, style(tex) ///
 	keep(Lgdpqt_2 Lgdpqt_3 Lgdpqt_4 Lgdpqt_5 lpop yrsconflict
past_T_total Lpolcat_2 Lpolcat_3 Lpolcat_4 `i`j'') ///
	order(Lgdpqt_2 Lgdpqt_3 Lgdpqt_4 Lgdpqt_5 lpop yrsconflict
past_T_total Lpolcat_2 Lpolcat_3 Lpolcat_4 `i`j'') ///
	eform cells(b(star fmt(3)) p(par fmt(3))) ///
	stats(N_g N p aic bic ic converged gdp_3p gdp_4p gdp_5p pol_3p
pol_4p, fmt(0 0 3 0 0 0 0 3 3 3 3 3)) ///
	starlevels(* 0.1 ** 0.05 *** 0.01) varwidth(15) modelwidth(8)
prehead(\begin{sidewaystable} ///
	\caption{Total `z'`y'`t' by specific groups, variables added to
baseline: `i`j'', time frame `f'} ///
	\footnotesize{\begin{tabular}{l*{@M}{r}} \hline)  posthead(\hline)
prefoot(\hline) ///
	postfoot(\hline \end{tabular}} \end{sidewaystable}) ///
	substitute(_ \_) replace
}
}
}
}
}

cd ..
-------------------------------------


I have set prefix() so the names of the saved estimates do not break
the 32 character limit. i use capture since some models are not
computable and not all quintiles are included in all regressions. at
some point i get tg_nkill_ethn_sep_int01 not found. if i then write
eststo dir to list the saved estimates, i get "_return __000000
already exists".

if i delete the "capture:" before eststo and re-run the loop, i get an
error message much earlier "_est_nkill_political_ctrl_total01 invalid
name". It seems there is a problem with the character limit, although
im wondering why then the error doesnt appear earlier even when i use
capture.

Stata still seems to add the prefix _est to the saved estimates when i
add the testresults, although I set prefix() earlier. I used "eststo,
add()" in an earlier version and had the same problem. I thought
estadd would do the trick, but apparently it doesnt.

Is there any way to get rid of the _est? Other ways to solve this
would probably be to either disable the 32 character limit or rename
my variables. However, i don't know how to do the former, and for
obvious reasons im not really keen on doing the latter.

I hope my problem is understandable and the code not too badly
written, im a student still and have only been using stata for half a
year.
Also, if anybody has an idea for a better solution to make the loop
continue other than capture, id also be grateful.

thanks alot,

Helge
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index