我在尝试使用优化函数查找配置文件对数似然函数时遇到错误。我正在使用具有两个未知参数并取决于几个已知参数的广义Pareto分布。风险值和形状参数xi。我正在尝试编写一个函数,该函数将同时使用两个参数的一些初始值,并在固定VaR的情况下优化xi上的对数似然函数。最终,我希望输出为VaR的对数似然函数的最大值。我试图重新创建代码,以便我可以理解它。但是我也遵循其他人的代码,他们大概是对他们进行了一些模拟。但是,逐字复制其代码会产生错误。
下面的代码以一些构造的参数开头。然后有一个函数b定义了GPD中使用的参数。然后,我们定义对数似然函数prologlik,该函数采用两个未知参数xi和xVaR。当我选择一些样本值并手动计算b和prologlik的输出时,我得到的值与代码相同。但是,当我运行函数pllMax(2,2)时,出现“非有限有限差分值[1]”错误。有人可以告诉我如何解决此问题,并编写一个函数,该函数可以使用参数xi和xVaR,并在xVaR保持固定的情况下返回xi上对数似然的最大值吗?
library(extraDistr)
u <- 1
a <- .75
frac <- .5
y <- c(3,3)
data <- y - u
b <- function(xi, xVaR){
k <- (1-a)/frac
beta <- xi*(xVaR-u)/(k^(-xi)-1)
return(beta)
}
prologlik <- function(xi,xVaR){
beta <- b(xi, xVaR)
out <- sum(dgpd(data, mu=0, sigma=beta, xi=xi, log=TRUE))
return(out)
}
pllMax <- function(xi,xVaR){
optimfit <- optim(xi, fn=prologlik, xVaR, gr=NULL, method="BFGS")
xi.est <- optimfit$par
llmax <- -1*prologlik(xi.est, xVaR)
output <- c(xi.est, llmax)
return(output)
}
pllMax(2,2)