numpy.random.RandomState.gumbel
метод
-
RandomState.gumbel(loc=0.0, scale=1.0, size=None) -
Генерация выборок из распределения Гумбеля.
Генерирует выборки из распределения Гумбеля со заданной точкой моды и масштабом. Дополнительную информацию о распределении Гумбеля можно найти в примечаниях и ссылках ниже.
Параметры: -
loc : float or array_like of floats, optional -
Точка моды распределения. По умолчанию 0.
-
scale : float or array_like of floats, optional -
Масштабный параметр распределения. По умолчанию 1.
-
size : int or tuple of ints, optional -
Форма выходных данных. Если заданная форма, например,
(m, n, k), тоm * n * kвыборок генерируется. Если размерNone(по умолчанию), возвращается единственное значение, еслиlocиscale— скаляры. В противном случаеnp.broadcast(loc, scale).sizeвыборок генерируется.
Возвращает: -
out : ndarray or scalar -
Выбранные выборки из параметризованного распределения Гумбеля.
Примечания
Распределение Гумбеля (или распределение наименьшего экстремального значения (SEV) или распределение наименьшего экстремального значения типа I) является одним из класса распределений обобщенных экстремальных значений (GEV), используемых в моделировании экстремальных значений. Распределение Гумбеля является частным случаем распределения экстремальных значений типа I для максимумов из распределений с «экспоненциально-подобными» хвостами.
Плотность вероятности для распределения Гумбеля:
где
— мода, параметр положения, а
— параметр масштаба.
Распределение Гумбеля (названное в честь немецкого математика Эмиля Юлиуса Гумбеля) использовалось на очень ранних этапах в гидрологии для моделирования возникновения наводнений. Оно также используется для моделирования максимальной скорости ветра и интенсивности осадков. Это распределение с «толстыми хвостами» — вероятность события в хвосте распределения больше, чем если бы использовалась гауссиана, поэтому наблюдается удивительно частое возникновение наводнений с 100-летним периодом. Изначально наводнения моделировались как гауссовский процесс, что недооценивало частоту экстремальных событий.
Это одно из класса распределений экстремальных значений, распределения обобщенных экстремальных значений (GEV), которое также включает распределение Вейбулла и Фреше.
Математическое ожидание функции равно
, а дисперсия равна
.
Ссылки
[1] Gumbel, E. J., «Statistics of Extremes,» New York: Columbia University Press, 1958. [2] Reiss, R.-D. and Thomas, M., «Statistical Analysis of Extreme Values from Insurance, Finance, Hydrology and Other Fields,» Basel: 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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.random.RandomState.gumbel.html