2017-04-22 282 views
0

我有一個代碼,並使用curve_fit來冷卻洛倫茲和高斯曲線的數據。 我需要得到每個輸出參數的誤差估計值,所以已經打印出popt和pcov 我知道scipy參考指南指出如何使用pcov矩陣來找出錯誤,但是這對我來說是不清楚的,因爲我是編程的新手。 謝謝如何在python中使用pcov來獲取每個參數的錯誤?

回答

0

閱讀文檔通常可以提供這些問題的答案。例如,在https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.htmlcurve_fit()的文件說:

返回:POPT:用於參數陣列 最優值,以使得f的殘差平方(XDATA,* POPT)的總和 - YDATA最小

pcov:2d array popt的估計協方差。對角線提供參數估計的方差。要計算參數的一個標準偏差誤差,請使用perr = np.sqrt(np.diag(pcov))。 西格瑪參數如何影響估計的協方差取決於absolute_sigma參數,如上所述。

這就是說:使用p_sigma = np.sqrt(np.diag(pcov))

請允許我建議,對於曲線擬合高斯和洛倫茲模型,你可能會發現lmfit(https://lmfit.github.io/lmfit-py/)有幫助。它爲這些和其他模型提供了內置版本。在其他功能中,它可以打印格式良好的報告,以便進行包含不確定性的適合的報告。

有關示例,請參見https://lmfit.github.io/lmfit-py/builtin_models.html#example-1-fit-peaked-data-to-gaussian-lorentzian-and-voigt-profiles