Spec-Zone.ru › NumPy 1.14

numpy.random.lognormal

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

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

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

Параметры:

mean : float или array_like чисел, необязательно

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

sigma : float или array_like чисел, необязательно

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

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

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

Возвращает:

out : ndarray или скаляр

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

См. также

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 — стандартное отклонение нормально распределённого логарифма переменной. Логонормальное распределение получается, если случайная величина является произведением большого числа независимых одинаково распределённых переменных, аналогично тому, как нормальное распределение получается, если величина является суммой большого числа независимых одинаково распределённых переменных.

Ссылки

[R244] Limpert, E., Stahel, W. A., and Abbt, M., “Log-normal Distributions across the Sciences: Keys and Clues,” BioScience, Vol. 51, No. 5, May, 2001. http://stat.ethz.ch/~stahel/lognormal/bioscience.pdf
[R245] 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, normed=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, normed=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.14.5/reference/generated/numpy.random.lognormal.html

Spec-Zone.ru

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