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