Установка гамма-распределения с (python) Scipy

Может ли кто-нибудь помочь мне в установке гамма-распределения в python? Ну, у меня есть некоторые данные: координаты X и Y, и я хочу найти параметры гаммы, которые соответствуют этому распределению … В документе Scipy выясняется, что метод соответствия действительно существует, но я не знаю, как использовать его: s .. Во-первых, в каком формате должен быть аргумент «данные», и как я могу предоставить второй аргумент (параметры), так как это то, что я ищу?

  • доверительный интервал с наименьшим значением, подходящим для scipy python
  • Установка numpy в PyCharm в Windows
  • Создание фильтра нижних частот в SciPy - методы и единицы понимания
  • Matplotlib - Быстрый способ создания множества подзаголовков?
  • concat pandas DataFrame по индексам таймсерий
  • Argmax каждой строки или столбца в scipy разреженной матрице
  • Пример, чтобы понять функцию оптимизации прыжкового прыжка
  • python: fsolve с неизвестным внутри верхнего предела интеграла
  • 4 Solutions collect form web for “Установка гамма-распределения с (python) Scipy”

    Создайте некоторые гамма-данные:

    import scipy.stats as stats alpha = 5 loc = 100.5 beta = 22 data = stats.gamma.rvs(alpha, loc=loc, scale=beta, size=10000) print(data) # [ 202.36035683 297.23906376 249.53831795 ..., 271.85204096 180.75026301 # 364.60240242] 

    Здесь мы сопоставляем данные с гамма-распределением:

     fit_alpha, fit_loc, fit_beta=stats.gamma.fit(data) print(fit_alpha, fit_loc, fit_beta) # (5.0833692504230008, 100.08697963283467, 21.739518937816108) print(alpha, loc, beta) # (5, 100.5, 22) 

    Если вам нужен длинный пример, включающий обсуждение об оценке или исправлении поддержки дистрибутива, вы можете найти его в http://projects.scipy.org/scipy/ticket/832 и связанном сообщении списка рассылки.

    Предварительная поддержка исправления параметров, таких как местоположение, во время подгонки, была добавлена ​​к версии сундука.

    Я был неудовлетворен функцией ss.gamma.rvs, так как он может генерировать отрицательные числа, что, по-видимому, не должно иметь гамма-распределение. Таким образом, я подобрал образец через ожидаемое значение = среднее (данные) и variance = var (данные) (подробнее см. Wikipedia) и написал функцию, которая может давать случайные выборки гамма-распределения без scipy (что мне было сложно установить правильно, на стороне):

     import random import numpy data = [6176, 11046, 670, 6146, 7945, 6864, 767, 7623, 7212, 9040, 3213, 6302, 10044, 10195, 9386, 7230, 4602, 6282, 8619, 7903, 6318, 13294, 6990, 5515, 9157] # Fit gamma distribution through mean and average mean_of_distribution = numpy.mean(data) variance_of_distribution = numpy.var(data) def gamma_random_sample(mean, variance, size): """Yields a list of random numbers following a gamma distribution defined by mean and variance""" g_alpha = mean*mean/variance g_beta = mean/variance for i in range(size): yield random.gammavariate(g_alpha,1/g_beta) # force integer values to get integer sample grs = [int(i) for i in gamma_random_sample(mean_of_distribution,variance_of_distribution,len(data))] print("Original data: ", sorted(data)) print("Random sample: ", sorted(grs)) # Original data: [670, 767, 3213, 4602, 5515, 6146, 6176, 6282, 6302, 6318, 6864, 6990, 7212, 7230, 7623, 7903, 7945, 8619, 9040, 9157, 9386, 10044, 10195, 11046, 13294] # Random sample: [1646, 2237, 3178, 3227, 3649, 4049, 4171, 5071, 5118, 5139, 5456, 6139, 6468, 6726, 6944, 7050, 7135, 7588, 7597, 7971, 10269, 10563, 12283, 12339, 13066] 

    1): переменная «data» может быть в формате списка или кортежа python или numpy.ndarray, который можно получить, используя:

     data=numpy.array(data) 

    где 2-й данные в приведенной выше строке должны быть списком или кортежем, содержащим ваши данные.

    2: переменная «параметр» является первой предпосылкой, которую вы могли бы опционально предоставить функции фитинга в качестве отправной точки для процесса подгонки, поэтому ее можно было бы опустить.

    3: примечание о ответе @ Мондано. Использование моментов (среднее и дисперсии) для разработки параметров гаммы достаточно полезно для больших параметров формы (альфа> 10), но может давать плохие результаты при малых значениях альфа (см. Статистические методы в атмосферных средах Уилкса и THOM, HCS, 1958: примечание об гамма-распределении. Mon. Wea. Rev., 86, 117-122.

    Использование оценок максимального правдоподобия, как это реализовано в модуле scipy, считается лучшим выбором в таких случаях.

    Python - лучший язык программирования в мире.