错误:对象' mle.result'未找到

时间:2017-07-25 12:45:25

标签: r

我写了这些用于模拟和估算的R代码,如下所示。

library(numDeriv)
library(Matrix)
library(LambertW)

alpha=3.5
beta=2.0
theta=0.5
lambda=4.0

n=50
#Generate a random variable from uniform distribution
u<-0
u=seq(0,0.99,0.01)

for (q in 1:n)
{
   x[q]<- (lambda/beta)*
    W((((beta/lambda^2)*log(1-theta*u[q]/(1-u[q]))*
          exp(beta/lambda)))^(1/alpha),branch = 0)
}

BXIIWG_LL <- function(par){
  -sum(log(par[1]*par[2]*x^(par[2]-1)*(1+x)+
   par[3]*par[2]*x^(par[2]-1))*(1-par[4])*(1+x^par[2])^(-par[3]-1)*
        exp(-par[1]*x^par[2])/(1-par[4]
         (1+x^par[2])^(-par[3])*exp(-par[1]*x^par[2]))^(2))

#Maximum likelihood estimation
mle.result <- nlminb(c(alpha,beta,theta,lambda),
    BXIIWG_LL,lower=0,upper=Inf)

我得到的结果如下:

  

(1)错误:对象&#39; mle.result&#39;没找到。
  (2)警告:在W((((beta / lambda ^ 2)* log(1 - theta * u [q] /(1 - u [q])):((/(beta / lambda ^ 2) )* log(1 - theta * u [q] /(1 - u [q]))*    exp(beta / lambda)))^(1 / alpha)是NA或NaN。返回&#39; NA&#39;这些条目。

如何解决这些问题?

1 个答案:

答案 0 :(得分:0)

您的问题是由于

中的结果
  (((beta/lambda^2)*log(1-theta*u[q]/(1-u[q]))*
              exp(beta/lambda)))^(1/alpha)

对于q=2,您获得(-0.001043497)^ 0.2857143 =NaN ..我认为q>2也是如此 这是你真正想要的吗?

另外..您的函数BXIIWG_LL使用x,但它没有收到x作为输入..这是对的吗?

试试这个:     库(numDeriv)     库(矩阵)     库(LambertW)     库(pracma)

alphaDen=7
alphaNum=2
beta=2.0
theta=0.5
lambda=4.0

n=50
#Generate a random variable from uniform distribution
u<-0
u=seq(0,0.99,0.01)
x= c()

for (q in 1:n)
{
  numb =((beta/lambda^2)*log(1-theta*u[q]/(1-u[q]))*exp(beta/lambda))
  numbPow = numb^alphaNum
  sqrtNumb= nthroot(numbPow,alphaDen)
  x[q]<- (lambda/beta)*numb
    W(,branch = 0)
}