numpy.random.Generator.lognormal
метод
-
Generator.lognormal(mean=0.0, sigma=1.0, size=None) -
Генерация выборок из логарифмически-нормального распределения.
Генерирует выборки из логарифмически-нормального распределения с заданным средним значением, стандартным отклонением и формой массива. Обратите внимание, что среднее значение и стандартное отклонение — это не значения самого распределения, а значения базового нормального распределения, от которого оно получено.
- Параметры
-
-
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 -
функция плотности вероятности, распределение, функция кумулятивного распределения и т.д.
Примечания
Переменная
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.
Примеры
Генерация выборок из распределения:
>>> rng = np.random.default_rng() >>> mu, sigma = 3., 1. # mean and standard deviation >>> s = rng.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. >>> rng = rng >>> b = [] >>> for i in range(1000): ... a = 10. + rng.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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/random/generated/numpy.random.Generator.lognormal.html