Spec-Zone.ru › NumPy 1.21

numpy.random.lognormal

random.lognormal(mean=0.0, sigma=1.0, size=None)

Генерация выборок из логнормального распределения.

Генерирует выборки из логнормального распределения со заданными средним, стандартным отклонением и формой массива. Обратите внимание, что среднее и стандартное отклонение — это значения для базового нормального распределения, из которого происходит логнормальное.

Примечание

Для нового кода следует использовать метод lognormal экземпляра default_rng(); см. Быстрый старт.

Параметры
meanfloat или array_like чисел с плавающей точкой, необязательно

Среднее значение базового нормального распределения. По умолчанию 0.

sigmafloat или array_like чисел с плавающей точкой, необязательно

Стандартное отклонение базового нормального распределения. Должно быть неотрицательным. По умолчанию 1.

sizeцелое число или кортеж целых чисел, необязательно

Форма выходного массива. Если заданная форма, например, (m, n, k), то m * n * k выборок генерируется. Если size — None (по умолчанию), возвращается одно значение, если mean и sigma — скаляры. В противном случае генерируется np.broadcast(mean, sigma).size выборок.

Возвращаемое значение
outndarray или скаляр

Сгенерированные выборки из логнормального распределения.

См. также

scipy.stats.lognorm

функция плотности вероятности, распределение, функция кумулятивной плотности и т.д.

Generator.lognormal

который следует использовать в новом коде.

Примечания

Переменная x имеет логнормальное распределение, если log(x) имеет нормальное распределение. Функция плотности вероятности логнормального распределения:

\[p(x) = \frac{1}{\sigma x \sqrt{2\pi}} e^{(-\frac{(ln(x)-\mu)^2}{2\sigma^2})}\]

где \(\mu\) — среднее, а \(\sigma\) — стандартное отклонение нормально распределённого логарифма переменной. Логонормальное распределение возникает, если случайная величина является произведением большого числа независимых, одинаково распределённых переменных так же, как нормальное распределение возникает, если переменная является суммой большого числа независимых, одинаково распределённых переменных.

Ссылки

1

Limpert, E., Stahel, W. A., and Abbt, M., “Log-normal Distributions across the Sciences: Keys and Clues,” BioScience, Vol. 51, No. 5, May, 2001. https://stat.ethz.ch/~stahel/lognormal/bioscience.pdf

2

Reiss, R.D. and Thomas, M., “Statistical Analysis of Extreme Values,” Basel: Birkhauser Verlag, 2001, pp. 31-32.

Примеры

Генерация выборок из распределения:

>>> mu, sigma = 3., 1. # mean and standard deviation
>>> s = np.random.lognormal(mu, sigma, 1000)

Вывод гистограммы выборок вместе с функцией плотности вероятности:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 100, density=True, align='mid')
>>> x = np.linspace(min(bins), max(bins), 10000)
>>> pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2))
...        / (x * sigma * np.sqrt(2 * np.pi)))
>>> plt.plot(x, pdf, linewidth=2, color='r')
>>> plt.axis('tight')
>>> plt.show()
../../../_images/numpy-random-lognormal-1_00_00.png

Демонстрация того, что произведение случайных выборок из равномерного распределения может хорошо описываться функцией плотности вероятности логнормального распределения.

>>> # Generate a thousand samples: each is the product of 100 random
>>> # values, drawn from a normal distribution.
>>> b = []
>>> for i in range(1000):
...    a = 10. + np.random.standard_normal(100)
...    b.append(np.product(a))
>>> b = np.array(b) / np.min(b) # scale values to be positive
>>> count, bins, ignored = plt.hist(b, 100, density=True, align='mid')
>>> sigma = np.std(np.log(b))
>>> mu = np.mean(np.log(b))
>>> x = np.linspace(min(bins), max(bins), 10000)
>>> pdf = (np.exp(-(np.log(x) - mu)**2 / (2 * sigma**2))
...        / (x * sigma * np.sqrt(2 * np.pi)))
>>> plt.plot(x, pdf, color='r', linewidth=2)
>>> plt.show()
../../../_images/numpy-random-lognormal-1_01_00.png

© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/random/generated/numpy.random.lognormal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API