Spec-Zone.ru › NumPy 1.18

numpy.random.Generator.gumbel

метод

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

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

Генерирует выборки из распределения Гумбеля со заданными параметрами сдвига и масштаба. Более подробную информацию о распределении Гумбеля см. в примечаниях и ссылках ниже.

Параметры
locfloat or array_like of floats, optional

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

scalefloat or array_like of floats, optional

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

sizeint or tuple of ints, optional

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

Возвращает
outndarray 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

Райсс, Р.-Д. и Томас, М., «Статистический анализ экстремальных значений из страхования, финансов, гидрологии и других областей», Базель: Издательство Биркхаузера, 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/random/generated/numpy.random.Generator.gumbel.html

Spec-Zone.ru

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