Computes Randolph's free-marginal multirater kappa for \(m\) raters over \(N\) subjects. This agreement coefficient does not assume fixed marginal distributions (i.e., it is free-marginal).
Arguments
- x
a matrix of size \(N \times m\) with subjects in rows and raters in columns; cells contain the assigned categories
- categories
the categories a rater could have chosen from, or a single number giving how many there were. Defaults to
NULL, i.e. the categories actually observed inx. See Details.- conf.level
reserved for future confidence intervals; must be
NA- ...
reserved for future bootstrap options and currently ignored
Details
Let \(k\) be the number of categories, \(m\) the number of raters, and
\(N\) the number of subjects. Randolph's kappa is
$$\kappa = \frac{P_o - 1/k}{1 - 1/k},$$
where the observed agreement \(P_o\) is the proportion of agreeing rater
pairs,
$$P_o = \frac{1}{N} \sum_{i=1}^{N}
\frac{\sum_{j} n_{ij}(n_{ij}-1)}{m(m-1)}.$$
Here, \(n_{ij}\) denotes the number of raters who assigned subject \(i\)
to category \(j\). This is the same observed agreement as in Fleiss'
kappa (and as computed by percAgreement()); Randolph's
coefficient differs from Fleiss' only in the chance agreement \(P_e\),
which is fixed at \(1/k\) instead of being estimated from the marginals.
\(P_e = 1/k\) refers to the categories a rater could have chosen,
not to those that happen to occur in the data. If a category was available
but never used, the default categories = NULL understates \(k\)
and thus overstates chance agreement, which biases \(\kappa\) downwards.
Supply categories whenever the coding scheme is known.
Long-format ratings can first be reshaped with raterFrame().
References
Randolph, J. J. (2005). Free-Marginal Multirater Kappa (multirater \(\kappa_{\mathrm{free}}\)): An Alternative to Fleiss’ Fixed-Marginal Multirater Kappa. Online submission.
See also
Other assoc.agreement:
ccc(),
cohenKappa(),
cronbachAlpha(),
icc(),
kappaM(),
krippAlpha(),
pabak(),
percAgreement()
Examples
## Matrix (subjects x raters), 5 subjects, 3 raters
x <- matrix(c(
1,1,1,
2,2,2,
1,2,1,
3,3,3,
2,2,1
), ncol = 3, byrow = TRUE)
randolphKappa(x)
#> [1] 0.6
# the raters could have chosen from five categories, not just the three
# they used
randolphKappa(x, categories = 5)
#> [1] 0.6666667
## Long format with a formula
df <- data.frame(
subject = rep(1:5, each = 3),
rater = rep(paste0("r", 1:3), times = 5),
rating = c(1,1,1, 2,2,2, 1,2,1, 3,3,3, 2,2,1)
)
randolphKappa(raterFrame(rating ~ subject | rater,
data = df, dropSubj=TRUE))
#> [1] 0.6
