variables; the value tends to be close to zero when the variables are independent and close to 1 when there is a strong association. Unlike other correlation coefficients, the xi correlation is effective even when the association is not monotonic. Parameters ---------- x, y : array-like The samples: corresponding observations of the independent and dependent variable. The (N-d) arrays must be broadcastable. axis : int, default: 0 Axis along which to perform the test. method : 'asymptotic' or `PermutationMethod` instance, optional Selects the method used to calculate the *p*-value. Default is 'asymptotic'. The following options are available. * ``'asymptotic'``: compares the standardized test statistic against the normal distribution. * `PermutationMethod` instance. In this case, the p-value is computed using `permutation_test` with the provided configuration options and other appropriate settings. y_continuous : bool, default: False Whether `y` is assumed to be drawn from a continuous distribution. If `y` is drawn from a continuous distribution, results are valid whether this is assumed or not, but enabling this assumption will result in faster computation and typically produce similar results. Returns ------- res : SignificanceResult An object containing attributes: statistic : float The xi correlation statistic. pvalue : float The associated *p*-value: the probability of a statistic at least as high as the observed value under the null hypothesis of independence. See Also -------- scipy.stats.pearsonr, scipy.stats.spearmanr, scipy.stats.kendalltau Notes ----- There is currently no special handling of ties in `x`; they are broken arbitrarily by the implementation. [1]_ notes that the statistic is not symmetric in `x` and `y` *by design*: "...we may want to understand if :math:`Y` is a function :math:`X`, and not just if one of the variables is a function of the other." See [1]_ Remark 1. References ---------- .. [1] Chatterjee, Sourav. "A new coefficient of correlation." Journal of the American Statistical Association 116.536 (2021): 2009-2022. :doi:`10.1080/01621459.2020.1758115`. Examples -------- Generate perfectly correlated data, and observe that the xi correlation is nearly 1.0. >>> import numpy as np >>> from scipy import stats >>> rng = np.random.default_rng(348932549825235) >>> x = rng.uniform(0, 10, size=100) >>> y = np.sin(x) >>> res = stats.chatterjeexi(x, y) >>> res.statistic np.float64(0.9012901290129013) The probability of observing such a high value of the statistic under the null hypothesis of independence is very low. >>> res.pvalue np.float64(2.2206974648177804e-46) As noise is introduced, the correlation coefficient decreases. >>> noise = rng.normal(scale=[[0.1], [0.5], [1]], size=(3, 100)) >>> res = stats.chatterjeexi(x, y + noise, axis=-1) >>> res.statistic array([0.79507951, 0.41824182, 0.16651665]) Because the distribution of `y` is continuous, it is valid to pass ``y_continuous=True``. The statistic is identical, and the p-value (not shown) is only slightly different. >>> stats.chatterjeexi(x, y + noise, y_continuous=True, axis=-1).statistic array([0.79507951, 0.41824182, 0.16651665]) Ú