🎉 75% of content is free forever — Unlock Premium from $10/mo →
CW
Search courses…
💼 Servicesℹ️ About✉️ ContactView Pricing Plansfrom $10

Kendall's Tau — Concordance-Based Correlation

Foundations of StatisticsDescriptive Statistics🟢 Free Lesson

Advertisement

Kendall's Tau

Descriptive Statistics

Count Pairs, Not Pixels — A More Intuitive Correlation

Kendall's τ takes a fundamentally different approach to correlation: instead of squaring differences, it simply counts how many pairs of observations agree or disagree. This makes it one of the most intuitive measures of rank association.

Key things Kendall's tau helps you understand:

  • Concordant vs discordant pairs — A pair agrees (concordant) if both variables rank in the same order; it disagrees (discordant) if they flip.
  • Robust small-sample behavior — Kendall's τ has better statistical properties than Spearman for small datasets with many tied ranks.
  • Tied rank handling — The τ-b variant gracefully adjusts for ties, making it the default choice in most software.

In small samples or datasets full of ties, Kendall's τ often tells the more honest story.


What is Kendall's Tau?

Definition

Kendall's τ (tau) measures the ordinal association between two variables by counting concordant and discordant pairs.


import numpy as np
from scipy import stats

np.random.seed(42)

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([2, 1, 4, 3, 6, 5, 8, 7])

tau, p_value = stats.kendalltau(x, y)
print(f"Kendall's tau = {tau:.4f}")
print(f"p-value       = {p_value:.4f}")

Concordant vs Discordant Pairs

A pair (i, j) is concordant if both x and y rank in the same order: and (or both >).

A pair is discordant if the ranks disagree: but .

Pair TypeConditionEffect on τ
ConcordantSame order in X and YIncreases τ
DiscordantOpposite order in X and YDecreases τ
TiedSame rank in X or YExcluded from calculation

Kendall's τ-a vs τ-b

VariantFormulaWhen to Use
τ-aNo ties in data
τ-bHandles ties (default in scipy)
τ-cRectangular tables
# τ-a (no ties correction)
n = len(x)
tau_a = 2 * (tau)  # Simplified; scipy does not directly compute τ-a
print(f"τ-b = {tau:.4f}")

Comparison with Spearman

np.random.seed(42)
n = 20
x = np.random.normal(0, 1, n)
y = x + np.random.normal(0, 0.5, n)

rho, _ = stats.spearmanr(x, y)
tau, _ = stats.kendalltau(x, y)

print(f"Spearman ρ = {rho:.4f}")
print(f"Kendall τ  = {tau:.4f}")

Kendall Tau in Machine Learning

ML ApplicationKendall Tau UsageWhy
Learning to rankEvaluate ranking agreementHandles ties better than Spearman
Recommendation systemsUser preference orderingRank-based evaluation
Feature selectionOrdinal feature relationshipsRobust to outliers
Inter-rater reliabilityAgreement between annotatorsLabel quality assessment
import numpy as np
from scipy.stats import kendalltau, spearmanr

# Compare rankings
model_a_ranks = [1, 2, 3, 4, 5]
model_b_ranks = [1, 3, 2, 5, 4]

kendall_tau, _ = kendalltau(model_a_ranks, model_b_ranks)
spearman_rho, _ = spearmanr(model_a_ranks, model_b_ranks)
print(f"Ranking agreement: Kendall τ = {kendall_tau:.3f}, Spearman ρ = {spearman_rho:.3f}")
print("Kendall tau is more conservative (fewer pairwise comparisons)")

Key Takeaways

Kendall's τ counts concordant vs discordant pairs — an intuitive, pair-wise interpretation of rank association.

τ ranges from -1 to +1 — same scale as Spearman's ρ, making comparison straightforward.

τ-b is the default — handles tied ranks gracefully, unlike the simpler τ-a variant.

More robust than Spearman for small samples and many ties, but expect lower absolute values — this is expected, not a flaw.

"When your sample is small or full of ties, let Kendall's τ do the counting — concordant pairs agree, discordant pairs disagree, and the truth falls somewhere in between."

Need Expert Statistics Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement