【发布时间】:2016-05-05 08:12:59
【问题描述】:
输出错误是: 最小化异常: 如果没有合理的不确定性估计,就无法确定置信区间
为什么会出现这个错误?如何计算不确定性估计并解决这个问题?
for dosya1 in glob.glob("mean*"):
data1=np.genfromtxt(dosya1, skip_header=0, skip_footer=0, names=["wavelength","mean"])
x=data1["wavelength"]
mod=VoigtModel()
pars = mod.guess(y, x=x)
pars['gamma'].set(value=0.7, vary=True, expr="")
out=mod.fit(y,pars, x=x)
pars=lmfit.Parameters()
pars.add_many(('amp', out.params["amplitude"].value), ('sig', out.params["sigma"].value), ("gam",out.params["gamma"].value),("cent",out.params["center"].value))
def residual(p):
amp=p["amp"].value
sig=p["sig"].value
gam=p["gam"].value
cent=p["cent"].value
return ((wofz((x-cent + wofz(gam).imag)/(sig*(sqrt(2)))).real) / (sig*(sqrt(2))))- y
mini = lmfit.Minimizer(residual, pars)
result=mini.minimize()
ci = lmfit.conf_interval(mini, result)
lmfit.printfuncs.report_ci(ci)
【问题讨论】:
-
您能否添加更多关于残差函数格式的信息?什么是wofz?我假设自从您的最小化例程完成后,您将在残差内返回一个扁平数组。您可能想要尝试的一件事是为您定义的参数添加合理的界限或将置信区间计算限制为几个参数以开始诊断。例如
params.add('gamma', value = -0.7, max=0, min=4)或lmfit.conf_interval(mini, result, p_names=['gamma']您使用的是哪个版本的lmfit?
标签: python confidence-interval uncertainty lmfit