Spec-Zone.ru › NumPy 1.20

numpy.random.Generator.gumbel

метод

random.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

Гумбел, Э. Ю., «Статистика экстремумов», Нью-Йорк: Columbia University Press, 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/random/generated/numpy.random.Generator.gumbel.html

Spec-Zone.ru

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