2

scipy からの対数ノルム分布があり、そのパラメーターは既知です。

import scipy

log_norm_obj = scipy.stats.lognorm([log_mu], shape=sigma)

次の式を満たす ax を解く必要があります。

x = (1 - log_norm_obj.cdf(x)) / log_norm_obj.pdf(x)

numpy/scipy を使用してこれを行うにはどうすればよいですか? ありがとう!

4

1 に答える 1

4

scipy.optimizeを使用します。scipy 0.11 以降では、新しい関数minimizeまたはminimize_scalar. あなたの x がスカラーであると仮定すると、これを行う方法のサンプルコードは次のとおりです。

from scipy.optimize import minimize_scalar

def f(x):
    return (1 - log_norm_obj.cdf(x)) / log_norm_obj.pdf(x) - x

result = minimize_scalar(f)        
print result.x 
# this would print your result

上記は、デフォルトであるBrent のメソッドを使用します。また、ゴールデン メソッド、またはブレント メソッドの制限付きバージョンを使用することもできます。後者は、関数が特定のドメインでのみ定義されている場合、または特定の間隔でソリューションが必要な場合に役立ちます。この例:

result = minimize_scalar(f, bounds=(0, 10.), method='bounded')

関数がスカラーの代わりにベクトルを取る場合、 を使用して同様のアプローチを取ることができますminimize。scipy がバージョン 0.11 よりも古い場合は、fmin.

于 2012-12-19T05:03:51.877 に答える