Spec-Zone.ru › NumPy 1.19

numpy.random.Generator.lognormal

метод

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

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

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

Параметры
meanfloat or array_like of floats, optional

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

sigmafloat or array_like of floats, optional

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

sizeint or tuple of ints, optional

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

Возвращает
outndarray or scalar

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

См. также

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, 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-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.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-Generator-lognormal-1_01_00.png

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

Spec-Zone.ru

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