2

出力エラーは次のとおりです。

なぜこのエラーが発生したのですか? 不確実性の推定値を計算し、この問題を解決するにはどうすればよいですか??

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)  
4

1 に答える 1

4

lmfit.minimize()(実際にはleastsq()、 と呼ばれる) が曲率行列を反転して不確実性を推定できない場合、このエラー メッセージが表示されます。パラメータ空間を明示的に探索するためのスケールとして、これらの値 (多くの場合、非常に適切な推定値です) を使用します。leastsq()不確実性を推定できない理由はいくつか考えられます。一般的な理由は、1 つ以上の変数が近似を変更することが見つからないか、残差に NaN が含まれていることです。

これがいつ起こるかを予測することは困難です。result.errorbarsを呼び出す前に、可能性を考慮し、最初の当てはめが成功し、不確実性の初期推定を行うことができたことを確認する必要があります (チェック) conf_interval()

于 2016-05-07T03:06:28.213 に答える