This function calculates Cramer's V, a measure of association between two categorical variables.
cramersv(x)
The result of stats::chisq.test()
, a matrix/table of counts, or
a data.frame
with exactly two columns representing the two variables.
A numeric vector of length one.
Cramer's V is a scaled version of the chi-squared test statistic \(\chi^2\) and takes values in \([0, 1]\). It is calculated as \(\sqrt{\chi^2 / (n \cdot (k - 1))}\), where \(n\) is the number of observations, and \(k\) is the smaller of the number of levels of the two variables.
Yates continuity correction is never applied. So in the 2x2 case, if x
is the
result of stats::chisq.test()
, make sure no continuity correction was applied.
Otherwise, results can be inconsistent.
Cramer, Harald. 1946. Mathematical Methods of Statistics. Princeton: Princeton University Press, page 282 (Chapter 21. The two-dimensional case).
cramersv(mtcars[c("am", "vs")])
#> [1] 0.1683451