我在学用mle编程估计随机前沿模型,程序如下:
capture program drop myhalf
program myhalf
version 11.1
args lnf xb s_u s_v
tempvar e s lamd f
quietly {
gen double `e'=$ML_y1-`xb'
gen double `s'=sqrt(`s_u'^2+`s_v'^2)
gen double `lamd'=`s_u'/`s_v'
gen double `f'=`e'*`lamd'/`s'
replace `lnf'=-ln(`s')+ln(normal(-`f'))-1/(2*`s'^2)*`e'^2
}
end
用它来估计模型除了最大似然值与用frontier命令估计不同之外,其它的完全一样,为了计算出正确的最大似然值
我将其中的:
replace `lnf'=-ln(`s')+ln(normal(-`f'))-1/(2*`s'^2)*`e'^2
根据对数似然函数改为:
replace `lnf'=ln(2/sqrt(2*_pi))-ln(`s')+ln(normal(-`f'))-1/(2*`s'^2)*`e'^2
后运行出错,提示为:
could not calculate numerical derivatives -- discontinuous region with missing values encountered
按理来说我添加的ln(2/sqrt(2*_pi))是一个常数,我就不明白为何会影响到程度的运行?
特向大家请教!!!