質問

私は使用しようとしています optim() 次の方程式でラムダを解決するrで:

lambda/sigma^2 -ln(lambda/sigma^2)= 1 + 1/q

制約の対象:

ラムダ> sigma^2。

Rでこれをセットアップする方法がわかりません

方程式は凸状のように見えるので、私は代替の最適化ルーチンにもオープンです optim 素晴らしい選択である必要があります。

ありがとうございました!

役に立ちましたか?

解決

方程式を解決しようとしています。制約が満たされているかどうかにかかわらず、Ex Postのみを決定することができます。使用できます uniroot 次のように

f <- function(x,sigma=1,Q=1) {x/sigma^2 - log(x/sigma^2) - 1 - 1/Q}
uniroot(f,c(1,5))

与える

$root
[1] 3.146198

$f.root
[1] 3.552369e-06

$iter
[1] 5

$estim.prec
[1] 6.103516e-05

他のヒント

これはコメントよりも答えであると判断しました。

両方 optimoptimize 関数を最小化するため、あなたがしたいことは、特定のラムダの2乗エラーを返すエラー関数を書き込むことです(たとえば、特定のLambdaの2乗エラーを返します。se(lambda, sigma^2, Q), 、あなたのラムダが最初の議論であることを確認してください)。次に、電話します optim(f = se, lower = sigma^2, sigma^2, Q) また、エラー関数を最小限に抑えるLambdaの値を返します。複数のデータポイント(q、sigma^2ペア)がある場合は、関数を2乗エラーの合計にしたり、使用したりしてみてください nls().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top