Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用optim将正态逆高斯分布拟合到我的数据_R - Fatal编程技术网

R 如何使用optim将正态逆高斯分布拟合到我的数据

R 如何使用optim将正态逆高斯分布拟合到我的数据,r,R,请原谅我缺乏知识,我非常感谢你的帮助。 我的问题是: 我使用optim来估计模型的参数,得到了这个错误消息 “optim中的错误(x0,fn=riskl,method=“L-BFGS-B”,下限=lbs,上限=ubs,: L-BFGS-B需要有限的“fn”值 下面是我写的R代码 library('GeneralizedHyperbolic') data=read.table(file="MSCI_USA.csv",sep=',',header=T) data=data[1:8173,] #sta

请原谅我缺乏知识,我非常感谢你的帮助。 我的问题是: 我使用optim来估计模型的参数,得到了这个错误消息 “optim中的错误(x0,fn=riskl,method=“L-BFGS-B”,下限=lbs,上限=ubs,:
L-BFGS-B需要有限的“fn”值

下面是我写的R代码

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)
library('GeneralizedHyperbolic')
data=read.table(file=“MSCI_USA.csv”,sep=”,“,header=T)
数据=数据[1:8173,]
#起始值

x0我不确定,但我会仔细看这行:

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

risk我会尝试使用Julia。它更简单、更快。