Spec-Zone.ru › NumPy 1.17

numpy.random.Generator.gumbel

метод

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

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

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

Параметры:
loc : float or array_like of floats, optional

Смещение моды распределения. По умолчанию 0.

scale : float or array_like of floats, optional

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

size : int or tuple of ints, optional

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

Возвращает:
out : ndarray or scalar

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

См. также

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.

Ссылки

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

Примеры

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

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

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

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 30, density=True)
>>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta)
...          * np.exp( -np.exp( -(bins - mu) /beta) ),
...          linewidth=2, color='r')
>>> plt.show()
../../../_images/numpy-random-Generator-gumbel-1_00_00.png

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

>>> means = []
>>> maxima = []
>>> for i in range(0,1000) :
...    a = rng.normal(mu, beta, 1000)
...    means.append(a.mean())
...    maxima.append(a.max())
>>> count, bins, ignored = plt.hist(maxima, 30, density=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()
../../../_images/numpy-random-Generator-gumbel-1_01_00.png

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/random/generated/numpy.random.Generator.gumbel.html

Spec-Zone.ru

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