circvar#
- astropy.stats.circvar(data: NDArray | Quantity, axis: int | None = None, weights: NDArray | None = None) NDArray | Quantity [source]#
Computes the circular variance of an array of circular data.
There are some concepts for defining measures of dispersion for circular data. The variance implemented here is based on the definition given by [1], which is also the same used by the R package ‘CircStats’ [2].
- Parameters:
- data
ndarray
orQuantity
Array of circular (directional) data, which is assumed to be in radians whenever
data
isnumpy.ndarray
. Dimensionless, if Quantity.- axis
int
, optional Axis along which circular variances are computed. The default is to compute the variance of the flattened array.
- weights
numpy.ndarray
, optional In case of grouped data, the i-th element of
weights
represents a weighting factor for each group such thatsum(weights, axis)
equals the number of observations. See [1], remark 1.4, page 22, for detailed explanation.
- data
- Returns:
- circvar
ndarray
orQuantity
[:ref: ‘dimensionless’] Circular variance.
- circvar
Notes
For Scipy < 1.9.0,
scipy.stats.circvar
uses a different definition based on an approximation using the limit of small angles that approaches the linear variance. For Scipy >= 1.9.0,scipy.stats.cirvar
uses a definition consistent with this implementation.References
[1] (1,2)S. R. Jammalamadaka, A. SenGupta. “Topics in Circular Statistics”. Series on Multivariate Analysis, Vol. 5, 2001.
[2]C. Agostinelli, U. Lund. “Circular Statistics from ‘Topics in Circular Statistics (2001)’”. 2015. <https://cran.r-project.org/web/packages/CircStats/CircStats.pdf>
Examples
>>> import numpy as np >>> from astropy.stats import circvar >>> from astropy import units as u >>> data = np.array([51, 67, 40, 109, 31, 358])*u.deg >>> circvar(data) <Quantity 0.16356352748437508>