我正在尝试从对数正态分布生成10000个随机数,该正态分布的相关正态分布的均值= 0.3和std。开发。 =在MATLAB中为0.05。

我正在使用内置的lognrnd函数。

我的尝试是:
R = lognrnd(0.3,0.05,10000,1)
但是,当我使用R绘制hist(R)的直方图时,关联的图是正常的,而不是对数正态的。

我在哪里弄糟?如果平均值= 0.3和std。开发。 =正态分布的0.05,所生成的对数正态数不应具有均值= 0.3和std。 dev = 0.05?

谢谢你们。

最佳答案

您生成的数字实际上来自对数正态分布。对于您的参数,绘图看起来很相似。比较hist(R)hist(log(R))-形状几乎相同。

至于均值和偏差,请看lognrnd documentation:

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

因此,预期生成的数字具有不同的均值和偏差。

编辑:我不确定Matlab是否可以让您直接指定对数正态分布参数,但是您可以从另一组派生一组参数。假设M和V是对数正态变量的理想参数,则可以使用以下公式计算musigma:
x = 1 + V / M^2
sigma = sqrt(log(x))
mi    = log(M / sqrt(x))

参见wikipedia进行相反的转换。

10-05 23:53