2013-01-22 12 views
5

私は正規分布に関連するログ正規分布から取った10000の乱数を生成しようとしていますが、平均= 0.3と標準を持っています。 dev。 = MATLABでは0.05です。MATLABで対数正規乱数を生成しますか?

私は内蔵のlognrnd機能を使用しています。

私の試みは行うことです:私はhist(R)を使用してRのヒストグラムをプロット

しかし

R = lognrnd(0.3,0.05,10000,1)

、関連付けられたプロットは、対数正規ではない正常です。

どこがお粗末ですか?平均= 0.3および標準偏差dev。 =正規分布の0.05であるが、生成された対数正規数が平均= 0.3および標準を有するべきではない。 dev = 0.05?

ありがとうございます。

答えて

6

生成する数値は、実際には正規分布によるものです。プロットはあなたのパラメータに似ています。 hist(R)hist(log(R))を比較すると、形状はほぼ同じです。平均値との偏差については

lognrnd documentationを見てみましょう:

mu and sigma are the mean and standard deviation, respectively, 
of the associated normal distribution. 

は、したがって番号が異なる平均と偏差を有することが期待される生成されました。

編集:Matlabで対数正規分布パラメータを直接指定できるかどうかはわかりませんが、もう一方のパラメータから1組のパラメータを派生させることはできます。対数正規変数のMとV望まれているパラメータを仮定すると、あなたはmusigma使用して次の式を計算することができます。

x = 1 + V/M^2 
sigma = sqrt(log(x)) 
mi = log(M/sqrt(x)) 

は逆変換のためwikipediaを参照してください。

+0

いいえ - 私は平均= 0.3と標準を持つ対数正規分布から乱数を生成したい場合はどうしますか? dev = 0.05? – Zack

+1

シグマを増やす(例えば、.5)と、より洗練されたヒストグラム 'hist(R、100)'を使用すると、予想していた歪んだ対数正規曲線に近いものが表示されます。 – RussH

+0

お受け取りいただきありがとうございますが、計算に間違いがありました。更新された数式を参照してください(私はそれらをテストして結果は正しいようです)。 – rburny

関連する問題