我正在使用函数 nls.lm {package: minpack.lm} 来优化水文模型的参数化。该功能运行良好,但我想使用另一个objective function (OF)
. 通常,nls.lm 中的目标函数“fn”定义为
A function that returns a vector of residuals, the sum square of which
is to be minimized. The first argument of fn must be par.
现在我想使用Nash-Sutcliff-Efficiency
定义为
NSE <- 1 - (sum((obs - sim)^2) / sum((obs - mean(obs))^2))
或其他OF。问题是nls.lm
最小化表达式sum(x)^2
,只有x
是可修改的。我知道best fit NSE = 1
. 因此1 - NSE
产生了一个真正的最小化问题。
顺便说一句:nls.lm
帮助页面中的示例 1是一个很好的示例;那里
observed - getPred(p,xx)
被最小化,实际上意味着什么
sum ( observed - getPred(p,xx) )^2
被nls.lm
函数最小化,而getPred(p,xx)
返回sim
.
任何建议都会有所帮助。提前致谢。米查