#python #scipy #curve-fitting
#python #scipy #подгонка кривой
Вопрос:
Я использую scipy.curve_fit
для подгонки суммы функций Гаусса к данным гистограммы, взятым из эксперимента. Я могу получить достаточно приличную общую подгонку с приемлемой комбинированной среднеквадратичной ошибкой для модели подгонки в целом, но я хотел бы сделать больше с индивидуальной среднеквадратичной ошибкой для каждого производного коэффициента по мере его распространения на последующие вычисления. Я использую var_matrix, возвращенную из curve_fit, для извлечения RMSE для каждого отдельного параметра.
Можно ли установить максимально допустимую ошибку для каждого коэффициента во время подгонки, например, 10% от заданного значения коэффициентов. У меня есть начальные параметры предположения и границы для каждого коэффициента, но меня беспокоит то, что у меня есть 21 подобранный коэффициент, и некоторые из них имеют незначительную ошибку, в то время как другие имеют ошибки, превышающие значение коэффициента, которое оно имеет, что заставляет меня полагать, что подгонка выполняется исключительно на основе общей ошибки модели, которая может»пихать» много ошибок для данного коэффициента, чтобы упростить другие параметры.
Комментарии:
1. Технически это возможно, но не с
curve_fit
. Можно изменить градиент LM в соответствии с ошибками параметров подгонки. Однако, читая последнюю часть, может возникнуть некоторое заблуждение.curve_fit
это не минимизация ошибки параметров подгонки, а chi ^ 2. Наличие нескольких параметров с большими ошибками может иметь разные причины. 1) Модель неправильная / неполная. 2) Данных недостаточно для оценки этого конкретного параметра. 2) Данные не зависят от этого параметра. 4) Высокая корреляция с другими параметрами; проверьте также недиагональные элементы ковариационной матрицы.2. … с другой стороны, из того, что вы делаете, я думаю, вы это знаете. Итак, что вас на самом деле беспокоит?
3. Привет @mikuszefski , спасибо за предложение, я только что преобразовал его в lmfitmodel в своем коде. Да, я понимаю, что хи-квадрат минимизируется, у меня есть зашумленные данные в этой подгонке, но я знаю приблизительные пиковые значения (gauss amp, mu, sigma) из подгонки к набору данных с меньшим шумом. То, что я хотел бы сделать, это (в любом методе, curvefit, lmfit …) выполнить подгонку с границами коэффициентов и, кроме того, установить границу максимальной неопределенности данного коэффициента, даже если это приносит в жертву модели в целом хи квадрат. В некотором смысле я согласен с вами, если один коэффициент полностью неопределен, подгонка модели не имеет смысла
4. По сути, я хочу распространить неопределенность на другие параметры, чтобы каждый из них имел некоторое приемлемое (правдоподобное) значение, если один из них выходит за рамки графика, вся подгонка неверна
5. Ну, тогда, как я уже сказал, это технически возможно, но не с этими высокоуровневыми функциями. Однако я хотел бы отметить, что я не думаю, что ansatz — хорошая идея. Принудительное использование параметров с аналогичными ошибками не улучшает подгонку.