Power of $\chi^2$ tests for homogeneity and independence I recently studied these topics and I was wondering what their power is. My opinion is that since we are relying on an approximate chi-square distribution it cannot be much and so we have to be extra cautious. Is that right? Thanks.
 A: It is not actually true that the power of an approximate test, or, more specifically, an approximate $\chi^2$ test, cannot be much.  One can easily construct cases with very high power and not very large sample sizes, for example the following, where $N=30$ observations are drawn from a $\text{Binomial}(5,0.75)$ distribution and compared to a null hypothesis of a $\text{Uniform}$ distribution on $\{0,1,\dots,5\}$:
M <- 1000
N <- 30
stat.ha <- stat.ho <- rep(0,M)
z <- rep(0,6)
for (i in 1:M) {
   x <- rbinom(N, 5, 0.75)
   for (j in 1:6) z[j] <- sum(x == j-1)
   stat.ha[i] <- chisq.test(z)$p.value
   x <- sample(0:5, N, replace=TRUE)
   for (j in 1:6) z[j] <- sum(x == j-1)
   stat.ho[i] <- chisq.test(z)$p.value
}
mean(stat.ha < 0.05)
[1] 1
mean(stat.ho < 0.05)
[1] 0.052

1000 randomly-generated datasets are tested using the $\chi^2$ approximation, which evidently a) achieves close to the nominal $\alpha=0.05$, and b) has a power pretty close to $1$ against the Binomial distribution.   
Even a sample size of 10 gives a good result:
 mean(stat.ha < 0.05)
[1] 0.514
> mean(stat.ho < 0.05)
[1] 0.039

Where one does have to be careful is when in a situation where the sample size is too small for the asymptotics to kick in; then, the nominal level of the test may well be considerably different from the actual level (i.e., the actual $\alpha$ is way off), and of course you may have power problems as well.  For example, decreasing our sample size to 5 in the above example generates the following results:
> mean(stat.ha < 0.05)
[1] 0.114
> mean(stat.ho < 0.05)
[1] 0.012

which indicates that the test is conservative; still, with a sample size of 5, you can't expect too much.
Having written this, I will also point out that you aren't constrained to use the asymptotic $\chi^2$ distribution to calculate p-values / significance just because you're using a test statistic associated with the asymptotic $\chi^2$ distribution.  You can use simulation to calculate the p-values instead, and in many cases, this can help considerably.  However, there are limits; with our sample size of 5, for example, there are not all that many values for the $\chi^2$ statistic we can actually get, so we may not be able to close the gap between nominal and actual test levels all that much.  You also aren't, typically, going to be able to improve the power from low to high levels.
Rerunning our sample size 5 experiment with the added parameter simulate.p.value=TRUE results in:
> mean(stat.ha < 0.05)
[1] 0.109
> mean(stat.ho < 0.05)
[1] 0.024

Not much of an improvement, if any.
