多维ODR配件

时间:2017-10-02 19:48:27

标签: python scipy data-fitting

我希望在单个拟合步骤中使用2*M拟合M = 2组N = 3个观测值(X,Y),我希望从中获得scipy.odr最佳拟合值(斜率)并且在M组观察中的每一组内截取估计值)。从阅读Reason(s) for Halting: NP < 1 or NP > N文档和一些相关的stackoverflow问题,似乎这应该是可能的,但是当我尝试使用下面的最小示例时,拟合无法收敛(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() 值的相当好的近似开始。有什么想法为什么会如此悲惨地失败?

user = {
  firstName: 'Nick',
  age: 35
  location: {
    country: 'USA',
    city: 'NYC',
  },
}

1 个答案:

答案 0 :(得分:0)

错误消息与您的起始值无关。我不确定ODR是否可以处理此数据,因为它实际上是x,y,z。我的解释是它会计算xy的成员,每个成员N=2(数组,但不过)并将其与您的免费参数进行比较,即NP=4 ,所以NP>N