numpy.random.RandomState.gumbel
-
RandomState.gumbel(loc=0.0, scale=1.0, size=None) -
Генерация случайных чисел из распределения Гумбеля.
Генерирует случайные числа из распределения Гумбеля с заданными параметрами сдвига и масштаба. Дополнительную информацию о распределении Гумбеля см. в разделе «Примечания» и «Ссылки» ниже.
Параметры: loc : float или array_like с плавающей точкой, необязательно
Положение моды распределения. По умолчанию 0.
scale : float или array_like с плавающей точкой, необязательно
Параметр масштаба распределения. По умолчанию 1.
size : целое число или кортеж целых чисел, необязательно
Форма выходного массива. Если заданная форма, например,
(m, n, k), тоm * n * kслучайных чисел генерируется. Если размер равенNone(по умолчанию), возвращается единственное значение, еслиlocиscaleявляются скалярами. В противном случаеnp.broadcast(loc, scale).sizeслучайных чисел генерируется.Возвращаемое значение: out : ndarray или скаляр
Сгенерированные случайные числа из распределения Гумбеля с заданными параметрами.
Примечания
Распределение Гумбеля (или распределение наименьшего экстремального значения (SEV) или распределение наименьшего экстремального значения типа I) относится к классу распределений обобщенных экстремальных значений (GEV), используемых в задачах моделирования экстремальных значений. Распределение Гумбеля является частным случаем распределения экстремального значения типа I для максимальных значений из распределений с «экспоненциально-подобными» хвостами.
Функция плотности вероятности для распределения Гумбеля:

где
— мода (параметр местоположения), а
— параметр масштаба.Распределение Гумбеля (названное в честь немецкого математика Эмиля Юлиуса Гумбеля) было очень рано использовано в литературе по гидрологии для моделирования наводнений. Оно также используется для моделирования максимальной скорости ветра и интенсивности осадков. Это распределение с «толстыми хвостами» — вероятность события в хвосте распределения больше, чем если бы использовалась гауссиана, следовательно, удивительно частое появление наводнений с 100-летним периодом. Наводнения изначально моделировались как гауссовский процесс, что недооценивало частоту экстремальных событий.
Это одно из распределений класса распределений экстремальных значений, распределений обобщенных экстремальных значений (GEV), которое также включает распределение Вейбулла и Фреше.
Математическое ожидание функции равно
, а дисперсия равна
. Ссылки
[R157] Гумбел, Э. Ю., «Статистика экстремальных значений», Нью-Йорк: Издательство Колумбийского университета, 1958. [R158] Рейсс, Р.-Д. и Томас, М., «Статистический анализ экстремальных значений из страхования, финансов, гидрологии и других областей», Базель: Издательство 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, normed=True) >>> plt.plot(bins, (1/beta)*np.exp(-(bins - mu)/beta) ... * np.exp( -np.exp( -(bins - mu) /beta) ), ... linewidth=2, color='r') >>> plt.show()
(Исходный код, png, pdf)
Демонстрация того, как распределение экстремальных значений может возникнуть из гауссовского процесса, и сравнение с гауссианой:
>>> 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, normed=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()
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.RandomState.gumbel.html