Spec-Zone.ru › NumPy 2.0

numpy.random.RandomState.lognormal

метод

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

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

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

Примечание

Новый код должен использовать метод lognormal экземпляра Generator; пожалуйста, ознакомьтесь с Быстрым началом.

Параметры:
meanfloat или array_like чисел с плавающей точкой, необязательно

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

sigmafloat или array_like чисел с плавающей точкой, необязательно

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

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

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

Возвращаемое значение:
outndarray или скаляр

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

См. также

scipy.stats.lognorm

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

random.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.prod(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–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/generated/numpy.random.RandomState.lognormal.html

Spec-Zone.ru

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