biweight_location¶
- astropy.stats.biweight_location(data, c=6.0, M=None, axis=None, *, ignore_nan=False)[source]¶
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:
- datanumpy:array_like
Input array or object that can be converted to an array.
data
can be aMaskedArray
.- 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 eachaxis
, if specified). IfM
is an array, then its must be an array containing the initial location estimate along eachaxis
of the input array. IfNone
(default), then the median of the input array will be used (or along eachaxis
, if specified).- axis
python:None
,python:int
, orpython:tuple
ofpython: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_nanbool, optional
Whether to ignore NaN values in the input
data
.
- Returns:
- biweight_location
python:float
orndarray
The biweight location of the input data. If
axis
isNone
then a scalar will be returned, otherwise andarray
will be returned.
- biweight_location
References
[1]Beers, Flynn, and Gebhardt (1990; AJ 100, 32) (https://ui.adsabs.harvard.edu/abs/1990AJ….100…32B)
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