I have this log-likelihood function from a censored maximisation problem
with data on y_i, x_i, and z_i and want to have parameter estimates of \sigma, \lambda, \gamma_0, and \gamma_1. I wrote the following evaluator
Code:
cap program drop censored_likelihood program define censored_likelihood version 17.0 args lnf sigma lambda gamma0 gamma1 y x z tempvar m epsilon local y "$ML_y1" gen double `m' = (1 + (`lambda' - 1) * `x' * (`gamma0' - exp(-`gamma1' * `z'))) gen double `epsilon' = `y' - `m' qui replace `epsilon' = 0 if `y' == 0 gen double Iy0 = (`y' == 0') gen double Iy010 = (`y' > 0 & `y' < 10) gen double Iy10 = (`y' == 10) replace `lnf' = -0.5 * ln(2*c(pi)*`sigma'^2) - (`y'-`m')^2/(2*`sigma'^2) /// + Iy0 * ln(normal(-`m'/`sigma')) /// + Iy010 * ln(normal((10-`m')/`sigma') - normal(-`m'/`sigma')) /// + Iy10 * ln(1 - normal((10-`m')/`sigma')) mlsum `lnf' end
Here is example data
Code:
set seed 12553 clear set obs 1000 gen y = runiformint(0,10) gen x = runiformint(0,1) gen z = abs(rnormal() * 50)
Comment