Spec-Zone.ru › NumPy 1.13

numpy.random.gumbel

numpy.random.gumbel(loc=0.0, scale=1.0, size=None)

Генерация выборок из распределения Гумбеля.

Генерирует выборки из распределения Гумбеля со заданными параметрами сдвига и масштаба. Дополнительная информация о распределении Гумбеля приведена ниже в разделах «Примечания» и «Ссылки».

Параметры:

loc : float или array_like float, необязательно

Параметр сдвига (смещение), определяющий положение моды распределения. По умолчанию 0.

scale : float или array_like float, необязательно

Параметр масштаба распределения. По умолчанию 1.

size : int или кортеж из целых чисел, необязательно

Форма выходного массива. Если заданная форма, например, (m, n, k), то m * n * k выборок генерируется. Если размер равен None (значение по умолчанию), возвращается одно значение, если loc и scale являются скалярами. В противном случае np.broadcast(loc, scale).size выборок генерируется.

Возвращает:

out : ndarray или скаляр

Сгенерированные выборки из распределения Гумбеля.

См. также

scipy.stats.gumbel_l, scipy.stats.gumbel_r, scipy.stats.genextreme, weibull

Примечания

Распределение Гумбеля (или распределение наименьшего экстремального значения (SEV) или распределение экстремального значения типа I) относится к классу распределений обобщенных экстремальных значений (GEV), используемых в задачах моделирования экстремальных событий. Распределение Гумбеля является частным случаем распределения экстремального значения типа I для максимальных значений из распределений с «экспоненциальными» хвостами.

Плотность вероятности для распределения Гумбеля:

p(x) = \frac{e^{-(x - \mu)/ \beta}}{\beta} e^{ -e^{-(x - \mu)/
\beta}},

где \mu — мода, параметр сдвига, а \beta — параметр масштаба.

Распределение Гумбеля (названное в честь немецкого математика Эмиля Юлиуса Гумбеля) было использовано в гидрологической литературе для моделирования наводнений. Оно также используется для моделирования максимальной скорости ветра и интенсивности осадков. Это распределение с «толстыми хвостами» — вероятность события в хвосте распределения выше, чем если бы использовалась гауссова функция, поэтому наводнения, которые происходят раз в 100 лет, случаются удивительно часто. Изначально наводнения моделировались как гауссовский процесс, что недооценивало частоту экстремальных событий.

Это одно из распределений класса распределений экстремальных значений, распределения обобщенных экстремальных значений (GEV), которое также включает в себя распределение Вейбулла и распределение Фреше.

Математическое ожидание функции равно \mu + 0.57721\beta, а дисперсия — \frac{\pi^2}{6}\beta^2.

Ссылки

[R228] Гумбел, Э. Ю., «Статистики экстремумов», Нью-Йорк: Издательство Колумбийского университета, 1958 г.
[R229] Райсс, Р.-Д. и Томас, М., «Статистический анализ экстремальных значений из страхования, финансов, гидрологии и других областей», Базель: Издательство Birkhauser Verlag, 2001 г.

Примеры

Генерация выборок из распределения:

>>> mu, beta = 0, 0.1 # location and scale
>>> s = np.random.gumbel(mu, beta, 1000)

Отображение гистограммы выборок вместе с функцией плотности вероятности:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 30, normed=True)
>>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
...          * np.exp( -np.exp( -(bins - mu) /beta) ),
...          linewidth=2, color='r')
>>> plt.show()

(Исходный код, png, pdf)

../../_images/numpy-random-gumbel-1_00_00.png

Демонстрация того, как распределение экстремальных значений может возникать из гауссова процесса и сравнение с гауссовым распределением:

>>> means = []
>>> maxima = []
>>> for i in range(0,1000) :
...    a = np.random.normal(mu, beta, 1000)
...    means.append(a.mean())
...    maxima.append(a.max())
>>> count, bins, ignored = plt.hist(maxima, 30, normed=True)
>>> beta = np.std(maxima) * np.sqrt(6) / np.pi
>>> mu = np.mean(maxima) - 0.57721*beta
>>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
...          * np.exp(-np.exp(-(bins - mu)/beta)),
...          linewidth=2, color='r')
>>> plt.plot(bins, 1/(beta * np.sqrt(2 * np.pi))
...          * np.exp(-(bins - mu)**2 / (2 * beta**2)),
...          linewidth=2, color='g')
>>> plt.show()

(png, pdf)

../../_images/numpy-random-gumbel-1_01_00.png

© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.gumbel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API