在python中使用lmfit的数据本身的置信区间

时间:2015-10-21 20:40:17

标签: python numpy curve-fitting lmfit

enter image description here

以下是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)

1 个答案:

答案 0 :(得分:0)

使用python中的lmfit (没有数据)或第一句我正在使用曲线拟合来理解数据本身的标题置信区间有点困难lmfit包(你需要适合的数据)。

我认为您要求的是获得最符合您数据的模型函数的极值的方法。如果是这样,是否可以使用参数值best +/- delta的所有组合评估您的函数(其中delta可能是您喜欢的任何不确定级别),并采用模型函数的极值?这不是很自动化,但不应该太难。