2017-07-25 9 views
1

私は以下のシミュレーションと評価のためにこれらのRコードを書いています。次のようにエラー:オブジェクト 'mle.result'が見つかりません

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) Error: object 'mle.result' not found.
(2) warnings: In W((((beta/lambda^2) * log(1 - theta * u[q]/(1 - u[q])) : Some values of (((beta/lambda^2) * log(1 - theta * u[q]/(1 - u[q])) * exp(beta/lambda)))^(1/alpha) are NA or NaN. Returning 'NA' for these entries.

どのように私はこれらの問題を解決するのですか?

+1

私はあなたのコードを実行したときに、私が取得する前に限り 'for'ループとして取得します'エラー:オブジェクト 'x'が見つかりません。 'x'の定義を含めるようにコードを編集してください... –

答えて

0

あなたの問題は、あなたが(-0.001043497)^ 0.2857143 =NaN得るq=2については

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

に結果に..ですし、私は、これは、これはあなたが本当に欲しいものであるq>2 のためにも同じであると仮定しますか?

また、あなたの関数BXIIWG_LLxを使用しますが、入力として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) 
} 
+0

これらのエラーを検出していただきありがとうございます。どうしたらこれらのエラーを解決できますか? – Soma

+0

私は答えを – Ale

+0

ありがとうございました。君はかけがえのない人です。素晴らしい一日を。 – Soma

関連する問題