首页 > 解决方案 > 使用 optimr 最小化函数

问题描述

我正在尝试从 optimr 包中运行 optimr 函数。我的代码是

library(optimr)

#____function to compute Sum of Square Errors 
SSE=function(par,T) {
    options(warn = -1)

    nr = dim(T)[1]   # number of redds (rows)
    S  = numeric(nr) # redd survival vector
    TC = par[1]    
    bt = par[2] 

    #--- temperature deviations dT=(Ti-TC)
    dT = sweep(T,1,TC,FUN='-') 
    dT = ifelse(is.na(dT)|dT<0,0,dT)

    h = bt*dT 

    for(i in 1:nr) S[i] = 1-prod(exp(-h[i,]))


    SSE = sum((S-mean(S))^2)  # same as var(S)*(nr-1)

   options(warn = 0)
}

#___ Data
Temp = matrix(round(rnorm(2000,12,1.5),2), ncol=20)  #fictious data used   
hist(Temp,col='grey60')

#____ minimize SSE via optimizer
o = optimr(par=c(8,.01),fn=SSE,T=Temp,method='Nelder-Mead') 
print(cbind(Tcrit=o$par[1],bt=o$par[2]),digits=3)

问题是无论我给命令什么初始参数值,它都会返回相同的初始值。我知道如果起始值在平面上,这些值不会改变,但无论我给它什么值,都会返回相同的值。有什么建议么?

标签: r

解决方案


推荐阅读