Я пытаюсь запустить функцию 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)
Проблема в том, что независимо от того, какие начальные значения параметров я даю команде, она возвращает одинаковые начальные значения.Я знаю, что если бы начальные значения были на плоской поверхности, эти значения не изменились бы, но независимо от того, какие значения я им даю, возвращаются те же самые.Есть предложения?