如何在 python 中使用对数正态分布


您可以使用 Python 中SciPy库的lognorm()函数生成遵循对数正态分布的随机变量。

以下示例展示了如何在实践中使用此功能。

如何生成对数正态分布

您可以使用以下代码生成一个服从对数正态分布且 μ = 1 且 σ = 1 的随机变量:

 import math
import numpy as np
from scipy. stats import lognorm

#make this example reproducible
n.p. random . seed ( 1 )

#generate log-normal distributed random variable with 1000 values
lognorm_values = lognorm. rvs (s= 1 , scale=math. exp ( 1 ), size= 1000 )

#view first five values
lognorm_values[:5]

array([13.79554017, 1.47438888, 1.60292205, 0.92963, 6.45856805])

请注意,在lognorm.rvs()函数中, s是标准差, math.exp()中的值是要生成的对数正态分布的平均值。

在此示例中,我们将均值设置为1 ,标准差也设置为1

如何绘制对数正态分布

我们可以使用以下代码创建我们在上一个示例中创建的对数正态分布随机变量的值的直方图:

 import matplotlib. pyplot as plt

#create histogram
plt. hist (lognorm_values, density= True , edgecolor=' black ')

Matplotlib 默认在直方图中有 10 个 bin,但我们可以使用bins参数轻松增加这个数字。

例如,我们可以将 bin 数量增加到 20:

 import matplotlib. pyplot as plt

#create histogram
plt. hist (lognorm_values, density= True , edgecolor=' black ', bins= 20 ) 

Python 中的对数正态分布

框的数量越多,直方图中的条形越窄。

相关:在 Matplotlib 直方图中调整 bin 大小的三种方法

其他资源

以下教程解释了如何在 Python 中使用其他概率分布:

如何在Python中使用泊松分布
如何在 Python 中使用指数分布
如何在 Python 中使用均匀分布

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注