【问题标题】:LMFIT confidence interval uncertainty estimates error on pythonLMFIT置信区间不确定性估计python上的错误
【发布时间】: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


【解决方案1】:

如果lmfit.minimize()(实际上是leastsq(),它调用它)无法通过反转曲率矩阵来估计不确定性,您将收到此错误消息。它使用这些值(通常是非常好的估计,顺便说一句)作为显式探索参数空间的尺度。 leastsq() 可能无法估计不确定性有几个可能的原因。常见原因是没有发现一个或多个变量会改变拟合,或者残差包含 NaN。

很难预测何时会发生这种情况。在调用conf_interval() 之前,您应该考虑这种可能性和/或检查初始拟合是否成功并且能够对不确定性进行初始估计(检查result.errorbars)。

【讨论】:

  • 感谢 Matt 在 lmfit 上所做的工作。在不确定性估计失败的情况下,您能提出其他建议吗? IE。当没有没有影响的变量并且残差不包含 NaN 时。我的印象是,leastsq 经常不能产生协方差矩阵。还有其他方法可以获得置信区间吗?
  • 嗯,这可能取决于不确定性估计失败原因的细节。如果所有变量都具有有限效应并且没有 NaN,它应该可以工作——它不应该“经常”失败。你有多个例子吗?此外,Stackoverflow 是进行此类讨论的糟糕场所,不应鼓励将其用于有关 lmfit 的问题。移至相应的邮件列表。
  • 有同样的问题,没有产生协方差矩阵。相应的邮件列表位于何处?
猜你喜欢
  • 2015-10-07
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多