  We present the $U$-Statistic Permutation (USP) test of independence in the
context of discrete data displayed in a contingency table. Either Pearson's
chi-squared test of independence, or the $G$-test, are typically used for this
task, but we argue that these tests have serious deficiencies, both in terms of
their inability to control the size of the test, and their power properties. By
contrast, the USP test is guaranteed to control the size of the test at the
nominal level for all sample sizes, has no issues with small (or zero) cell
counts, and is able to detect distributions that violate independence in only a
minimal way. The test statistic is derived from a $U$-statistic estimator of a
natural population measure of dependence, and we prove that this is the unique
minimum variance unbiased estimator of this population quantity. The practical
utility of the USP test is demonstrated on both simulated data, where its power
can be dramatically greater than those of Pearson's test and the $G$-test, and
on real data. The USP test is implemented in the R package USP.
