-1

次のコードを使用して、正規関数と対数正規関数をプロットしたいと思います。

from scipy.stats import norm, lognorm
import numpy as np
import matplotlib.pyplot as plt
# example: r(t) = ln(1 + R(t)) ~ N(0.05, (0.5)^2))
#          1 + R(t) = exp(r(t)) ~ logNormal(0.05, (0.5)^2)
#          R(t) = e(r(t)) - 1 ~ logNormal(0.05, (0.5)^2) - 1
#  
# plot normal and log normal density
mu = .05
sd = .5
x = np.linspace(mu - 3 * sd, mu + 3 * sd, 100)
plt.plot(x, norm.pdf(x, mu, sd), label="Normal") 
plt.plot(exp(x)-1, lognorm.pdf(exp(x), mu, sd), '--', label="Log-Normal")

なにが問題ですか ?私は次のようなものを期待しています:ノルムvs対数正規

4

2 に答える 2

3

lognorm.pdf関数のパラメーターの順序は、あなたが思っているものではありません。順序を次のように逆にすると lognorm.pdf(exp(x), sd, mu)、期待していたプロットが得られます。

編集:ドキュメントpdf(x, s, loc=0, scale=1)

于 2013-01-11T15:20:17.900 に答える
2

Pythonのドキュメントを読むこと/関数呼び出しがどのように機能するかについての簡単な説明:

デフォルト値のない引数、つまりsome_fun(a,b)、必要な(またはPythonは引数の数に関するエラーを発生させる)位置引数であり、関数呼び出しの位置に基づいて割り当てられます。デフォルト値がある場合、つまり、some_other_fun(a,b,c=None,d=0)それらはキーワード引数と呼ばれ、オプションです。オプションの引数は2つの方法で使用できます。キーワードを使用しない場合、それらは位置引数のように扱われます。シグニチャ内の引数の総数より少ない引数を指定すると、それらの値が順番に割り当てられ、残りの引数はデフォルト値を取ります。また、キーワードフォームを使用して、リスト内のすべての引数の前に値を指定せずに、必要なオプションの引数だけを割り当てることもできますsome_other_fun(1,2,d=3)some_other_fun(1,2,3)

したがって、あなたが呼び出すとき、あなたは、、、lognorm.pdf(x,sd,mu)としてバインドしていますが、あなたと同じように、、、x=xs=sdloc=muscale=1norm.pdf(x,mu,sd)x=xloc=muscale=sd

チュートリアルのこのセクションも参照して ください。

于 2013-01-11T16:10:40.753 に答える