G-test

From HandWiki
Short description: Statistical test


In statistics, G-tests are likelihood-ratio or maximum likelihood statistical significance tests that are increasingly being used in situations where chi-squared tests were previously recommended.[1]

Formulation

The general formula for test statistics of the G-test is

G=2∑iOi⋅ln⁡(OiEi),

where Oi≥0 is the observed count in a cell, Ei>0 is the expected count under the null hypothesis, ln denotes the natural logarithm, and the sum is taken over all non-empty cells. The resulting G is asymptotically chi-squared distributed as the total number of observations tends to infinity (convergence in distribution[2]).

Furthermore, the total observed count must be equal to the total expected count:

∑iOi=∑iEi=N,

where N is the total number of observations.

Both, the G-test statistics G and the chi-square test statistics χ2 are special cases of a general family of power divergence statistics by Cressie and Read[2]. For λ∉{0,−1} set

CRλ=2λ(λ+1)∑iOi((OiEi)λ−1).

Then,

G=limλ→0CRλ,χ2=CR1.

Derivation

We can derive the value of the G-test from the log-likelihood ratio test where the underlying model is a multinomial model.

Suppose we had a sample O=(O1,…,Om) where each Oi is the number of times that an object of type i was observed. Furthermore, let N=∑i=1mOi be the total number of observations. If we assume that the underlying model is multinomial, then the test statistic is defined by

ln⁡(L(p~|O)L(p^|O))=ln⁡(∏i=1mp~iOi∏i=1mp^iOi),

where p~=(p~1,…,p~m) is the null hypothesis and p^=(p^1,…,p^m) is the maximum likelihood estimate (MLE) of the parameters given the data. Recall that for the multinomial model, the MLE of p^i given some data is given by

p^i=OiN.

Furthermore, we may represent each null hypothesis parameter p~i as

p~i=EiN,

where Ei is the expected count of objects of type i under the null hypothesis. Thus, by substituting the representations of p~i and p^i in the log-likelihood ratio, the equation simplifies to

ln⁡(L(p~|O)L(p^|O))=ln⁡(∏i=1m(EiOi)Oi)=∑i=1mOiln⁡(EiOi)

Finally, multiply by a factor of −2 (used to make the G-test formula asymptotically equivalent to the Pearson's chi-squared test statistics) to achieve the form

G=−2∑i=1mOiln⁡(EiOi)=2∑i=1mOiln⁡(OiEi)

Heuristically, one can imagine Oi as continuous and approaching zero, in which case Oiln⁡Oi→0, and terms with zero observations can simply be dropped. However the expected count in each cell must be strictly greater than zero for each cell (Ei>0 for all i) to apply the method.

Distribution and use

Given the null hypothesis that the observed frequencies result from random sampling from a distribution with the given expected frequencies, the distribution of the test statistics G is approximately a chi-squared distribution, with the same number of degrees of freedom as in the corresponding chi-squared test.

For very small samples the multinomial test for goodness of fit, and Fisher's exact test for contingency tables, or even Bayesian hypothesis selection are preferable to the G-test.[3] McDonald recommends to always use an exact test (exact test of goodness-of-fit, Fisher's exact test) if the total sample size is less than 1 000 .

There is nothing magical about a sample size of 1 000, it's just a nice round number that is well within the range where an exact test, chi-square test, and G–test will give almost identical p values. Spreadsheets, web-page calculators, and SAS shouldn't have any problem doing an exact test on a sample size of 1 000 .
— John H. McDonald (2014)[3]

G-tests have been recommended at least since the 1981 edition of Biometry, a statistics textbook by Robert R. Sokal and F. James Rohlf.[4]

Relation to other metrics

Relation to the chi-squared test

The commonly used chi-squared tests for goodness of fit to a distribution and for independence in contingency tables are in fact approximations of the log-likelihood ratio on which the G-tests are based.[5]

The general formula for Pearson's chi-squared test statistic is

χ2=∑i(Oi−Ei)2Ei.

The approximation of the G-test statistics by chi-squared test statistics is obtained by a second order Taylor expansion of the natural logarithm around 1 (see the derivation below). We have G≈χ2 when the observed counts Oi are close to the expected counts Ei. When this difference is large, however, the approximation by the chi-squared test statistics begins to break down. Here, the effects of outliers in data will be more pronounced, and this explains the why chi-squared tests fail in situations with little data.

For samples of a reasonable size, the G-test and the chi-squared test will lead to the same conclusions. However, the approximation to the theoretical chi-squared distribution for the G-test is better than for the Pearson's chi-squared test.[6] In cases where Oi>2⋅Ei for some cell case the G-test is always better than the chi-squared test. For testing goodness-of-fit the G-test is infinitely more efficient than the chi-squared test in the sense of Bahadur, but the two tests are equally efficient in the sense of Pitman or in the sense of Hodges and Lehmann.[7][8]

Derivation (chi-squared)

Consider

G=2∑iOiln⁡(OiEi),

and let Oi=Ei+δi with ∑iδi=0, so that the total number of counts remains the same. Assume that δi=Oi−Ei is small in comparison to Ei for all i. To be more precise, notice that Ei=Θ(n) using big Θ notation. If Oi=Ei+𝒪(n1/2) using big O notation for large n, which should be true under the null hypothesis because of the central limit theorem, then δi=𝒪(n1/2) and

δi3Ei2=𝒪(n3/2n2)=𝒪(n−1/2)

follow, which will be used later.

Upon substitution we find,

G=2∑i(Ei+δi)ln⁡(1+δiEi).

Using the Taylor expansion ln⁡(1+x)=x−12x2+𝒪(x3) yields

G=2∑i(Ei+δi)(δiEi−12δi2Ei2+𝒪(δi3Ei3)),

and distributing terms we find,

G=2∑i(δi+12δi2Ei+𝒪(δi3Ei2)).

Now, using ∑iδi=0 and δi=Oi−Ei and 𝒪(δi3/Ei2)=𝒪(n−1/2) for large n, we can write the result,

G≈∑i(Oi−Ei)2Ei.

Relation to Kullback–Leibler divergence

The G-test statistic is proportional to the Kullback–Leibler divergence of the theoretical distribution p~=(p~1,…,p~m) of the null hypothesis from the empirical distribution p^=(p^1,…,p^m) of the observed data:

G=2∑iOi⋅ln⁡(OiEi)=2N∑ip^i⋅ln⁡(p^ip~i)=2NDKL(p^‖p~),

where N is the total number of observations and p~i=EiN and p^i=OiN are the theoretical and empirical probabilities of objects of type i, respectively.

Relation to mutual information

For analysis of contingency tables the value of the G-test statistics can also be expressed in terms of mutual information.

In this case objects with two-dimensional types (i,j) are considered. Let Oij be the count of objects of type (i,j), i.e., Oij is the entry in the contingency table in row i and column j. Set

N=∑ijOij,p^ij=OijN,p^i∙=∑jOijN,p^∙j=∑iOijN.

Then the estimated expected count of objects of type (i,j) assuming independence is given by

Eij=Np^i∙p^∙j.

Finally, the G-test statistics in this case is given by

G=2∑ijOijln⁡(OijEij)

Let X,Y be random variables with joint distribution given by the empirical distribution p^ij of the contingency table, i.e.,

P(X=i,Y=j)=p^ij,P(X=i)=p^i∙,P(Y=j)=p^∙j.

Then the G-test statistics can be expressed in several alternative forms:

G=2N⋅∑ijp^ij(ln⁡(p^ij)−ln⁡(p^i∙)−ln⁡(p^∙j))=2N⋅(H(X)+H(Y)−H(X,Y))=2N⋅MI⁡(X,Y),

where the entropies H(X) and H(Y) are given

H(X)=−∑ip^i∙ln⁡(p^i∙),H(Y)=−∑jp^∙jln⁡(p^∙j)

and the joint entropy H(X,Y) is given by

H(X,Y)=−∑ijp^ijln⁡(p^ij)

and the mutual information of X and Y is

MI⁡(X,Y)=H(X)+H(Y)−H(X,Y).


It can also be shown that the inverse document frequency weighting commonly used for text retrieval is an approximation of G applicable when the row sum for the query is much smaller than the row sum for the remainder of the corpus. Similarly, the result of Bayesian inference applied to a choice of single multinomial distribution for all rows of the contingency table taken together versus the more general alternative of a separate multinomial per row produces results very similar to the G-test statistic.{{citation needed|date=August 2011}

Application

Statistical software

  • In R fast implementations can be found in the AMR and Rfast packages. For the AMR package, the command is g.test which works exactly like chisq.test from base R. R also has the likelihood.test function in the Deducer package. Note: Fisher's G-test in the GeneCycle Package of the R programming language (fisher.g.test) does not implement the G-test as described in this article, but rather Fisher's exact test of Gaussian white-noise in a time series.[11]
  • Another R implementation to compute the G-test statistic and corresponding p-values is provided by the R package entropy. The commands are Gstat for the standard G statistic and the associated p-value and Gstatindep for the G statistic applied to comparing joint and product distributions to test independence.
  • In SAS, one can conduct G-test by applying the /chisq option after the proc freq.[12]
  • In Stata, one can conduct a G-test by applying the lr option after the tabulate command.
  • In Java, use org.apache.commons.math3.stat.inference.GTest.[13]
  • In Python, use scipy.stats.power_divergence with lambda_=0.[14]

References

  1. ↑ McDonald, J.H. (2014). "G–test of goodness-of-fit". Handbook of Biological Statistics (Third ed.). Baltimore, Maryland: Sparky House Publishing. pp. 53–58. http://www.biostathandbook.com/gtestgof.html. 
  2. ↑ 2.0 2.1 Cressie, Noel; Read, Timothy R. C. (1984). "Multinomial goodness-of-fit tests". Journal of the Royal Statistical Society. Series B. Methodological 46 (3): 440–464. https://www.jstor.org/stable/2345686. Retrieved 14 January 2026. 
  3. ↑ 3.0 3.1 McDonald, John H. (2014). "Small numbers in chi-square and G–tests". Handbook of Biological Statistics (3rd ed.). Baltimore, MD: Sparky House Publishing. pp. 86–89. http://www.biostathandbook.com/small.html. 
  4. ↑ Sokal, R. R.; Rohlf, F. J. (1981). Biometry: The Principles and Practice of Statistics in Biological Research (Second ed.). New York: Freeman. ISBN 978-0-7167-2411-7. https://archive.org/details/biometryprincipl00soka_0. 
  5. ↑ Hoey, J. (2012). "The Two-Way Likelihood Ratio (G) Test and Comparison to Two-Way Chi-Squared Test". arXiv:1206.4881 [stat.ME].
  6. ↑ Harremoës, P.; Tusnády, G. (2012). "Information divergence is more chi squared distributed than the chi squared statistic". Proceedings ISIT 2012. pp. 538–543. Bibcode: 2012arXiv1202.1125H. 
  7. ↑ Quine, M. P.; Robinson, J. (1985). "Efficiencies of chi-square and likelihood ratio goodness-of-fit tests". Annals of Statistics 13 (2): 727–742. doi:10.1214/aos/1176349550. 
  8. ↑ Harremoës, P.; Vajda, I. (2008). "On the Bahadur-efficient testing of uniformity by means of the entropy". IEEE Transactions on Information Theory 54 (1): 321–331. doi:10.1109/tit.2007.911155. Bibcode: 2008ITIT...54..321H. 
  9. ↑ Dunning, Ted (1993). "Accurate Methods for the Statistics of Surprise and Coincidence ", Computational Linguistics, Volume 19, issue 1 (March, 1993).
  10. ↑ Rivas, Elena (30 October 2020). "RNA structure prediction using positive and negative evolutionary information". PLOS Computational Biology 16 (10). doi:10.1371/journal.pcbi.1008387. PMID 33125376. Bibcode: 2020PLSCB..16E8387R. 
  11. ↑ Fisher, R. A. (1929). "Tests of significance in harmonic analysis". Proceedings of the Royal Society of London A 125 (796): 54–59. doi:10.1098/rspa.1929.0151. Bibcode: 1929RSPSA.125...54F. 
  12. ↑ G-test of independence, G-test for goodness-of-fit in Handbook of Biological Statistics, University of Delaware. (pp. 46–51, 64–69 in: McDonald, J. H. (2009) Handbook of Biological Statistics (2nd ed.). Sparky House Publishing, Baltimore, Maryland.)
  13. ↑ "org.apache.commons.math3.stat.inference.GTest". https://commons.apache.org/proper/commons-math/javadocs/api-3.3/org/apache/commons/math3/stat/inference/GTest.html. 
  14. ↑ "Scipy.stats.power_divergence — SciPy v1.7.1 Manual". https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.power_divergence.html#scipy.stats.power_divergence.