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 を使用してこれを行うにはどうすればよいですか? ありがとう!
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 を使用してこれを行うにはどうすればよいですか? ありがとう!
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
.