You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.4 KiB
Plaintext

*! Alfonso Miranda Caso Luengo (SJ4-1: st0057)
*! Version 2.0 June 26 2003
program define exspoisson_ll
args todo b f
tempname lnsigma
tempvar xb zb
local y "$ML_y1"
local d "$S_edum"
mleval `xb' = `b', eq(1)
mleval `zb' = `b', eq(2)
mleval `lnsigma' = `b', eq(3)
scalar `lnsigma' = cond(`lnsigma'<-20,-20,`lnsigma')
tempname sma u
scalar `sma' = exp(`lnsigma')
tempvar F p r1 r2 r3 r4
qui {
gen double `F' = . if $ML_samp
gen double `p' = 0 if $ML_samp
gen double `r1' = 0 if $ML_samp
gen double `r2' = 0 if $ML_samp
gen double `r3' = 0 if $ML_samp
gen double `r4' = 0 if $ML_samp
local m = 1
while `m' <= $S_quad {
scalar `u' = sqrt(2)*`sma'*scalar(x`m')
replace `r1' = `xb' + `u' if $ML_samp
replace `r2' = exp(`r1')^(`y')*exp(-exp(`r1')) if $ML_samp
replace `r3' = `r2'/exp(lngamma(`y'+1)) if $ML_samp
replace `r4' = `d'*norm(`zb') + (1-`d')*norm(-`zb')
replace `F' = `r3'*`r4' if $ML_samp
replace `p' = `p' + scalar(w`m')*`F' if $ML_samp
local m = `m' + 1
}
replace `p'= (1/sqrt(_pi))*`p' if $ML_samp
replace `F' = log(`p') if $ML_samp
mlsum `f' = `F' if $ML_samp
}
end
exit