首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:找不到对象'mle.result‘

错误:找不到对象'mle.result‘
EN

Stack Overflow用户
提问于 2017-07-25 12:45:24
回答 1查看 194关注 0票数 1

我为仿真和估计编写了这些R码,如下所示。

代码语言:javascript
复制
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)错误:找不到对象'mle.result‘。 (2)警告:在W(β/lambda^2)*log(1-theta*uq/(1-Uq))中):((β/lambda^2)*log(1-theta*uq/(1-Uq))*exp(β/lambda))^(1/alpha)的一些值是NA或NaN。返回这些条目的'NA‘。

我如何解决这些问题?

EN

回答 1

Stack Overflow用户

发布于 2017-07-25 13:18:16

你的问题是由于

代码语言:javascript
复制
  (((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)库(实践)

代码语言:javascript
复制
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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45303735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档