正交距離迴歸 (scipy.odr
)#
套件內容#
|
要擬合的資料。 |
|
資料,權重為實際標準差和/或共變異數。 |
|
Model 類別儲存您希望擬合的函數相關資訊。 |
|
ODR 類別收集所有資訊並協調主要擬合常式的執行。 |
|
Output 類別儲存 ODR 運行的輸出。 |
|
用於 ODR 的底層函數。 |
警告,表示傳遞到 ODR 的資料在傳遞到 'odr' 時會導致問題,使用者應注意。 |
|
異常,表示擬合中發生錯誤。 |
|
異常,停止擬合。 |
|
|
通用多項式模型的工廠函數。 |
指數模型 |
|
任意維度的線性模型 |
|
單變數線性模型 |
|
二次模型 |
使用資訊#
簡介#
為何使用正交距離迴歸 (ODR)? 有時,解釋變數(又稱「自變數」)以及響應變數(又稱「應變數」)都存在測量誤差。普通最小平方法 (OLS) 擬合程序將解釋變數的資料視為固定的,即不受任何種類的誤差影響。此外,OLS 程序要求響應變數是解釋變數的顯式函數;有時使方程式顯式不切實際和/或會引入誤差。ODR 可以輕鬆處理這兩種情況,如果問題足以應付,甚至可以簡化為 OLS 情況。
ODRPACK 是一個 FORTRAN-77 程式庫,用於執行具有可能非線性擬合函數的 ODR。它使用修改後的信賴域 Levenberg-Marquardt 型演算法 [1] 來估計函數參數。擬合函數由在 NumPy 陣列上運作的 Python 函數提供。所需的導數也可以由 Python 函數提供,或者可以數值估計。ODRPACK 可以執行顯式或隱式 ODR 擬合,也可以執行 OLS。輸入和輸出變數可以是多維的。可以提供權重以考慮觀測值的不同變異數,甚至是變數維度之間的共變異數。
scipy.odr
套件提供 ODRPACK 的物件導向介面,以及底層的 odr
函數。
有關 ODRPACK 的更多背景資訊,請參閱 ODRPACK 使用者指南,建議閱讀該指南。
基本用法#
定義您要擬合的函數。
def f(B, x): '''Linear function y = m*x + b''' # B is a vector of the parameters. # x is an array of the current x values. # x is in the same format as the x passed to Data or RealData. # # Return an array in the same format as y passed to Data or RealData. return B[0]*x + B[1]
建立 Model。
linear = Model(f)
建立 Data 或 RealData 實例。
mydata = Data(x, y, wd=1./power(sx,2), we=1./power(sy,2))
或者,當實際共變異數已知時
mydata = RealData(x, y, sx=sx, sy=sy)
使用您的資料、模型和初始參數估計來實例化 ODR。
myodr = ODR(mydata, linear, beta0=[1., 2.])
執行擬合。
myoutput = myodr.run()
檢查輸出。
myoutput.pprint()
參考文獻#
P. T. Boggs 和 J. E. Rogers,“Orthogonal Distance Regression,”在“Statistical analysis of measurement error models and applications: proceedings of the AMS-IMS-SIAM joint summer research conference held June 10-16, 1989,”Contemporary Mathematics,卷。 112,第 186 頁,1990 年。