numpy.random.RandomState.lognormal
метод
-
RandomState.lognormal(mean=0.0, sigma=1.0, size=None) -
Генерировать выборки из логнормального распределения.
Генерировать выборки из логнормального распределения со заданным средним, стандартным отклонением и формой массива. Обратите внимание, что среднее и стандартное отклонение не являются значениями для самого распределения, а являются значениями для подлежащего нормального распределения, от которого оно происходит.
Параметры: -
mean : float or array_like of floats, optional -
Среднее значение подлежащего нормального распределения. По умолчанию равно 0.
-
sigma : float or array_like of floats, optional -
Стандартное отклонение подлежащего нормального распределения. Должно быть больше нуля. По умолчанию равно 1.
-
size : int or tuple of ints, optional -
Форма выходного массива. Если заданная форма, например,
(m, n, k), тоm * n * kвыборок генерируется. Если размер равенNone(по умолчанию), возвращается одно значение, еслиmeanиsigmaявляются скалярами. В противном случаеnp.broadcast(mean, sigma).sizeвыборок генерируется.
Возвращает: -
out : ndarray 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. Примеры
Генерировать выборки из распределения:
>>> 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.random(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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.random.RandomState.lognormal.html