chisq.test               package:ctest               R Documentation

Pearson's Chi-squared Test for Count Data

Description:

     `chisq.test' performs chi-squared tests on contingency tables.

Usage:

     chisq.test(x, y = NULL, correct = TRUE,
                p = rep(1/length(x), length(x)),
                simulate.p.value = FALSE, B = 2000)

Arguments:

       x: a vector or matrix.

       y: a vector; ignored if `x' is a matrix.

 correct: a logical indicating whether to apply continuity correction
          when computing the test statistic.

       p: a vector of probabilities of the same length of `x'.

simulate.p.value: a logical indicating whether to compute p-values by
          Monte Carlo simulation.

       B: an integer specifying the number of replicates used in the
          Monte Carlo simulation.

Details:

     If `x' is a matrix with one row or column, or if `x' is a vector
     and `y' is not given, `x' is treated as a one-dimensional
     contingency table.  In this case, the hypothesis tested is whether
     the population probabilities equal those in `p', or are all equal
     if `p' is not given. 

     If `x' is a matrix with at least two rows and columns, it is taken
     as a two-dimensional contingency table, and hence its entries
     should be nonnegative integers.  Otherwise, `x' and `y' must be
     vectors or factors of the same length; incomplete cases are
     removed, the objects are coerced into factor objects, and the
     contingency table is computed from these.  Then, Pearson's
     chi-squared test of the null that the joint distribution of the
     cell counts in a 2-dimensional contingency table is the product of
     the row and column marginals is performed.  If `simulate.p.value'
     is `FALSE', the p-value is computed from the asymptotic
     chi-squared distribution of the test statistic; continuity
     correction is only used in the 2-by-2 case if `correct' is `TRUE'.
      Otherwise, if `simulate.p.value' is `TRUE', the p-value is
     computed by Monte Carlo simulation with `B' replicates.  This is
     done by random sampling from the set of all contingency tables
     with given marginals, and works only if the marginals are
     positive.

Value:

     A list with class `"htest"' containing the following components: 

statistic: the value the chi-squared test statistic.

parameter: the degrees of freedom of the approximate chi-squared
          distribution of the test statistic, `NA' if the p-value is
          computed by Monte Carlo simulation.

 p.value: the p-value for the test.

  method: a character string indicating the type of test performed, and
          whether Monte Carlo simulation or continuity correction was
          used.

data.name: a character string giving the name(s) of the data.

observed: the observed counts.

expected: the expected counts under the null hypothesis.

Examples:

     data(InsectSprays)              # Not really a good example
     chisq.test(InsectSprays$count > 7, InsectSprays$spray)
                                     # Prints test summary
     chisq.test(InsectSprays$count > 7, InsectSprays$spray)$obs
                                     # Counts observed
     chisq.test(InsectSprays$count > 7, InsectSprays$spray)$exp
                                     # Counts expected under the null

     ## Effect of simulating p-values
     x <- matrix(c(12, 5, 7, 7), nc = 2)
     chisq.test(x)$p.value           # 0.4233
     chisq.test(x, simulate.p.value = TRUE, B = 10000)$p.value
                                     # around 0.29!

     ## Testing for population probabilities
     ## Case A. Tabulated data
     x <- c(A = 20, B = 15, C = 25)
     chisq.test(x)
     chisq.test(as.table(x))         # the same
     ## Case B. Raw data
     x <- trunc(5 * runif(100))
     chisq.test(table(x))            # NOT `chisq.test(x)'!

