Как использовать логнормальное распределение в Python


Вы можете использовать функцию lognorm() из библиотеки SciPy в Python, чтобы сгенерировать случайную переменную, которая следует логарифмически нормальному распределению.

В следующих примерах показано, как использовать эту функцию на практике.

Как сгенерировать логнормальное распределение

Вы можете использовать следующий код для генерации случайной величины, которая соответствует логарифмически нормальному распределению с μ = 1 и σ = 1:

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

#make this example reproducible
np.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 бинов в гистограммах, но мы можем легко увеличить это число, используя аргумент bins .

Например, мы можем увеличить количество бинов до 20:

import matplotlib.pyplot as plt

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

Чем больше количество интервалов, тем более узкими будут столбцы на гистограмме.

Связанный: Три способа настроить размер интервала в гистограммах Matplotlib

Дополнительные ресурсы

В следующих руководствах объясняется, как работать с другими распределениями вероятностей в Python:

Как использовать распределение Пуассона в Python
Как использовать экспоненциальное распределение в Python
Как использовать равномерное распределение в Python