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