全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4141 4
2016-12-13
悬赏 100 个论坛币 未解决
setwd=("D:/Rdata/")
sj<-read.table("lwjj.txt",header=T)
x=sj$r
n=length(x)
loglik=function (para){
  u=0
  for(i in 1:n) {
    if (i==1) {
      sigma=0.01
      res=0.01
    }
    if(i>1) {
      if (res<0) {
        s=1
      }
      else{
        s=0
      }
      sigma= para[1]+para[2]*sigma+para[3]*res+para[9]*s*sigma
      res= x-para[4]-sigma*para[5]-(para[8]+para[7]*sigma)*x[i-1]
    }
    log=log(para[6])-log(2)+0.5*log(gamma(3/para[6]))-1.5*log(gamma(1/para[6]))-0.5*log(sigma)-((gamma(3/para[6])*res/(sigma*gamma(1/para[6])))^(para[6]/2))
     u=u+log
  }
  return(u)
}
library(miscTools)
library(maxLik)
ll=maxLik(loglik,start=c(0.3,0.8,0.05,0.0003,0.4,2,-0.2,0.2,0.05))
summary(ll)
数据我已经上传  求大神帮忙解决下


二维码

扫码加我 拉你入群

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

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

全部回复
2016-12-13 08:35:10
就是在最后估计时候显示出Error in maxNRCompute(fn = function (theta, fnOrig, gradOrig = NULL, hessOrig = NULL,  :
  NA in the initial gradient
因为我没有学过数值计算  不懂算法- -
二维码

扫码加我 拉你入群

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

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

2016-12-14 14:19:40
这并不是算法的问题。假设你的似然函数编写正确,那么出现这个错误就是computational问题,比如log里面的值是负的,这个较为常见。
二维码

扫码加我 拉你入群

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

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

2016-12-15 09:29:27
> loglik=function (para){
+   u=0
+   for(i in 1:777) {
+     if (i==1) {
+       y[i]=0.0004
+       z[i]=0.01
+     }
+     else {
+       if (z[i-1]<0) {
+         s=1
+       }
+       else{
+         s=0
+       }
+       y[i]= para[1]+para[2]*y[i-1]+para[3]*z[i-1]^2+para[9]*s*z[i-1]^2
+       z[i]= x[i]-para[4]-y[i]*para[5]-(para[8]+para[7]*y[i])*x[i-1]
+     }
+     log=log(para[6])-log(2)+0.5*log(gamma(3/para[6]))-1.5*log(gamma(1/para[6]))-0.5*log(y[i])-((gamma(3/para[6])*z[i]/(y[i]*gamma(1/para[6])))^(para[6]/2))
+     u=u+log
+   }
+   return(u)
+ }
> loglik(c(0.3,0.8,0.05,0.0003,0.4,2,-0.2,0.2,0.05))
[1] -779.3372
实际上我带入一组初值时候 是可以计算出结果的 所以我感觉计算可能没有问题 会不会是算法的问题 比如说步长设置太大 因为我的参数小的可能会达到小数点后3 到4位的
二维码

扫码加我 拉你入群

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

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

2018-11-22 22:01:07
cbw1243 发表于 2016-12-14 14:19
这并不是算法的问题。假设你的似然函数编写正确,那么出现这个错误就是computational问题,比如log里面的值 ...
您好,如果程序正确,在写似然函数时,利用if语句排除似然函数值无限大的情况呢?
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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