[python]在 Python 中使用 LMFIT 的数据本身的置信区间

· 收录于 2024-01-06 17:08:07 · source URL

问题详情

在此处输入图片描述

以下是参数置信区间的 LMFIT 实现的链接:http://lmfit.github.io/lmfit-py/confidence.html 这是我使用的代码:

import lmfit
import numpy as np

# x = np.linspace(1, 10, 250)
# np.random.seed(0)
# y = 1. -np.exp(-(x)/10.) +  0.1*np.random.randn(len(x))

pars = lmfit.Parameters()
pars.add_many(('n', 1.),  ('tau', 3.))

# def residual(pars,data=None):
def residual(pars):
    v = pars.valuesdict()
    # if data is None:
    #     return 1.0 - np.exp(-(x**v['n'])/v['tau'])
    return 1.0 - np.exp(-(x**v['n'])/v['tau'])-y

# create Minimizer
mini = lmfit.Minimizer(residual, pars)

# first solve with Nelder-Mead
out1 = mini.minimize(method='Nelder')

out2 = mini.minimize(method='leastsq', params=out1.params)

lmfit.report_fit(out2.params, min_correl=0.5)

ci, trace = lmfit.conf_interval(mini, out2, sigmas=[0.95],
                                trace=True, verbose=False)
lmfit.printfuncs.report_ci(ci)

最佳回答

在python中使用lmfit理解数据

本身的标题置信区间有点困难(没有数据),或者我正在使用lmfit包进行曲线拟合的第一句话(你需要数据来拟合)。

我认为您要求的是一种为与您的数据最匹配的模型函数获取极值的方法。 如果是这样,使用所有参数值组合的最佳 +/- delta(其中 delta 可以是您喜欢的任何不确定水平)来评估您的函数并采用模型函数的极值是否有效? 这不是很自动化,但应该不会太难。