I am implying that you need to define a global macro called -id- for this code to work.
It may be that you changed the code and didn't change it consistently. I don't know.
Nick
[email protected]
Ousmane FAYE
Hi Nick,
Thank you so much for your help. However, I am still having the same
problem. Please can you clarify a bit what you are suggesting?
"Nick Cox" <[email protected]>
> The code you run expects a global macro called -id- to be defined, but
> evidently it is empty.
Ousmane FAYE
> I have a probit model using a panel data with 6 waves of observations. I am
> trying to run the code suggested by Cappellari and Jenkins Stata Journal
> (2006) (Paragraph 3.6: Illustration 4: MSL estimation of a probit model for
> panel data) See below.
>
> However I have the following error message after 'ml maximize' : "varlist
> required."
>
> I use 'ml check' and here is where the error likely happens:
>
> ......
>
> - quietly {
>
> - forvalues i = 1/6 {
>
> - by $id: gen double `k`i'' = ( 2*$ML_y1[`i'] ) - 1
>
> = by : gen double __00001J = ( 2*Diarrhea[1] ) - 1
>
> varlist required
>
> by $id: gen double `xb`i'' = `theta1'[`i']
>
> }
>
>
>
> I have exactly replicate the Cappellari and Jenkins' code. I don't why this
> occurs then. Can someone advise on this issue?
>
> Thanks in advance,
>
>
>
> The program i use is what follows:
>
>
>
>
>
> sort ChildID update
>
> global cs " "
>
> global csbar " "
>
> forvalues i = 2/6 {
>
> forvalues j = 1/`i' {
>
> global cs "$cs c`i'`j'"
>
> global csbar "$csbar /c`i'`j'"
>
> }
>
> }
>
> program drop myll
>
> program define myll
>
> args todo b lnf
>
> tempvar theta1 T fi xb1 xb2 xb3 xb4 xb5 xb6 k1 k2 k3 k4 k5 k6
>
> tempname $cs
>
> mleval `theta1' = `b' , eq(1)
>
> local c = 1
>
> forvalues i = 2/6 {
>
> forvalues j = 1/`i' {
>
> local c = `c' + 1
>
> mleval `c`i'`j'' = `b' , eq(`c') scalar
>
> }
>
> }
>
> quietly {
>
> forvalues i = 1/6 {
>
> by $ChildID: gen double `k`i'' = ( 2*$ML_y1[`i'] ) - 1
>
> by $ChildID: gen double `xb`i'' = `theta1'[`i']
>
> }
>
> by $ChildID: gen double `T' = (_n == 6)
>
> tempname C
>
> mat `C' = I(6)
>
> forvalues i = 2/6 {
>
> forvalues j = 1/`i' {
>
> local c`i'`j' = `c`i'`j''
>
> mat `C'[`i',`j'] = (`c`i'`j'')
>
> }
>
> }
>
> egen `fi' = mvnp(`xb1' `xb2' `xb3' `xb4' `xb5' `xb6') , ///
>
> chol(`C') dr($dr) prefix(z) ///
>
> signs(`k1' `k2' `k3' `k4' `k5' `k6')
>
> mlsum `lnf' = ln(`fi') if `T'
>
> }
>
> end
>
>
>
> di "$cs"
>
> di "$csbar"
>
> probit Diarrhea LDiarrhea LWAZ ChildAge ChildAge2 MotherAge female prim_sch
> sec_sch high_sch
>
> mat b0 = e(b)
>
> mdraws, dr(10) neq(6) prefix(z) antithetics
>
> global dr = r(n_draws)
>
> ml init b0
>
> ml model d0 myll (Diarrhea: Diarrhea = LDiarrhea LWAZ ChildAge ChildAge2
> MotherAge female prim_sch sec_sch high_sch) $csbar
>
> ml maximize
>
>
>
> *
*
* 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/