Spec-Zone.ru › NumPy 1.18

numpy.random.RandomState.lognormal

метод

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

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

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

Примечание

Новый код должен использовать метод lognormal экземпляра default_rng(); см. random-quick-start.

Параметры
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

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

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

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

Spec-Zone.ru

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