简体   繁体   中英

How to fit a normal inverse gaussian distribution to my data using optim

Please forgive my lack of knowledge,.I would be very thankful for some help. Here is my problem: I was using optim to estimate parameters of a model and I get this error message "Error in optim(x0, fn = riskll, method = "L-BFGS-B", lower = lbs, upper = ubs, :
L-BFGS-B needs finite values of 'fn'"

Below is the R code I have written.

library('GeneralizedHyperbolic')
data=read.table(file="MSCI_USA.csv",sep=',',header=T)
data=data[1:8173,]
#starting value
x0 <- c(-0.011,0.146, 0.013,   0.639, 0.059,0.939,  -0.144  ,  1.187,    1.601,          -0.001)
#lower bound and upper bound
lbs <- c(-5,    -5,    -5,  -0.99999, 0.00001,   0,   -1,    0.1,    1.2000001,    -2)
ubs<-  c( 5,     5,    10,   0.99999,    5,      2,     0,    3,      1000,        10)
#the likelihood function
riskll <- function(data,para) {
m0 <- para[1]
m1 <- para[2]
omega <- para[3]
tau <- para[4]
a <- para[5]
b <- para[6]
beta <- para[7]
theta <- para[8]
gamma <- para[9]
phi <- para[10]
T <- nrow(data)
ret <- data[,2];
rate <- data[,3]
exret=100*(ret+1-((rate/100)+1)^(1/365))

h = rep(0,T);
vx = rep(0,T);
h[1] = 10000*exret[1]^2
vx[1] = (exret[1]-m0-(m1+beta*((gamma^0.5)/(gamma^2+beta^2)^0.5))*h[1])/h[1]
for ( i in (2:T) ) {
h[i] = (omega+a*(abs(h[i-1]*vx[i-1])-tau*h[i-1]*vx[i-1])^theta+b*(h[i-  1]^theta))^(1/theta)    
vx[i] = (exret[i]-phi*exret[i-1]-m0-(m1+beta*((gamma^0.5)/(gamma^2+beta^2)^0.5))*h[i])/h[i]  
}

mu = -1*beta*((gamma^0.5)/(gamma^2+beta^2)^0.5)
delta=((gamma^1.5)/(gamma^2+beta^2)^0.5)
alpha=gamma
beta=beta
param = c(mu, delta, alpha, beta)
riskll <- -1*sum(log(dnig(vx,param=param)))

return(riskll)
}


#optimization
optim(x0,fn=riskll,method ="L-BFGS-B",lower=lbs,upper=ubs, data = data)

I'm not certain, but I'd look carefully at this line:

riskll <- -1*sum(log(dnig(vx,param=param)))

The log function approaches negative infinity as its argument approaches zero. And it's not defined at all for negative arguments. Perhaps the error message is warning you about this possibility.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM