5

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

我正在使用内置lognrnd功能。

我的尝试是:

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

R但是,当我绘制using的直方图时hist(R),相关图是正常的,而不是对数正常的。

我在哪里搞砸了?如果平均值 = 0.3 和标准。开发。= 0.05 的正态分布,生成的对数正态数不应该有平均值 = 0.3 和标准。开发 = 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 是否允许您直接指定对数正态分布参数,但您可以从另一组参数中导出一组参数。假设 M 和 V 是对数正态变量的所需参数,您可以计算musigma使用以下公式:

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 回答