Scipy.Odr множественная переменная регрессия
Я хотел бы выполнить многомерный ODR сscipy.odr
, Я прочитал документацию по API, там говорится, что многомерность возможна, но я не могу заставить ее работать. Я не могу найти работающий пример в Интернете, и API действительно груб и не дает никаких подсказок, как поступить.
Вот мой MWE:
import numpy as np
import scipy.odr
def linfit(beta, x):
return beta[0]*x[:,0] + beta[1]*x[:,1] + beta[2]
n = 1000
t = np.linspace(0, 1, n)
x = np.full((n, 2), float('nan'))
x[:,0] = 2.5*np.sin(2*np.pi*6*t)+4
x[:,1] = 0.5*np.sin(2*np.pi*7*t + np.pi/3)+2
e = 0.25*np.random.randn(n)
y = 3*x[:,0] + 4*x[:,1] + 5 + e
print(x.shape)
print(y.shape)
linmod = scipy.odr.Model(linfit)
data = scipy.odr.Data(x, y)
odrfit = scipy.odr.ODR(data, linmod, beta0=[1., 1., 1.])
odrres = odrfit.run()
odrres.pprint()
Возникает следующее исключение:
scipy.odr.odrpack.odr_error: number of observations do not match
Который, кажется, связан с моими матричными формами, но я не знаю, как я должен формировать это правильно Кто-нибудь знает?