Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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函数的价值与PAR解释问题_R_Optimization_Sampling_Minimize_Quantitative Finance - Fatal编程技术网

R中OpTIM函数的价值与PAR解释问题

R中OpTIM函数的价值与PAR解释问题,r,optimization,sampling,minimize,quantitative-finance,R,Optimization,Sampling,Minimize,Quantitative Finance,我尝试过用optim最小化R中的函数。问题是我不确定应该对输出值给出什么样的解释。当我试图估计一个参数,使我的函数为0时,我真的不明白为什么我的函数的值与它估计的参数不同于0。 当我假设下边界(上边界和下边界)(它们不是正确的边界)时,我的函数的值随着它估计的参数而降低。 我应该担心函数的价值吗 这是我第一次优化函数,我真的很感谢你的帮助! 我提供代码和输出 calcr <- function(time, price, freq) { input <- data.table(time

我尝试过用optim最小化R中的函数。问题是我不确定应该对输出值给出什么样的解释。当我试图估计一个参数,使我的函数为0时,我真的不明白为什么我的函数的值与它估计的参数不同于0。 当我假设下边界(上边界和下边界)(它们不是正确的边界)时,我的函数的值随着它估计的参数而降低。 我应该担心函数的价值吗

这是我第一次优化函数,我真的很感谢你的帮助! 我提供代码和输出

calcr <- function(time, price, freq) {
input <- data.table(time=time,price=price);
input[order(time),];
out <- input[,.(return=log(price[length(price)]/price[1])),
           by=.(time=as.POSIXct(trunc(unclass(time)/freq)*freq,
                                origin='1970-01-01'))];
print(input)
print(out)
return(out);
}

target.fn <- function(m,data) {
trade.interval <- data[,.(interval=difftime(max(time,na.rm=T),
                                          min(time,na.rm=T),
                                          units = "secs")),
                     by=day(time)][,mean(interval,na.rm=T)];
 r <- calcr(time=data$time,price=data$price,
         freq=unclass(trade.interval)/m);
a <- (mean(r$return^2,na.rm=T))^2;
b <- -3*a+2*(mean(r$return^4,na.rm=T));
q  <- r[,.(qi=m/3*sum(return^4)),by=day(time)][,mean(qi,na.rm=T)];
return(abs(2*m^3*a+m^2*b-2*q));
}

##lower=6,upper=23398
optim(par=60,fn=target.fn,data=aa[,.(time,price=nbbomidstart)],
  method='Brent',lower=6,upper=23300);

多谢各位

实际上还有另一个问题。问题在于数据中引入了一些噪音。一旦我解决了这个问题,我的代码实际上运行得很好,函数的值趋于0,除非我使用了一些奇怪的价格。这个问题是由使用中间报价起始价格而不是最终价格引起的,这不会在函数中引入太多噪音

你是在试图优化一个函数,还是在试图找到函数的零点?这是两件不同的事情。前者寻求
x
的值,使得
f(x)
最大;后者搜索
x
,例如
f(x)=0
。你的目标是什么?在后一种情况下,您应该检查
?uniroot
。我正在尝试查找函数的零。正如你所说的f(x)=0。那么在这种情况下,我应该使用另一个优化函数吗?
$`par`
[1] 4641.689

$value
[1] 56480.07

$counts
function gradient 
      NA       NA 

$convergence
[1] 0

$message
NULL