Source code for astropy.modeling.statistic

# Licensed under a 3-clause BSD style license - see LICENSE.rst

"""
Statistic functions used in `~astropy.modeling.fitting`.
"""
# pylint: disable=invalid-name
import numpy as np

__all__ = ['leastsquare']


[docs]def leastsquare(measured_vals, updated_model, weights, x, y=None): """ Least square statistic with optional weights. Parameters ---------- measured_vals : `~numpy.ndarray` Measured data values. updated_model : `~astropy.modeling.Model` Model with parameters set by the current iteration of the optimizer. weights : `~numpy.ndarray` Array of weights to apply to each residual. x : `~numpy.ndarray` Independent variable "x" to evaluate the model on. y : `~numpy.ndarray`, optional Independent variable "y" to evaluate the model on, for 2D models. Returns ------- res : float The sum of least squares. """ if y is None: model_vals = updated_model(x) else: model_vals = updated_model(x, y) if weights is None: return np.sum((model_vals - measured_vals) ** 2) return np.sum((weights * (model_vals - measured_vals)) ** 2)