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 at the end of May, and its replacement, statalist.org is already up and running.


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

Re: st: where and how to use marksample touse in a byable procedure?


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: where and how to use marksample touse in a byable procedure?
Date   Mon, 5 Dec 2011 00:08:14 +0000

You posted similar questions on 23 and 24 November and didn't get much
out of the list. I think your main problem was, and is, that you are
expecting the list to understand why a program does not work when what
you are trying to do is unclear: "grid searching" is too general a
description to make that evident and in any case you say nothing about
your dataset and only give some of your code.

However, a clue is given by the first line quoted here

 if sigma1 < 1 | sigma1 == .

This coding is usually wrong as explained at

http://www.stata.com/support/faqs/lang/ifqualifier.html

Nick

On Sun, Dec 4, 2011 at 4:08 PM, econqian222
<maguixianstatalist@gmail.com> wrote:
> Hi, all
>     I still can't solve the problem in writing the code(grid-searching to
> obtain value of sigma) for each value of hs to get the corresponding value
> of sigma. The point is that how and where to use -marksample touse- to
> create a temporary variable? I want to make the code "byable" to run for
> each value of hs(10290,10420,10511,10519,10591). However, once the program
> runs, and a sigma was obtained for its corresponding value of hs, all the
> values of sigma are given for the same value. Could anyone help me to check
> this problem?
>
> Many thanks in advance,
> 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
>
>
> 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/


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