This function calculates Cramer's V, a measure of association between two categorical variables.

cramersv(x)

Arguments

x

The result of stats::chisq.test(), a matrix/table of counts, or a data.frame with exactly two columns representing the two variables.

Value

A numeric vector of length one.

Details

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.

References

Cramer, Harald. 1946. Mathematical Methods of Statistics. Princeton: Princeton University Press, page 282 (Chapter 21. The two-dimensional case).

See also

Examples

cramersv(mtcars[c("am", "vs")])
#> [1] 0.1683451