numpy.random.lognormal
-
numpy.random.lognormal(mean=0.0, sigma=1.0, size=None) -
Генерация выборок из логнормального распределения.
Генерирует выборки из логнормального распределения со заданными средним, стандартным отклонением и формой массива. Обратите внимание, что среднее значение и стандартное отклонение — это не значения самого распределения, а значения лежащего в основе нормального распределения.
Параметры: mean : float
Среднее значение базового нормального распределения
sigma : float, > 0.
Стандартное отклонение базового нормального распределения
size : int или кортеж из целых чисел, необязательно
Форма выходного массива. Если заданная форма, например,
(m, n, k), тоm * n * kвыборок генерируется. По умолчанию None, в этом случае возвращается одно значение.Возвращает: samples : ndarray или float
Требуемые выборки. Массив той же формы, что и
size, если он был задан, еслиsizeравно None, возвращается float.См. также
scipy.stats.lognorm- функция плотности вероятности, распределение, функция кумулятивной плотности вероятности и т.д.
Примечания
Переменная
xимеет логнормальное распределение, еслиlog(x)имеет нормальное распределение. Функция плотности вероятности для логнормального распределения:
где
— среднее значение, а
— стандартное отклонение нормально распределённого логарифма переменной. Логнормальное распределение получается, если случайная величина является произведением большого числа независимых одинаково распределённых величин, так же как нормальное распределение получается, если величина является суммой большого числа независимых одинаково распределённых величин.Ссылки
[R235] Limpert, E., Stahel, W. A., and Abbt, M., “Log-normal Distributions across the Sciences: Keys and Clues,” BioScience, Vol. 51, No. 5, May, 2001. http://stat.ethz.ch/~stahel/lognormal/bioscience.pdf [R236] 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, normed=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()(Исходный код, png, pdf)
Демонстрация того, что произведение случайных выборок из равномерного распределения может быть хорошо аппроксимировано логнормальной функцией плотности вероятности.
>>> # 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, normed=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()
© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.random.lognormal.html