5

正規分布に関連付けられている対数正規分布から取得した 10000 の乱数を生成しようとしています。開発者 = MATLAB では 0.05。

組み込みlognrnd関数を使用しています。

私の試みは次のことです:

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

Rただし、 を使用してヒストグラムをプロットするhist(R)と、関連するプロットは正規であり、対数正規ではありません。

私はどこを台無しにしていますか?平均= 0.3および標準の場合。開発者 = 正規分布の 0.05、生成された対数正規数に平均 = 0.3 と std があるべきではありません。dev = 0.05?

みんなありがとう。

4

2 に答える 2

6

生成する数値は、実際には対数正規分布からのものです。プロットは、パラメーターの場合と同じように見えます。比べhist(R)てみてくださいhist(log(R))- 形状はほとんど同じです。

平均と偏差については、lognrnd のドキュメントをご覧ください。

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

したがって、生成された数値の平均と偏差は異なると予想されます。

編集: Matlab で対数正規分布パラメーターを直接指定できるかどうかはわかりませんが、1 つのパラメーター セットを別のパラメーター セットから派生させることができます。M と V が対数正規変数の必要なパラメーターであると仮定すると、次の式muを使用して計算できます。sigma

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

逆の変換については、ウィキペディアを参照してください。

于 2013-01-22T19:59:27.550 に答える
0

また、確率分布オブジェクトを使用してこれを簡単に行うこともできます。これにより、より幅広い機能にアクセスできます (提供されたリンクのリストを参照してください)。

N = 10000;
pd = makedist('Lognormal',0.3,0.05)      % Probability Distribution Object
R = random(pd,N,1);                      % Call random()

すでに指摘したように、

>> mean(pd)
ans =
    1.3515
>> std(pd)
ans =
    0.0676
于 2018-11-06T04:13:38.180 に答える