numpy.random.RandomState.lognormal
метод
- random.RandomState.lognormal(mean=0.0, sigma=1.0, size=None)
-
Генерирует выборку из логнормального распределения.
Генерирует выборку из логнормального распределения с заданным средним значением, стандартным отклонением и формой массива. Обратите внимание, что среднее значение и стандартное отклонение не являются значениями самого распределения, а являются значениями базового нормального распределения, из которого оно получено.
Примечание
Для нового кода следует использовать метод
lognormalэкземпляра классаdefault_rng(); см. Быстрый старт.- Параметры
-
- meanfloat или array_like чисел, необязательно
-
Среднее значение базового нормального распределения. По умолчанию равно 0.
- sigmafloat или array_like чисел, необязательно
-
Стандартное отклонение базового нормального распределения. Должно быть неотрицательным. По умолчанию равно 1.
- sizeint или кортеж из целых чисел, необязательно
-
Форма выходного массива. Если заданная форма, например,
(m, n, k), то генерируетсяm * n * kвыборок. Если size не указан (по умолчанию), возвращается одно значение, еслиmeanиsigmaявляются скалярами. В противном случае генерируетсяnp.broadcast(mean, sigma).sizeвыборок.
- Возвращаемое значение
-
- outndarray или скаляр
-
Сгенерированные выборки из логнормального распределения с заданными параметрами.
См. также
scipy.stats.lognorm-
функция плотности вероятности, распределение, функция кумулятивной плотности вероятности и т.д.
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.product(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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/random/generated/numpy.random.RandomState.lognormal.html