0
私はstats.optimize.minimize関数を使用しようとしています。まず、私は非常に簡単なことを試しています。scipy.optimizeの使い方を理解しようとしていますか?
私は定義:
lik1 = lambda n,k,p: math.log(stats.binom.pmf(k,n,p))
私は最小化が私に、k/n == p
で正しいMLEを与えるかどうかを確認しようとしています。
それから私は試してみてください。
optimize.minimize(lik1, 0.5, args=(10,2))
私はn == 10
とk == 2
を想定していますし、p
のための私の推測(引数x0が)0.5
です。次のエラーが表示されます。
fun: nan
hess_inv: array([[1]])
jac: array([ nan])
message: 'Desired error not necessarily achieved due to precision loss.'
nfev: 3
nit: 0
njev: 1
status: 2
success: False
x: array([ 0.5])
私は間違っていますか?
私は別の方法から選択する方法を理解しようとしていますか? scipy.optimize documentationには、使用できるさまざまなメソッドがリストされていますが、メソッドの詳細は記載されていません。たとえば、L-BFGS-Bでは、LとBは何を表しますか? – Arjun
scipyは、あるレベルの方法と理論に精通しているので、問題に適した方法を選択できます。すべての問題に対して単一の最良の方法はなく、さまざまな方法が特定の種類の問題に適しています。メソッド名を検索すると、多くのオンラインリソースがあります。 L-BFGS-Bについては、https://en.wikipedia.org/wiki/Limited-memory_BFGS#L-BFGS-Bを参照してください。 –