# u_distance_stats_sqr#

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

Unbiased statistics related with the squared distance covariance.

Computes the unbiased estimators for the squared distance covariance and squared distance correlation between two random vectors, and the individual squared distance variances.

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

• y (Array) – 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, Literal['auto', 'naive', 'avl', 'mergesort']]) – 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 squared distance covariance, squared distance correlation, squared distance variance of the first random vector and squared distance variance of the second random vector.

Return type

Stats[Array]

u_distance_covariance_sqr u_distance_correlation_sqr

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.u_distance_stats_sqr(a, a)
...
Stats(covariance_xy=42.6666666..., correlation_xy=1.0,
variance_x=42.6666666..., variance_y=42.6666666...)
>>> dcor.u_distance_stats_sqr(a, b)
...
Stats(covariance_xy=-2.6666666..., correlation_xy=-0.4999999...,
variance_x=42.6666666..., variance_y=0.6666666...)
>>> dcor.u_distance_stats_sqr(b, b)
...
Stats(covariance_xy=0.6666666..., correlation_xy=1.0,
variance_x=0.6666666..., variance_y=0.6666666...)
>>> dcor.u_distance_stats_sqr(a, b, exponent=0.5)
...
Stats(covariance_xy=-0.2996598..., correlation_xy=-0.4050479...,
variance_x=0.8209855..., variance_y=0.6666666...)