Spec-Zone.ru › NumPy 1.16

numpy.random.lognormal

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

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

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

Параметры:
mean : float or array_like of floats, optional

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

sigma : float or array_like of floats, optional

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

size : int or tuple of ints, optional

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

Возвращает:
out : ndarray 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., “Логонормальные распределения в науках: ключи и подсказки”, BioScience, том 51, № 5, май 2001 г. https://stat.ethz.ch/~stahel/lognormal/bioscience.pdf
[2] Reiss, R.D. and Thomas, M., “Статистический анализ экстремальных значений”, Базель: Birkhauser Verlag, 2001, стр. 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.random(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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.random.lognormal.html

Spec-Zone.ru

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