Spec-Zone.ru › NumPy 1.18

numpy.random.gumbel

numpy.random.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 выборок. Если размерность size не задана (по умолчанию), возвращается одно значение, если 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

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

Spec-Zone.ru

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