numpy.random.RandomState.lognormal
метод
-
RandomState.lognormal(mean=0.0, sigma=1.0, size=None) -
Генерирует выборку из логнормального распределения.
Генерирует выборку из логнормального распределения с заданным средним значением, стандартным отклонением и формой массива. Обратите внимание, что среднее значение и стандартное отклонение не являются значениями самого распределения, а значениями базового нормального распределения, от которого оно получено.
Примечание
Новый код должен использовать метод
lognormalэкземпляраdefault_rng(), см.random-quick-start.- Параметры
-
-
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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/random/generated/numpy.random.RandomState.lognormal.html