Spec-Zone.ru › NumPy 1.19

numpy.random.gumbel

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

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

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

Примечание

В новом коде следует использовать метод gumbel экземпляра default_rng(); см. random-quick-start.

Параметры
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

Generator.gumbel

который следует использовать в новом коде.

Примечания

Распределение Гумбеля (или распределение наименьшего экстремального значения (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

Gumbel, E. J., “Statistics of Extremes,” New York: Columbia University Press, 1958.

2

Reiss, R.-D. and Thomas, M., “Statistical Analysis of Extreme Values from Insurance, Finance, Hydrology and Other Fields,” Basel: 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, 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-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, 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-gumbel-1_01_00.png

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/random/generated/numpy.random.gumbel.html

Spec-Zone.ru

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