numpy.random.lognormal
- random.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выборок генерируется. Если size —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()Демонстрация того, что произведение случайных выборок из равномерного распределения может хорошо описываться логнормальной функцией плотности вероятности.
>>> # 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()
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/generated/numpy.random.lognormal.html