Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

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

st: ML Programming

From   "Jonas Krüger" <>
Subject   st: ML Programming
Date   13 Jun 2013 15:46:18 +0200

Hi everyone.
I have some problems getting my ML estimation running. I want to 
estimate a multinomial labor supply model. My program passes the first 
two test with .ml check but fails to find initial values, I cant figure 
out why so far.

. ml search
initial:       log likelihood =     -<inf>  (could not be evaluated)

The code (The variable didep shows the actual observed choice, strata 
identifies the household and for each household I have 12 observation. 
One for each possible hour category plus the net income.)
sort strata Hc
program ML
   args todo b lnf
   tempvar beta1 beta2 beta3 alpha1 numer sum denom utility
   tempname random1 random2 random3 alpha2 alpha3 alpha4 alpha5 alpha6 L1 
L2 sigma1 lnsig1 l11 sigma2 lnsig2 l22 sigma3 lnsig3 l33
   mleval `alpha1' = `b', eq(1)
   mleval `alpha2' = `b', eq(2) scalar
   mleval `alpha3' = `b', eq(3) scalar
   mleval `alpha4' = `b', eq(4) scalar
   mleval `alpha5' = `b', eq(5) scalar
   mleval `alpha6' = `b', eq(6) scalar
   mleval `beta1' = `b', eq(7)
   mleval `beta2' = `b', eq(8)
   mleval `beta3' = `b', eq(9)
   mleval `lnsig1' = `b', scalar eq(10)
    mleval `lnsig2' = `b', scalar eq(11)
   mleval `lnsig3' = `b', scalar eq(12)
   qui gen double `L1'=0
   qui gen double `L2'=0
   qui gen double `numer'=0
   qui gen double `sum'=0
   qui gen double `denom'=0
   qui gen double `random1'=0
   qui gen double `random2'=0
   qui gen double `random3'=0
   qui gen double `utility'=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)
   if _rc != 0 {
di "Warning: cannot do Cholesky factorization of rho matrix"
   scalar `l11'=U[1,1]
   scalar `l22'=U[2,2]
   scalar `l33'=U[3,3]
   forvalues r=1/50{
       qui replace `random1'=random1_`r'*`l11'
       qui replace `random2'=random2_`r'*`l22'
       qui replace `random3'=random3_`r'*`l33'

       qui by strata: replace 
       qui replace  `sum'=exp(`utility'),
       qui by strata: replace  `numer'=`sum' if didep==1
       qui by strata: replace  `denom'=sum(`numer')
       qui replace  `L1'=(`numer'/`denom')
       replace `L2'=`L2'+`L1'
   } //forvalues r=1/50

   mlsum `lnf'=ln(`L2'/50) if didep==1
   if (`todo'==0 | `lnf'>=.) exit

ml model d0 ML ( Hc =) (Hc =) (Hc = ) (Hc = ) (Hc = ) (Hc =)(Hc= feduc 
meduc mage fage datanum nchild) (Hc =  fage feduc datanum nchild) (Hc = 
mage  meduc datanum nchild) /lnsig1 /lnsig2 /lnsig3

Thanks in advance
*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index