全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
16628 17
2013-09-21
各位,我使用stata的ML写了一个极大使然程序,但是在运行过程中出现

initial:       log likelihood =     -<inf>  (could not be evaluated)
feasible:      log likelihood = -3110.9551
rescale:       log likelihood = -553.68092
rescale eq:    log likelihood = -300.68297

然后报错:
could not calculate numerical derivatives -- flat or discontinuous region encountered
应该怎么调试?谢谢!
ml check没有问题
我是用了几个数据去测试这段程序,都是迭代到第四步就断了,应该还是程序有问题,求助大家

*******DCC.ado的ML程序如下*****************

  cap program drop DCC
  program define DCC
     version 12.1        
     args  lnf alpha mu s_n s_e
     tempvar s_ne rho t1 t2 s1 s2 s3 u1 u2 m1 m2 r1 r2 n2 n3                                 
     quietly {  
        gen double `s_ne' = sqrt(`s_n'^2+`s_e'^2)
        gen double `rho' = `s_n'/`s_ne'
        gen double `t1' = (ln(50)-ln(.4350549)*`apha'-ln(8005.487)*`mu')/`s_n'
        gen double `t2' = (ln(200)-ln(.458)*`apha'-ln(8006.987)*`mu')/`s_n'      
        gen double `s1' = (ln($ML_y1)-ln(.4350549)*`apha'-ln(8005.487)*`mu')/`s_ne'   
        gen double `s2' = (ln($ML_y1)-ln(.458)*`apha'-ln(8006.987)*`mu')/`s_ne'
        gen double `s3' = (ln($ML_y1)-ln(.528)*`apha'-ln(8017.487)*`mu')/`s_ne'
        gen double `u1' = (ln($ML_y1)-ln(50))/`s_ne'   
        gen double `u2' = (ln($ML_y1)-ln(200))/`s_ne'
        gen double `m1' = (ln(50)-ln(.458)*`apha'-ln(8006.987)*`mu')/`s_n'   
        gen double `m2' = (ln(200)-ln(.528)*`apha'-ln(8017.487)*`mu')/`s_n'
        gen double `r1' = (`t1'-`rho'*`s1')/sqrt(1-`rho'^2)  
        gen double `r2' = (`t2'-`rho'*`s2')/sqrt(1-`rho'^2)  
        gen double `n2' = (`m1'-`rho'*`s2')/sqrt(1-`rho'^2)  
        gen double `n3' = (`m2'-`rho'*`s3')/sqrt(1-`rho'^2)  
        replace `lnf' = ln(exp(-(`s1'*`s1'/2))/(sqrt(2*_pi)*`s_ne')*normal(`r1')+                   ///
                            exp(-(`s2'*`s2'/2))/(sqrt(2*_pi)*`s_ne')*(normal(`r2')-normal(`n2'))+   ///
                            exp(-(`s3'*`s3'/2))/(sqrt(2*_pi)*`s_ne')*normal(`n3')+                 ///
                            exp(-(`u1'*`u1'/2))/(sqrt(2*_pi)*`s_e')*(normal(`m1')-normal(`t1'))+          ///
                            exp(-(`u2'*`u2'/2))/(sqrt(2*_pi)*`s_e')*(normal(`m2')-normal(`t2')))
    }  
end

******************************

比如我用auto这个数据来测试
*******do文件****************************
ml model lf DCC (ML: price= mpg rep78 headroom trunk weight length turn displacement gear_ratio foreign ) (alpha: ) (mu: ) (s_n: ) (s_e:)
ml max
****************
报错如下
*********************
initial:       log likelihood =     -<inf>  (could not be evaluated)
feasible:      log likelihood = -1392.6704
rescale:       log likelihood = -343.03737
rescale eq:    log likelihood =  879.12535
could not calculate numerical derivatives -- flat or discontinuous region encountered

********************
ml check没有问题

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-9-22 17:51:47
可以看出来,它实际上还没有开始迭代,因为正常的是这样的:

initial:       log likelihood =     -<inf>  (could not be evaluated)
feasible:      log likelihood = -1529.2216
rescale:       log likelihood = -704.83626
rescale eq:    log likelihood = -703.83342
******开始迭代
Iteration 0:   log likelihood = -703.83342  
Iteration 1:   log likelihood = -695.71582  
Iteration 2:   log likelihood = -695.71287  
Iteration 3:   log likelihood = -695.71287  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-22 19:36:08
有一个问题:
args  lnf alpha mu s_n s_e   /*这里有是4个参数*/

ml model lf DCC (ML: price= mpg rep78 headroom trunk weight length turn displacement gear_ratio foreign ) (alpha: ) (mu: ) (s_n: ) (s_e:)   /*这里需要写几个方程呢?一定要写4个吗?*/

应该是不一定,那么原则是什么?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-23 16:22:08
我现在怀疑是不是要用d0或者d1,而不是lf
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-26 11:06:59
楼主问题解决了吗?我也遇到类似的问题,是方程数量太少还是因为什么呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-26 11:54:01
最后没有解决 用的其他软件做的ml
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群