Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <njcoxstata@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: how to write "byable" for this program? |
Date | Thu, 24 Nov 2011 12:09:55 +0000 |
There is no way round needing to understand that. Nick On Thu, Nov 24, 2011 at 11:53 AM, econqian222 <maguixianstatalist@gmail.com> wrote: > Hi, Nick > Thanks for your kind reply! > I still can't understand the crutial part you referred to, so if I want > to solve the problem i decribed in last message, how should I write the > code? > > Many thanks, > Qian > > The dataset goes like the following: > > hs y x1hat x2hat sigma > 10290 736 283.731 141 > 10420 826 10.615 1.375 > 10511 276 78 2.687 > 10511 528 196.735 3.278 > 10511 818 148.753 11.0796 > 10511 251 4.861 .718 > 10519 276 6.189 .718 > 10519 276 9.396 .621 > 10519 404 7.355 .636 > 10591 682 10.8318 .812 > 10591 528 9.09482 .636 > 10591 276 8.49024 .417 > > Program grid, byable(recall) > "run the following grid-searching code" > end > by hs: grid > > The grid-searching code is listed as following: > if sigma1 < 1 | sigma1 == . { > local sigma1_hat = . > local rho1_hat = . > } > local SigmaMin = 1.05 > local SigmaMax = 131.05 > local SigmaJump = 1.0 > local J1 = (`SigmaMax' - `SigmaMin')/`SigmaJump' + 2 > local J2 = 32 > > sort product t > mat uHat = J(`J1',`J2',.) > local row = 2 > > foreach s of numlist `SigmaMin'(`SigmaJump')`SigmaMax'{ > mat uHat[`row',1] = `s' > local col = 2 > local RhoMax = (`s'-1)/`s' > local RhoJump = `RhoMax' / (`J2' - 2) > foreach r of numlist 0(`RhoJump')`RhoMax'{ > mat uHat[1,`col'] = `r' > qui gen uTemp = y -((`r') / ((((`s')-1)^2) * (1-(`r')))) * x1hat-((2*(`r') > -1) / (((`s')-1) * (1-(`r')))) * x2hat > qui gen sTemp = uTemp*uTemp*(1/period) > qui summ sTemp, d > mat uHat[`row',`col'] = r(sum) > drop uTemp sTemp > local col = `col' + 1 > } > local row = `row' + 1 > } > local MinU = uHat[2,2] > local rho_hat = uHat[1,2] > local sigma_hat = uHat[2,1] > local row = 2 > > foreach s of numlist `SigmaMin'(`SigmaJump')`SigmaMax'{ > local col = 2 > > foreach r of numlist 0(`RhoJump')`RhoMax'{ > if `MinU' > uHat[`row',`col'] { > local MinU = uHat[`row',`col'] > local rho_grid_hat = uHat[1,`col'] > local sigma_grid_hat = uHat[`row',1] > } > local col = `col' + 1 > } > local row = `row' + 1 > } > foreach var in sigma rho { > capture replace `var'1 = ``var'_grid_hat' > local `var'1_hat = ``var'_grid_hat' > } > * * 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/