scipy.odr.Model¶

class
scipy.odr.
Model
(fcn, fjacb=None, fjacd=None, extra_args=None, estimate=None, implicit=0, meta=None)[source]¶ The Model class stores information about the function you wish to fit.
It stores the function itself, at the least, and optionally stores functions which compute the Jacobians used during fitting. Also, one can provide a function that will provide reasonable starting values for the fit parameters possibly given the set of data.
 Parameters
 fcnfunction
fcn(beta, x) –> y
 fjacbfunction
Jacobian of fcn wrt the fit parameters beta.
fjacb(beta, x) –> @f_i(x,B)/@B_j
 fjacdfunction
Jacobian of fcn wrt the (possibly multidimensional) input variable.
fjacd(beta, x) –> @f_i(x,B)/@x_j
 extra_argstuple, optional
If specified, extra_args should be a tuple of extra arguments to pass to fcn, fjacb, and fjacd. Each will be called by apply(fcn, (beta, x) + extra_args)
 estimatearray_like of rank1
Provides estimates of the fit parameters from the data
estimate(data) –> estbeta
 implicitboolean
If TRUE, specifies that the model is implicit; i.e fcn(beta, x) ~= 0 and there is no y data to fit against
 metadict, optional
freeform dictionary of metadata for the model
Notes
Note that the fcn, fjacb, and fjacd operate on NumPy arrays and return a NumPy array. The estimate object takes an instance of the Data class.
Here are the rules for the shapes of the argument and return arrays of the callback functions:
 x
if the input data is singledimensional, then x is rank1 array; i.e.,
x = array([1, 2, 3, ...]); x.shape = (n,)
If the input data is multidimensional, then x is a rank2 array; i.e.,x = array([[1, 2, ...], [2, 4, ...]]); x.shape = (m, n)
. In all cases, it has the same shape as the input data array passed toodr
. m is the dimensionality of the input data, n is the number of observations. y
if the response variable is singledimensional, then y is a rank1 array, i.e.,
y = array([2, 4, ...]); y.shape = (n,)
. If the response variable is multidimensional, then y is a rank2 array, i.e.,y = array([[2, 4, ...], [3, 6, ...]]); y.shape = (q, n)
where q is the dimensionality of the response variable. beta
rank1 array of length p where p is the number of parameters; i.e.
beta = array([B_1, B_2, ..., B_p])
 fjacb
if the response variable is multidimensional, then the return array’s shape is (q, p, n) such that
fjacb(x,beta)[l,k,i] = d f_l(X,B)/d B_k
evaluated at the ith data point. If q == 1, then the return array is only rank2 and with shape (p, n). fjacd
as with fjacb, only the return array’s shape is (q, m, n) such that
fjacd(x,beta)[l,j,i] = d f_l(X,B)/d X_j
at the ith data point. If q == 1, then the return array’s shape is (m, n). If m == 1, the shape is (q, n). If m == q == 1, the shape is (n,).
Methods
set_meta
(self, **kwds)Update the metadata dictionary with the keywords and data provided here.