簡體   English   中英

多維ODR配件

[英]Multi-dimensional ODR fitting

我想在一個擬合步驟中使用scipy.odr擬合M = 2組N = 3個觀測值(X,Y),從中我希望得到2*M最佳擬合值(每個模型中的斜率和截距估計值) M套觀察值)。 通過閱讀scipy.odr文檔和一些相關的stackoverflow問題,似乎應該可以,但是當我嘗試使用以下最小示例時,擬合無法收斂( Reason(s) for Halting: NP < 1 or NP > N )。

我從最合適的beta值的合理近似值開始。 有什么想法為什么會如此慘敗?

from pylab import *
from scipy import odr

x = array([[1.0,2.0,3.0],[1.1,2.1,3.1]])
y = array([[1.1,2.3,3.1],[5.9,7.0,8.2]])
sx = x*0 + .1
sy = y*0 + .1

def f(B, x):
    out = x * 0
    for k in range(x.shape[0]) :
        out[k,:] = B[2*k] * x[k,:] + B[2*k+1]
    return out

result = odr.ODR(
    odr.RealData( x, y, sx = sx, sy = sy ),
    odr.Model(f), beta0 = array([1.,0.,1.,5.])
    ).run()

result.pprint()

該錯誤消息與您的起始值無關。 我不確定ODR可以處理此數據,因為它實際上是x,y,z 我的解釋是,它計算xy的成員, xy每個成員均為N=2 (但仍然是數組),並將其與您的自由參數NP=4 ,因此NP>N

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM