Подбор вероятностных данных с верхними пределами и асимметричными ошибками

Я хочу использовать emcee ( http://dfm.io/emcee/current/) пакет для подгонки некоторых данных к различным моделям. Данные имеют этот формат:

# Energy     dN/dE        DeltaEnergy- DeltaEnergy+ Delta dN/dE- Delta dN/dE+
1.733589e-01 3.589066e-14 7.335888e-02 1.271741e-01 0.000000e+00 0.000000e+00 
5.210007e-01 4.923808e-14 2.204677e-01 3.822003e-01 0.000000e+00 0.000000e+00 
1.565779e+00 1.155390e-13 6.625782e-01 1.148638e+00 0.000000e+00 0.000000e+00 
4.705684e+00 6.044048e-14 1.991267e+00 3.452038e+00 5.439188e-14 5.439188e-14 
1.414214e+01 1.340533e-13 5.984414e+00 1.037451e+01 9.279249e-14 9.279249e-14 
4.250179e+01 2.162381e-13 1.798514e+01 3.117884e+01 1.745667e-13 1.745667e-13 
1.277319e+02 5.191010e-13 5.405129e+01 9.370272e+01 0.000000e+00 0.000000e+00 
3.838766e+02 1.420706e-12 1.624420e+02 2.816076e+02 0.000000e+00 0.000000e+00 
1.153676e+03 5.254703e-12 4.881918e+02 8.463239e+02 0.000000e+00 0.000000e+00 

Как видите, ошибки в энергии (переменная x) асимметричны, а в dN/dE (переменная y) - нет.

Тем не менее, когда ошибка в dN / dE установлена ​​в 0, это означает, что это просто верхний предел.

Модели являются вариациями степенного закона, т. Е.

у = А * (х / х0) ** а

Где A - амплитуда, x0 - нормализация и индекс степенного закона. Вариация - степенной закон экспоненциальной отсечки,

y = A * (x/x0) ** a * exp (x/xcut)

Где сейчас xcut - это значение отсечения.

Что мне нужно?

Мне нужен код, который принимает эти данные и, используя emcee, учитывая начальный вектор параметров (A_in, x0_in, a_in) исследует пространство параметров, чтобы найти вероятность каждого набора параметров, пока не найдет наиболее подходящие параметры (думаю, максимизация вероятности).

Он также должен построить точки соответствия с функцией наилучшего соответствия, а также corner_plot и выведите значение наиболее подходящих параметров и логарифмическую вероятность для сравнения с другими моделями.

0 ответов

Другие вопросы по тегам