Computes Kendall's coefficient of concordance, a popular measure of association. It is an index of interrater reliability of ordinal data. The coefficient could be corrected for ties within raters.

KendallW(x, correct = FALSE, test = FALSE, na.rm = NULL)

Arguments

x

\(n \times m\) matrix or dataframe, k subjects (in rows) m raters (in columns).

correct

a logical indicating whether the coefficient should be corrected for ties within raters. (Default FALSE)

test

a logical indicating whether the test statistic and p-value should be reported. (Default FALSE)

na.rm

is not longer supported and will be ignored.

Value

Either a single value if test = FALSE or else

a list with class “htest” containing the following components:

statistic

the value of the chi-square statistic.

p.value

the p-value for the test.

method

the character string “Kendall's coefficient of concordance W”.

data.name

a character string giving the name(s) of the data.

estimate

the coefficient of concordance.

parameter

the degrees of freedom df, the number of subjects examined and the number of raters.

Details

The test for Kendall's W is completely equivalent to friedman.test. The only advantage of this test over Friedman's is that Kendall's W has an interpretation as the coefficient of concordance. The test itself is only valid for large samples.
Kendall's W should be corrected for ties, if raters did not use a true ranking order for the subjects. The function warns if ties are present and no correction has been required.

In the presence of NAs the algorithm is switched to a generalized form for randomly incomplete datasets introduced in Brueckl (2011). This approach uses the mean Spearman \(\rho\) of all pairwise comparisons (see Kendall, 1962):

$$W = (1+mean(\rho)*(k-1)) / k$$

where k is the mean number of (pairwise) ratings per object and mean(\(\rho\)) is calculated weighted, according to Taylor (1987), since the pairwise are possibly based on a different number of ratings, what must be reflected in weights. In case of complete datasets, it yields the same results as usual implementations of Kendall's W, except for tied ranks. In case of tied ranks, the (pairwise) correction of s used, which (already with complete datasets) results in slightly different values than the tie correction explicitly specified for W.

References

Kendall, M.G. (1948) Rank correlation methods. London: Griffin.

Kendall, M.G. (1962). Rank correlation methods (3rd ed.). London: Griffin.

Brueckl, M. (2011). Statistische Verfahren zur Ermittlung der Urteileruebereinstimmung. in: Altersbedingte Veraenderungen der Stimme und Sprechweise von Frauen, Berlin: Logos, 88–103.

Taylor, J.M.G. (1987). Kendall's and Spearman's correlation coefficients in the presence of a blocking variable. Biometrics, 43, 409–416.

Author

Andri Signorell andri@signorell.net
based on code by Matthias Gamer m.gamer@uke.uni-hamburg.de
and Markus Brueckl markus.brueckl@tu-berlin.de

Examples


anxiety <- data.frame(rater1=c(3,3,3,4,5,5,2,3,5,2,2,6,1,5,2,2,1,2,4,3),
                      rater2=c(3,6,4,6,2,4,2,4,3,3,2,3,3,3,2,2,1,3,3,4),
                      rater3=c(2,1,4,4,3,2,1,6,1,1,1,2,3,3,1,1,3,3,2,2))

KendallW(anxiety, TRUE)
#> [1] 0.5396569

# with test results
KendallW(anxiety, TRUE, test=TRUE)
#> 
#> 	Kendall's coefficient of concordance W (with ties correction)
#> 
#> data:  anxiety
#> Kendall chi-squared = 30.76, df = 19, subjects = 20, raters = 3,
#> p-value = 0.04288
#> alternative hypothesis: W is greater 0
#> sample estimates:
#>         W 
#> 0.5396569 
#> 

# example from Siegel and Castellan (1988)
d.att <- data.frame(
  id        = c(4,21,11),
  airfare   = c(5,1,4),
  climate   = c(6,7,5),
  season    = c(7,6,1),
  people    = c(1,2,3),
  program   = c(2,3,2),
  publicity = c(4,5,7),
  present   = c(3,4,6),
  interest  = c(8,8,8)
)

KendallW(t(d.att[, -1]), test = TRUE)
#> 
#> 	Kendall's coefficient of concordance W
#> 
#> data:  t(d.att[, -1])
#> Kendall chi-squared = 13.778, df = 7, subjects = 8, raters = 3, p-value
#> = 0.05528
#> alternative hypothesis: W is greater 0
#> sample estimates:
#>         W 
#> 0.6560847 
#> 

# which is perfectly the same as
friedman.test(y=as.matrix(d.att[,-1]), groups = d.att$id)
#> 
#> 	Friedman rank sum test
#> 
#> data:  as.matrix(d.att[, -1])
#> Friedman chi-squared = 13.778, df = 7, p-value = 0.05528
#>