Spec-Zone.ru › NumPy 1.20

numpy.random.RandomState.gumbel

метод

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

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

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

Примечание

В новом коде следует использовать метод gumbel экземпляра default_rng(); см. Быстрый старт.

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

Гумбел, Э. Ю., «Статистика экстремальных значений», Нью-Йорк: Издательство Колумбийского университета, 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/random/generated/numpy.random.RandomState.gumbel.html

Spec-Zone.ru

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