Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Federico Belotti <f.belotti@gmail.com> |
To | "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |
Subject | Re: st: bootstrap problem on a user written program: insufficient observations to compute bootstrap standard errors |
Date | Sat, 1 Mar 2014 15:40:19 +0100 |
Dear Marco, I usually wrote a program exploiting the eclass. Obviusly you can make your program more flexible, but this solves your issue, at least from the programming point of view. =============== code begins ==================== cap prog drop myprog prog def myprog, eclass syntax varlist(min=3 max=3 numeric) [if] [in] tokenize `varlist' marksample touse qui reg `1' `2' if `3' == 0 scalar beta_0 = _b[`2'] qui reg `1' `2' if `3' == 1 scalar beta_1 = _b[`2'] matrix diffbeta = beta_1 - beta_0 mat colnames diffbeta = "diffbeta" matrix vdiffbeta = 1 mat colnames vdiffbeta = "diffbeta" mat rownames vdiffbeta = "diffbeta" eret post diffbeta vdiffbeta, e(`touse') eret local cmd myprog eret di end sysuse auto, clear myprog price mpg foreign eret li bootstrap _b[diffbeta]: myprog price mpg foreign =============== code ends==================== HTH Federico Federico > Il giorno 01/mar/2014, alle ore 12:22, Marco Savegnago <savegnago.marco@gmail.com> ha scritto: > > Dear Statalisters, > > I have a trouble using the bootstrap prefix. > > Before resorting to Statalist, I've looked online and on textbooks for > a solution, without finding it. > > Assume we want to bootstrap the difference between 2 OLS estimations > (for 2 subpopulations identified by a dummy variable) and that we > write our rclass program. > > cap prog drop myprog > > prog def myprog, rclass > > syntax varlist(min=3 max=3 numeric) > > tokenize `varlist' > > > qui reg `1' `2' if `3' == 0 > > scalar beta_0 = _b[`2'] > > > qui reg `1' `2' if `3' == 1 > > scalar beta_1 = _b[`2'] > > > scalar diffbeta = beta_1 - beta_0 > > disp in ye "Diff in beta between (" "`3'" " = 1) and (" > "`3'" " = 0) is " as result diffbeta > > return scalar diffbeta=diffbeta > > end > > Let's test it and check it works: > > sysuse auto, clear > > myprog price mpg foreign > > ret list > > > > However, when I try to use it in bootstrap, I encounter this problem: > > > . bootstrap dbet = r(diffbeta): myprog price mpg foreign > > (running myprog on estimation sample) > > > > Bootstrap replications (50) > > ----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 > > xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 50 > > insufficient observations to compute bootstrap standard errors > > no results will be saved > > r(2000); > > > > Is there any suggestion to solve the problem? > > I hope someone can help, > > > Thank you very much, > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/faqs/resources/statalist-faq/ > * http://www.ats.ucla.edu/stat/stata/ * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/