Skip to main content
`Ctrl`+`K`

# biweight_location

astropy.stats.biweight_location(data, c=6.0, M=None, axis=None, *, ignore_nan=False)

  Compute the biweight location.

  The biweight location is a robust statistic for determining the central location of a distribution. It is given by:

  \[\zeta_{biloc}= M + \frac{\sum_{|u_i|<1} \ (x_i - M) (1 - u_i^2)^2} {\sum_{|u_i|<1} \ (1 - u_i^2)^2}\]

  where \(x\) is the input data, \(M\) is the sample median (or the input initial location guess) and \(u_i\) is given by:

  \[u_{i} = \frac{(x_i - M)}{c * MAD}\]

  where \(c\) is the tuning constant and \(MAD\) is the median absolute deviation. The biweight location tuning constant `c` is typically 6.0 (the default).

  If \(MAD\) is zero, then the median will be returned.

  Parameters:
    data numpy:array_like

      Input array or object that can be converted to an array. `data` can be a `MaskedArray`.

    c `python:float`, optional

      Tuning constant for the biweight estimator (default = 6.0).

    M `python:float` or numpy:array_like, optional

      Initial guess for the location. If `M` is a scalar value, then its value will be used for the entire array (or along each `axis`, if specified). If `M` is an array, then its must be an array containing the initial location estimate along each `axis` of the input array. If `None` (default), then the median of the input array will be used (or along each `axis`, if specified).

    axis `python:int` or `python:tuple` of `python:int`, optional

      The axis or axes along which the biweight locations are computed. If `None` (default), then the biweight location of the flattened input array will be computed.

    ignore_nan bool, optional

      Whether to ignore NaN values in the input `data`.

  Returns:
    biweight_location `python:float` or `ndarray`

      The biweight location of the input data. If `axis` is `None` then a scalar will be returned, otherwise a `ndarray` will be returned.

  See also

  `biweight_scale`, `biweight_midvariance`, `biweight_midcovariance`

  References

  [1]

  Beers, Flynn, and Gebhardt (1990; AJ 100, 32) (https://ui.adsabs.harvard.edu/abs/1990AJ….100…32B)

  [2]

  https://www.itl.nist.gov/div898/software/dataplot/refman2/auxillar/biwloc.htm

  Examples

  Generate random variates from a Gaussian distribution and return the biweight location of the distribution:

      >>> import numpy as np
      >>> from astropy.stats import biweight_location
      >>> rand = np.random.default_rng(12345)
      >>> biloc = biweight_location(rand.standard_normal(1000))
      >>> print(biloc)
      0.01535330525461019