Spec-Zone.ru › NumPy 2.0

numpy.random.RandomState.gumbel

метод

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

Генерация случайных чисел из распределения Гумбеля.

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

Примечание

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

Параметры:
locfloat или array_like чисел с плавающей точкой, необязательно

Точка, в которой расположена мода распределения. По умолчанию 0.

scalefloat или array_like чисел с плавающей точкой, необязательно

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

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

Форма выходных данных. Если заданная форма, например, (m, n, k), то m * n * k случайных чисел генерируется. Если size — None (по умолчанию), возвращается одно значение, если 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]

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

Spec-Zone.ru

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