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_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]Гумбел, Э. Ю., «Статистика экстремальных значений», Нью-Йорк: Издательство Колумбийского университета, 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.RandomState.gumbel.html