2013-01-23 2 views
3

hydrological 모델의 매개 변수를 최적화하기 위해 nls.lm {package : minpack.lm} 함수를 사용하고 있습니다. 이 함수는 잘 작동하지만 다른 objective function (OF)을 사용하고 싶습니다. 일반적으로 nls.lm에서 obective 기능 "FN은"지금은"R"의 nls.lm()에서 목적 함수 변경

NSE <- 1 - (sum((obs - sim)^2)/sum((obs - mean(obs))^2)) 

또는 다른으로 정의 된 Nash-Sutcliff-Efficiency를 사용할

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. 

으로 정의된다. 문제는 nls.lm이 표현식 sum(x)^2을 최소화하고 x 만 수정할 수 있다는 것입니다. 나는 그 best fit NSE = 1을 알고있다. 따라서 1 - NSE은 실제 최소화 문제를 만듭니다.

BTW : nls.lmhelp page의 예제 1이 좋은 예입니다.

observed - getPred(p,xx) 

실제로

sum (observed - getPred(p,xx))^2 

getPred(p,xx) 반환 sim, 반면 nls.lm 기능이 최소화되는 것을 무엇을 의미하는지,이 최소화됩니다.

어떤 제안이 도움이 될 것입니다. 미리 감사드립니다. Micha

답변

1

nls.lm (및 관련 함수 nls 및 nlsLM)은 잔차의 제곱 제곱을 최소화하도록 설계되었습니다. 해결하고자하는 문제에 대해서는 범용 최소화 기의 응용 프로그램을 사용해 보겠습니다.

'너무 어렵지 않습니다'(즉, 하나의 전체 최소값이 매끄 럽 으면) '최적화'를 적용 할 수 있습니다 ('Nelder-Mead'및 'BFGS '옵션), 또는'minqa '패키지의'bobyqa '함수를 사용할 수 있습니다.

글로벌 옵티 마이저가 필요한 문제인 경우 패키지 'GenSA', 'rgenoud'패키지의 'genoud'기능 또는 'DEoptim'패키지의 'DEoptim'기능을 사용해보십시오. 다른 옵션 중에서. 'Global Optimization in R'에 대한 리뷰는 Journal of Statistical Software에서 곧 다루어지며, 해당 기능에 대한보다 완전한 개요를 제공 할 것입니다.

+0

흠, 왜 downvote? (OP는 "어떤 제안이라도 도움이 될 것"이라고 말했습니다 ...) –