Spec-Zone.ru › NumPy 1.12

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

Ссылки

[R235] 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
[R236] 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()

(Исходный код, png, pdf)

../../_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()

(png, pdf)

../../_images/numpy-random-lognormal-1_01_00.png

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.random.lognormal.html

Spec-Zone.ru

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