Spec-Zone.ru › NumPy 2.0

numpy.random.Generator.lognormal

метод

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

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

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

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

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

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

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

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

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

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

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

См. также

scipy.stats.lognorm

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

Примечания

Переменная 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.

Примеры

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

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

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

>>> import matplotlib.pyplot as plt
>>> count, bins, _ = 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-Generator-lognormal-1_00_00.png

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

>>> # Generate a thousand samples: each is the product of 100 random
>>> # values, drawn from a normal distribution.
>>> rng = rng
>>> b = []
>>> for i in range(1000):
...    a = 10. + rng.standard_normal(100)
...    b.append(np.prod(a))
>>> b = np.array(b) / np.min(b) # scale values to be positive
>>> count, bins, _ = 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-Generator-lognormal-1_01_00.png

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

Spec-Zone.ru

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