楼主: 扩散带
4238 4

[问答] R语言最极大似然估计时候出现NA in the initial gradient [推广有奖]

  • 0关注
  • 0粉丝

已卖:5份资源

大专生

21%

还不是VIP/贵宾

-

威望
0
论坛币
3083 个
通用积分
3.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3815 点
帖子
6
精华
0
在线时间
89 小时
注册时间
2015-7-27
最后登录
2024-10-16

楼主
扩散带 发表于 2016-12-13 08:33:31 |AI写论文
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)
数据我已经上传  求大神帮忙解决下


关键词:gradient Initial 极大似然估计 似然估计 极大似然 gradient initial

沙发
扩散带 发表于 2016-12-13 08:35:10
就是在最后估计时候显示出Error in maxNRCompute(fn = function (theta, fnOrig, gradOrig = NULL, hessOrig = NULL,  :
  NA in the initial gradient
因为我没有学过数值计算  不懂算法- -

藤椅
cbw1243 发表于 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位的

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

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 11:42