2016-05-02 26 views
0

私は以下のオプションを考えました。平均値がゼロで標準偏差がσ= 2 dBで、対数正規分布(つまりdBでの正規分布)を得る方法

numpy.random.lognormal(0、2、600) - このメソッドの疑問は、dB単位の入力パラメータですか?そうであれば、μ= 0、およびシグマ= 2となる。入力パラメータが線形値であると想定される場合、入力パラメータはμ= 1、σ= 10^0.2でなければならない。別の質問は、結果のランダムな値が線形またはdBであるかどうかです。それらが線形であれば、これらの値の10 * math.log10()を取る必要があります。

http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.lognormal.htmlのマニュアルでは、入力パラメータが線形であるかdBであるか、出力結果の性質についての情報は何も示されていません。

答えて

2

xがログで正常に配信されている場合は、log(x)が通常配布されます。あなたはパラメータはその後、あなただけのいくつかのサンプルを描くことができ参照してくださいどのようなわからない場合は、それらのログを取り、その後、平均値と標準偏差を計算する:

import numpy as np 

np.random.seed(0) 

mu, sigma = 1, 2 
x = np.random.lognormal(mu, sigma, 10000) 
logx = np.log(x) 

print(logx.mean(), logx.std()) 
# 0.963132559683 1.97511313635 

のでnp.random.lognormal(mu, sigma, ...)は、その対数である確率変数からサンプルを描きます正規分布平均はmuであり、標準偏差はsigmaである。つまり、musigmaが対数単位で指定されている場合、サンプルは線形単位になります。

+0

あなたが話しているログ値は自然対数ですか?私はlog10についてtalkongです。 –

+0

まあ、 'log10(x)'も平均と標準偏差が違うにもかかわらず正規分布になります。 log10単位で 'mu'と' sigma'を指定したい場合は、 'lognormal'パラメータを基数10からbase * e *に変換することができます(例えば、' mu/np.log10(np.e) ')、あるいはそれらのパラメータを使って正規分布からサンプルし、その指数に10を上げます(例えば '10 ** np.random.normal(mu、sigma、...)))。 –

関連する問題