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.18/reference/random/generated/numpy.random.RandomState.lognormal.html