Spec-Zone.ru › NumPy 1.19

numpy.random.RandomState.gumbel

метод

RandomState.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}},

END_OF_DOCUMENT_MARKER

где \mu — режим, параметр местоположения, а \beta — параметр масштаба.

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

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

Функция имеет среднее значение \mu + 0.57721\beta и дисперсию \frac{\pi^2}{6}\beta^2.

Ссылки

1

Гумбел, Э. Ю., «Статистическое изучение экстремумов», Нью-Йорк: Издательство Колумбийского университета, 1958.

2

Райсс, Р.-Д. и Томас, М., «Статистический анализ экстремальных значений в страховании, финансах, гидрологии и других областях», Базель: 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-RandomState-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-RandomState-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.RandomState.gumbel.html

Spec-Zone.ru

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