Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
Nick
[email protected]
On 6 June 2013 14:10, Jonas Krüger <[email protected]> wrote:
> Hi everyone.
> I have some issues with my ML program. I try to estimate a structural
> labor supply model.
>
> Here is the Code first:
> ----------------------------------------------------------------------------------------------
> sort cupid Hc
> program ML
> args todo b lnf tempvar beta1 beta2 beta3 L1 alpha1 alpha2 alpha3
> alpha4 alpha5 numer sum denom
> tempname sigma1 lnsig1 l11 sigma2 lnsig2 l22 sigma3 lnsig3 l33
> mleval `beta1'=`b', eq(1)
> mleval `beta2'=`b', eq(2)
> mleval `beta3'=`b', eq(3)
> mleval `lnsig1'=`b', scalar eq(4)
> mleval `lnsig2'=`b', scalar eq(5)
> mleval `lnsig3'=`b', scalar eq(6)
> qui gen double `L1'=0, scalar
> qui gen double `numer'=0
> qui gen double `sum'=0
> qui gen double `denom'=0
> scalar `sigma1'=(exp(`lnsig1'))^2
> scalar `sigma2'=(exp(`lnsig2'))^2
> scalar `sigma3'=(exp(`lnsig3'))^2
> matrix f=(`sigma1' , 0 , 0 \ 0 , `sigma2' , 0 \ 0 , 0 , `sigma3')
> capture matrix U=cholesky(f)
> scalar `l11'=U[1,1]
> scalar `l22'=U[2,2]
> scalar `l33'=U[3,3]
> forvalues r=1/50{
> qui gen double `random1'=random1_`r'*`l11'
> qui gen double `random2'=random2_`r'*`l22'
> qui gen double `random3'=random3_`r'*`l33'
> qui gen double `yhf'=y*fh
> qui gen double `yhm'=y*hm
> qui gen double `ysq'=y^2
> *------------------------------------------------------------------------------------------------*
> qui gen double
> `utility'=`alpha1'*`ysq'+`alpha2'*hfsq+`alpha3'*hmsq+`alpha4'*hfhm+`alpha5'*`yhf'
> +`alpha6'`yhm'+(`beta1'+`random1')*`y'+(`beta2'+`random2')*fh+(`beta3'+`random3')*hm
> qui gen double ?numer?=exp(`utility')
> qui by cupid: gen double `sum'=sum(`numer') if didep==1
> qui by cupid: gen double `denom'=sum[_N]
> qui gen double `L1'=(`numer'/`denom')
> *-----------------------------------------------------------------------------------------------------*
>
> } //forvalues r=1/50
>
> mlsum `lnf'=ln(`L1'/50) if (`todo'==0 | `lnf'>=.) exit
>
> end
> ml model d0 ML (`utility' = `beta1' `beta2' `beta3' `alpha1' `alpha2'
> `alpha3' `alpha4' `alpha5'), maximize
> -----------------------------------------------------------------------------------------------------
>
>
> The Problems are:
> 1. Stata gives the error: = invalid name
> r(198);
> ml check stops at: mleval `beta2'=`b', eq(2)
>
>
>
> 2. How can I control which variables are used for: (beta1*x+random)
> etc.
> I want that stata is only using some variables there. E.g. Schooling,
> age etc.
>
> Thanks in advance
> *
> * 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/