dcor.distance_stats

distance_stats(x, y, *, exponent=1, method=DistanceCovarianceMethod.AUTO, compile_mode=CompileMode.AUTO)[source]

Usual (biased) statistics related with the distance covariance.

Computes the usual (biased) estimators for the distance covariance and distance correlation between two random vectors, and the individual distance variances.

Parameters
  • x (T) – First random vector. The columns correspond with the individual random variables while the rows are individual instances of the random vector.

  • y (T) – Second random vector. The columns correspond with the individual random variables while the rows are individual instances of the random vector.

  • exponent (float) – Exponent of the Euclidean distance, in the range \((0, 2)\). Equivalently, it is twice the Hurst parameter of fractional Brownian motion.

  • method (Union[DistanceCovarianceMethod, str]) – Method to use internally to compute the distance covariance.

  • compile_mode (CompileMode) – Compilation mode used. By default it tries to use the fastest available type of compilation.

Returns

Stats object containing distance covariance, distance correlation, distance variance of the first random vector and distance variance of the second random vector.

Return type

Stats[T]

See also

distance_covariance distance_correlation

Notes

It is less efficient to compute the statistics separately, rather than using this function, because some computations can be shared.

Examples

>>> import numpy as np
>>> import dcor
>>> a = np.array([[1., 2., 3., 4.],
...               [5., 6., 7., 8.],
...               [9., 10., 11., 12.],
...               [13., 14., 15., 16.]])
>>> b = np.array([[1.], [0.], [0.], [1.]])
>>> dcor.distance_stats(a, a) 
Stats(covariance_xy=7.2111025..., correlation_xy=1.0,
variance_x=7.2111025..., variance_y=7.2111025...)
>>> dcor.distance_stats(a, b) 
Stats(covariance_xy=1.0, correlation_xy=0.5266403...,
variance_x=7.2111025..., variance_y=0.5)
>>> dcor.distance_stats(b, b) 
Stats(covariance_xy=0.5, correlation_xy=1.0, variance_x=0.5,
variance_y=0.5)
>>> dcor.distance_stats(a, b, exponent=0.5) 
...                             
Stats(covariance_xy=0.6087614..., correlation_xy=0.6703214...,
variance_x=1.6495217..., variance_y=0.5)