der Ausgangsfehler ist: MinimizerException: Kann nicht Konfidenzintervalle ohne vernünftige Unsicherheit bestimmen schätztLMFIT Konfidenzintervall Unsicherheitsschätzungen Fehler auf Python
Warum ich diesen Fehler habe? Wie kann ich Unsicherheitsschätzungen berechnen und dieses Problem lösen?
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)
Könnten Sie bitte etwas mehr Informationen über das Format Ihrer Restfunktion hinzufügen? Was ist woz? Ich gehe davon aus, dass seit Ihrer Minimierungsroutine ein reduziertes Array innerhalb des Residuums zurückgegeben wird. Eine Sache, die Sie vielleicht ausprobieren möchten, ist das Hinzufügen angemessener Grenzen für die Parameter, die Sie definieren, oder das Beschränken Ihrer Konfidenzintervallberechnung auf einige wenige Parameter, um mit der Diagnose zu beginnen. Zum Beispiel 'params.add ('gamma', Wert = -0,7, max = 0, min = 4) 'oder' lmfit.conf_interval (mini, result, p_names = ['gamma']' Welche Version von lmfit benutzt du? – XtremeJake