Ответ 1
Я понимаю, что вы пытаетесь кусочно восстановить ваш cdf с несколькими небольшими гамма-распределениями, каждый с другим параметром масштаба и формы, захватывая "локальные" области вашего распространения.
Наверное, имеет смысл, если ваше эмпирическое распределение мультимодально/сложно подытожить одним "глобальным" параметрическим распределением.
Не знаю, есть ли у вас конкретные причины специально устраивать несколько гамма-дистрибутивов, но в случае, если ваша цель - попытаться соответствовать распределению, которое относительно гладко и захватывает ваш эмпирический cdf, возможно, вы можете взглянуть на плотность ядра Оценка. Это, по сути, непараметрический способ подгонки дистрибутива к вашим данным.
http://scikit-learn.org/stable/modules/density.html http://en.wikipedia.org/wiki/Kernel_density_estimation
Например, вы можете опробовать гауссовское ядро и изменить параметр полосы пропускания, чтобы контролировать, насколько он сглажен. Слишком маленькая полоса пропускания приводит к негладному ( "избыточному" ) результату (высокая дисперсия, низкое смещение). Слишком большая полоса пропускания приводит к очень плавному результату, но с большим уклоном.
from sklearn.neighbors.kde import KernelDensity
kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(dataPoints)
Хороший способ выбрать параметр пропускной способности, который уравновешивает смещение - дисперсия - это использование перекрестной проверки. По сути, идея высокого уровня заключается в том, что вы разбиваете свои данные, выполняете анализ на обучающем наборе и "проверяете" на тестовом наборе, это предотвратит переуплотнение данных.
К счастью, sklearn также реализует хороший пример выбора наилучшей пропускной способности Guassian Kernel с использованием Cross Validation, с помощью которого вы можете заимствовать код:
http://scikit-learn.org/stable/auto_examples/neighbors/plot_digits_kde_sampling.html
Надеюсь, это поможет!