我正在尝试从对数正态分布生成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是对数正态变量的理想参数,则可以使用以下公式计算
mu
和sigma
:x = 1 + V / M^2
sigma = sqrt(log(x))
mi = log(M / sqrt(x))
参见wikipedia进行相反的转换。