/*This ado file gives the log likelihood function used in interval regressions for the lognormal distribution. It works with gintreg.ado v 2 Author--Jacob Orchard Update--8/10/2016*/ program intllf_ln_group version 13 args lnf mu sigma tempvar Fu Fl qui gen double `Fu' = . qui gen double `Fl' = . *Point data *qui replace `lnf' = log(normalden(log($ML_y1 ),`mu',`sigma'))*(1/$ML_y1 ) /// *if $ML_y1 != . & $ML_y2 != . & $ML_y1 == $ML_y2 *Interval data qui replace `Fu' = normal((log($ML_y2 )-`mu')/exp(`sigma')) if /// $ML_y1 != . & $ML_y2 != . & $ML_y1 != $ML_y2 qui replace `Fl' = normal((log($ML_y1 )-`mu')/exp(`sigma')) if $ML_y1 != . /// & $ML_y2 != . & $ML_y1 != $ML_y2 qui replace `lnf' = log(`Fu' -`Fl') if $ML_y1 != . & $ML_y2 != . & /// $ML_y1 != $ML_y2 *Bottom coded data qui replace `Fl' = normal((log($ML_y1)-`mu')/exp(`sigma')) if $ML_y1 != . & $ML_y2 == . qui replace `lnf' = log(1-`Fl') if $ML_y1 != . & $ML_y2 == . *Top coded data qui replace `Fu' = normal((log($ML_y2)-`mu')/exp(`sigma')) if $ML_y2 != . & $ML_y1 == . qui replace `lnf' = log(`Fu') if $ML_y2 != . & $ML_y1 == . *Missing Values qui replace `lnf' = 0 if $ML_y2 == . & $ML_y1 == . *Group frequency qui replace `lnf' = `lnf'*$group_per end