Spec-Zone.ru › NumPy 2.0

numpy.random.gumbel

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

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

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

Примечание

Новый код должен использовать метод gumbel объекта Generator; см. Быстрый старт.

Параметры:
locfloat или array_like из float, необязательно

Положение моды распределения. По умолчанию 0.

scalefloat или array_like из float, необязательно

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

sizeint или кортеж из целых чисел, необязательно

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

Возвращаемое значение:
outndarray или скаляр

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

См. также

scipy.stats.gumbel_l
scipy.stats.gumbel_r
scipy.stats.genextreme
weibull
random.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]

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

Spec-Zone.ru

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