0

次のようにパッケージmaxLikを使用して尤度関数を最適化しようとしています。

library(fExtremes)
theta0 <- c(0.1, 1)
theta1 <- c(0.1, 2)

set.seed(20150518)

X <- matrix(0, nrow=1000, ncol=1000)

for(i in 1:1000){
  X[i, ] <- c(rgpd(900, xi=-theta0[1], beta=theta0[2]), 
              rgpd(100, xi=-theta1[1], beta=theta1[2]))
}

library(maxLik)

loglik <- function(param){
  shape <- param[1]
  scale <- param[2]
  sum(dgpd(x, xi=-shape, beta=scale, log=TRUE))
}

scale.mle <- rep(0, 1000)

for(i in 1:1000){
  x <- X[i, ]
  scale.mle[i] <- as.numeric(maxLik(logLik=loglik, start=c(theta0[1], theta0[2]), fixed=1)$estimate[2])
}

ただし、次のエラー メッセージが引き続き表示されます。

Error in maxNRCompute(fn = logLikAttr, fnOrig = fn, gradOrig = grad, hessOrig = hess,  : 
  NA in the initial gradient

これを修正するにはどうすればよいですか? それは可能ですか?また、Rこれを最適化するために使用できる他の関数は何ですか?

4

0 に答える 0