bundles / scipy 2.0.0.dev0+git20260907.41eeb59 / scipy / stats / _stats_py / kendalltau
function
scipy.stats._stats_py:kendalltau
source: build-install/usr/lib/python3.14/site-packages/scipy/stats/_stats_py.py:5597
Signature
def kendalltau(x, y, *, nan_policy = propagate, method = auto, variant = b, alternative = two-sided, axis = None, keepdims = False)Summary
Calculate Kendall's tau, a correlation measure for ordinal data.
Extended Summary
Kendall's tau is a measure of the correspondence between two rankings. Values close to 1 indicate strong agreement, and values close to -1 indicate strong disagreement. This implements two variants of Kendall's tau: tau-b (the default) and tau-c (also known as Stuart's tau-c). These differ only in how they are normalized to lie within the range -1 to 1; the hypothesis tests (their p-values) are identical. Kendall's original tau-a is not implemented separately because both tau-b and tau-c reduce to tau-a in the absence of ties.
Although a naive implementation has O(n^2) complexity, this implementation uses a Fenwick tree to do the computation in O(n log(n)) complexity.
Parameters
x, y: array_likeArrays of rankings, of the same shape. If arrays are not 1-D, they will be flattened to 1-D.
nan_policy: {'propagate', 'raise', 'omit'}, optionalDefines how to handle when input contains nan. The following options are available (default is 'propagate'):
'propagate': returns nan
'raise': throws an error
'omit': performs the calculations ignoring nan values
method: {'auto', 'asymptotic', 'exact'}, optionalDefines which method is used to calculate the p-value [5]. The following options are available (default is 'auto'):
'auto': selects the appropriate method based on a trade-off between speed and accuracy
'asymptotic': uses a normal approximation valid for large samples
'exact': computes the exact p-value, but can only be used if no ties are present. As the sample size increases, the 'exact' computation time may grow and the result may lose some precision.
variant: {'b', 'c'}, optionalDefines which variant of Kendall's tau is returned. Default is 'b'.
alternative: {'two-sided', 'less', 'greater'}, optionalDefines the alternative hypothesis. Default is 'two-sided'. The following options are available:
'two-sided': the rank correlation is nonzero
'less': the rank correlation is negative (less than zero)
'greater': the rank correlation is positive (greater than zero)
axis: int or None, default: NoneIf an int, the axis of the input along which to compute the statistic. The statistic of each axis-slice (e.g. row) of the input will appear in a corresponding element of the output. If
None, the input will be raveled before computing the statistic.keepdims: bool, optionalIf this is set to
True, the axes which are reduced are left in the result as dimensions with length one. With this option, the result will broadcast correctly against the input array.
Returns
res: SignificanceResultAn object containing attributes:
statistic
The tau statistic.
pvalue
The p-value for a hypothesis test whose null hypothesis is an absence of association, tau = 0.
Raises
: ValueErrorIf
nan_policyis 'omit' andvariantis not 'b' or ifmethodis 'exact' and there are ties betweenxandy.
Notes
The definition of Kendall's tau that is used is [2]
tau_b = (P - Q) / sqrt((P + Q + T) * (P + Q + U)) tau_c = 2 (P - Q) / (n**2 * (m - 1) / m)
where P is the number of concordant pairs, Q the number of discordant pairs, T the number of tied pairs only in x, and U the number of tied pairs only in y. If a tie occurs for the same pair in both x and y, it is not added to either T or U. n is the total number of samples, and m is the number of unique values in either x or y, whichever is smaller.
Examples
from scipy import stats x1 = [12, 2, 1, 12, 2] x2 = [1, 4, 7, 1, 0] res = stats.kendalltau(x1, x2)✓
res.statistic res.pvalue✗
np.float64(0.28274545993277467)For a more detailed example, see :ref:`hypothesis_kendalltau`.
See also
- hypothesis_kendalltau
Extended example
- spearmanr
Calculates a Spearman rank-order correlation coefficient.
- theilslopes
Computes the Theil-Sen estimator for a set of points (x, y).
- weightedtau
Computes a weighted version of Kendall's tau.
Aliases
scipy.stats.kendalltau