optimize()函数无法识别tol =参数

时间:2014-03-20 10:19:52

标签: r optimization

我正在尝试使用函数optimize()来优化一个名为SSE的函数的第一个参数(它调用其他两个函数)但是无论参数tol =(我以不同的方式设置为测试)都给我总是相同的结果。这是函数(和子函数)的代码

SSE <- function(lambda,alpha,y)
{
N <- dim(y)[2]
len <- dim(y)[1]
#########CHECK AGAIN
z <- jglog(y,alpha,lambda)
s <- 0
mean_spec <- apply(z,1,mean,na.rm=T)

s <- sum((z-mean_spec)^2)

cat(lambda,"\t",s,"\n")  #### HERE I WRITE THE VALUES ON THE SCREEN

return(s)
}

glog <- function(y,alpha,lambda)
    z <- log((y-alpha)+sqrt((y-alpha)^2+lambda))

jglog <- function(y,y0,lambda)
{
    z <- glog(y,y0,lambda)
    D <- log(sqrt((y-y0)^2+lambda))

    gmn <- exp(apply(D,2,mean,na.rm=T))
    zj <- z*gmn
    return(zj)
}

这是main中调用函数优化的代码

lambda <- optimize(SSE,interval=c(low_lim,upper_lim),y0,x,tol=step_threshold)

在这种情况下,low_lim是-1143210927,upper_lim是5.023143e + 24,而step_threshold是1e-16。但正如我之前提到的,输出总是相同的(即使我设置tol = 100),具体范围从3.104473e + 24到37447978334,步骤绝对不等于tol给出lambda <0的结果。我做错了吗?

0 个答案:

没有答案