我正在使用函數nls.lm {package:minpack.lm}來優化水文模型的參數。該功能工作得很好,但我想用其他objective function (OF)
。通常情況下,obective功能的「Fn」在nls.lm被定義爲在「R」中的nls.lm()中更改目標函數
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))
或其他。問題是nls.lm
最小化表達式sum(x)^2
,只有x
是可修改的。我知道best fit NSE = 1
。因此1 - NSE
創建了一個真正的最小化問題。
順便說一句:從nls.lm
help page的例1是一個很好的例子;有
observed - getPred(p,xx)
被最小化,究竟意味着
sum (observed - getPred(p,xx))^2
由nls.lm
功能最小化,而getPred(p,xx)
回報sim
。
任何建議都會有幫助。提前致謝。 Micha
嗯,爲什麼downvote? (OP確實表示「任何建議都會有幫助」......) –