loop for grid-search

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

loop for grid-search

Qian Yu
This post has NOT been accepted by the mailing list yet.
Hi, all
      Thanks for your so many kind help. Unfortunately, I still can’t solve the problem of writing loop for my grid-search program. Since that my program can't be combined with “bysort”, that is
       Bysort product: “my grid-search program”
My specific data  for this program is listed as below:
product y x1hat x2hat sigma
1 4.65605 3.82133 .5891969 0.1
1 8.55465 3.273241 .1132121 0.1
1 .5072982 3.273241 .1132121 0.1
2 .0668553 3.781385 .112315 .
2 4.346485 3.999861 .1429252 .
2 .453282 3.389864 .27451 .
3 2.514498 2.554792 .432496 0.5
3 5.027869 3.869841 .1236284 0.5
3 1.121937 3.781385 .112315 0.5

How can I run the following grid-search program by product(1,2,3,…)?

My grid-search program goes 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.0)/`s'
local RhoJump = `RhoMax' / (`J2' - 2)
foreach r of numlist 0(`RhoJump')`RhoMax'{
mat uHat[1,`col'] = `r'
qui gen uTemp = y -`cons'-((`r') / ((((`s')-1)^2) * (1-(`r')))) * x1hat-((2*(`r') -1) / (((`s')-1) * (1-(`r')))) * x2hat
qui by product: egen sTemp = mean(uTemp)
qui replace sTemp = sTemp*sTemp*(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'
}




Many thanks
Qian