scipy.odr.

模型#

class scipy.odr.Model(fcn, fjacb=None, fjacd=None, extra_args=None, estimate=None, implicit=0, meta=None)[原始碼]#

Model 類別儲存了關於您想要擬合的函數的資訊。

它至少儲存了函數本身,並且可選擇性地儲存用於計算擬合過程中使用的 Jacobian 矩陣的函數。此外,還可以提供一個函數,該函數可以為擬合參數提供合理的起始值,這些起始值可能基於給定的數據集。

參數:
fcn函數

fcn(beta, x) –> y

fjacb函數

fcn 關於擬合參數 beta 的 Jacobian 矩陣。

fjacb(beta, x) –> @f_i(x,B)/@B_j

fjacd函數

fcn 關於(可能為多維)輸入變數的 Jacobian 矩陣。

fjacd(beta, x) –> @f_i(x,B)/@x_j

extra_argstuple, 選項性

如果指定,extra_args 應該是一個額外參數的 tuple,用於傳遞給 fcnfjacbfjacd。每個函數都將被 apply(fcn, (beta, x) + extra_args) 呼叫

estimate類似陣列,秩為 1

從數據中提供擬合參數的估計值

estimate(data) –> estbeta

implicit布林值

如果為 TRUE,則指定模型是隱含的;即 fcn(beta, x) ~= 0 並且沒有 y 數據可供擬合

metadict, 選項性

模型的中繼資料的自由格式字典

注意

請注意,fcnfjacbfjacd 操作 NumPy 陣列並返回 NumPy 陣列。estimate 物件接受 Data 類別的實例。

以下是回呼函數的參數和回傳陣列形狀的規則

x

如果輸入數據是單維的,則 x 是秩為 1 的陣列;即,x = array([1, 2, 3, ...]); x.shape = (n,)。如果輸入數據是多維的,則 x 是秩為 2 的陣列;即,x = array([[1, 2, ...], [2, 4, ...]]); x.shape = (m, n)。在所有情況下,它都具有與傳遞給 odr 的輸入數據陣列相同的形狀。m 是輸入數據的維度,n 是觀測值的數量。

y

如果響應變數是單維的,則 y 是秩為 1 的陣列,即,y = array([2, 4, ...]); y.shape = (n,)。如果響應變數是多維的,則 y 是秩為 2 的陣列,即,y = array([[2, 4, ...], [3, 6, ...]]); y.shape = (q, n),其中 q 是響應變數的維度。

beta

長度為 p 的秩為 1 的陣列,其中 p 是參數的數量;即 beta = array([B_1, B_2, ..., B_p])

fjacb

如果響應變數是多維的,則回傳陣列的形狀為 (q, p, n),使得 fjacb(x,beta)[l,k,i] = d f_l(X,B)/d B_k 在第 i 個數據點上評估。如果 q == 1,則回傳陣列僅為秩 2,形狀為 (p, n)

fjacd

與 fjacb 相同,只有回傳陣列的形狀為 (q, m, n),使得 fjacd(x,beta)[l,j,i] = d f_l(X,B)/d X_j 在第 i 個數據點上。如果 q == 1,則回傳陣列的形狀為 (m, n)。如果 m == 1,則形狀為 (q, n)。如果 m == q == 1,則形狀為 (n,)

方法

set_meta(**kwds)

使用此處提供的關鍵字和數據更新中繼資料字典。