Spec-Zone.ru › NumPy 1.12

numpy.random.RandomState.lognormal

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

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

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

Параметры:

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

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

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

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

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

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

Ссылки

[R164] 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
[R165] 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-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.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-RandomState-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.RandomState.lognormal.html

Spec-Zone.ru

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