*version 1.0 30sept2004 kcf
*version 1.1 7oct2004 - added dummy variable as option, changed syntax
program define reswage_ll
version 8.0
args lnf theta1 theta2 theta3 theta4
* theta1 = xi'beta
* theta2 = sigma_u
* theta3 = wi'alpha
* theta4 = sigma_e
* From the reswage.ado file, remember _obs_y (z) must be a variable that is a dummy variable so the correct eq gets applied
* _obs_y = 1 - Dependent variable is observed (took a job, in wage reservation example)
* _obs_y = 0 - Dependent variable is not observed
*Create temporary variables to substitute into function
tempvar var_u var_e sigma a b c d
quietly gen double `var_u' = `theta2'^2
quietly gen double `var_e' = `theta4'^2
quietly gen double `sigma' = (`var_u' + `var_e')^.5
* Terms of the first equation (z=1 case)
quietly gen double `a' = ln(1/((2*_pi*`var_u')^.5))
quietly gen double `b' = -(1/(2*`var_u'))*(($ML_y1-`theta1')^2)
quietly gen double `c' = ln(norm((1/`var_e')*($ML_y1-`theta3')))
* Terms of the second equation (z=0 case)
quietly gen double `d' = ln(norm((`theta3' - `theta1')/`sigma'))
* Equations rewritten with temp variables
quietly replace `lnf' = `a' + `b' + `c' if _obs_y==1
quietly replace `lnf' = `d' if _obs_y==0
end