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_lscipy.stats.gumbel_rscipy.stats.genextremeweibullrandom.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()
Показать, как распределение экстремальных значений может возникнуть из гауссовского процесса, и сравнить его с гауссовым:
>>> 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()
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/generated/numpy.random.gumbel.html