CrossTable: Cross tabulation with tests for factor independence

CrossTableR Documentation

Cross tabulation with tests for factor independence

Description

An implementation of a cross-tabulation function with output similar to S-Plus crosstabs() and SAS Proc Freq (or SPSS format) with Chi-square, Fisher and McNemar tests of the independence of all table factors.

Usage

CrossTable(x, y,
           digits = list(expected = 1, prop = 3, percent = 1, others = 3),
           max.width = NA, expected = FALSE,
           prop.r = TRUE, prop.c = TRUE, prop.t = TRUE,
           prop.chisq = TRUE, chisq = FALSE, fisher = FALSE,
           mcnemar = FALSE, resid = FALSE, sresid = FALSE,
           asresid = FALSE, missing.include = FALSE,
           drop.levels = TRUE, format = c("SAS","SPSS"),
           dnn = NULL, cell.layout = TRUE,
           row.labels = !cell.layout,
           percent = (format == "SPSS" && !row.labels),
           total.r, total.c, xlab = NULL, ylab = NULL, ...)

Arguments

x

A vector or a matrix. If y is specified, x must be a vector.

y

A vector in a matrix or a dataframe.

digits

Named list with number of digits after the decimal point for four categories of statistics: expected values, cell proportions, percentage and others statistics. It can also be a numeric vector with a single number if you want the same number of digits in all statistics.

max.width

In the case of a 1 x n table, the default will be to print the output horizontally. If the number of columns exceeds max.width, the table will be wrapped for each successive increment of max.width columns. If you want a single column vertical table, set max.width to 1.

prop.r

If TRUE, row proportions will be included.

prop.c

If TRUE, column proportions will be included.

prop.t

If TRUE, table proportions will be included.

expected

If TRUE, expected cell counts from the \chi^2 will be included.

prop.chisq

If TRUE, chi-square contribution of each cell will be included.

chisq

If TRUE, the results of a chi-square test will be printed after the table.

fisher

If TRUE, the results of a Fisher Exact test will be printed after the table

mcnemar

If TRUE, the results of a McNemar test will be printed after the table.

resid

If TRUE, residual (Pearson) will be included.

sresid

If TRUE, standardized residual will be included.

asresid

If TRUE, adjusted standardized residual will be included.

missing.include

If TRUE, then NA values, if present, are included as level "NA" of both x and y. You can change the new level label by setting the value of descr.na.replacement option. Example: options(descr.na.replacement = "Missing").

drop.levels

If TRUE, then remove any unused factor levels.

format

Either SAS (default) or SPSS, depending on the type of output desired.

dnn

The names to be given to the dimensions in the result (the dimnames names).

cell.layout

If TRUE, print the cell layout.

row.labels

If TRUE, add labels to rows of calculated statistics.

percent

A logical value indicating whether to add the percentage symbol ‘⁠prop.r⁠’, ‘⁠prop.c⁠’ and ‘⁠prop.t⁠’ if ‘⁠format⁠’ is ‘⁠"SPSS"⁠’.

.

total.r

If TRUE, print row totals.

total.c

If TRUE, print column totals.

xlab

A title for the x axis when plotting the CrossTable object (see title). If missing, dnn[1] is used if not NULL.

ylab

A title for the y axis when plotting the CrossTable object (see title). If missing, dnn[2] is used if not NULL.

...

Optional arguments passed to chisq.test.

Details

A summary table will be generated with cell row, column and table proportions and marginal totals and proportions. Expected cell counts can be printed if desired. In the case of a 2 x 2 table, both corrected and uncorrected values will be included for appropriate tests. In the case of tabulating a single vector, cell counts and table proportions will be printed.

Note 1: If 'x' is a vector and 'y' is not specified, no statistical tests will be performed, even if any are set to TRUE.

Note 2: 'x' and 'y' labels will be truncated if the table is not going to fit to the screen, according to the value of getOption("width").

If both arguments ‘⁠total.c⁠’ and ‘⁠total.r⁠’ are missing, both will be TRUE. If only one of them is missing, the other will have the same value of the not missing one.

Value

A list of class CrossTable containing parameters used by the print.CrossTable method and the following components:

tab: An n by m matrix containing table cell counts.

prop.row: An n by m matrix containing cell row proportions.

prop.col: An n by m matrix containing cell column proportions.

prop.tbl: An n by m matrix containing cell table proportions.

chisq: Results from the Chi-Square test. A list with class 'htest'. See chisq.test for details.

chisq.corr: Results from the corrected Chi-Square test. A list with class 'htest'. See chisq.test for details. ONLY included in the case of a 2 x 2 table.

fisher.ts: Results from the two-sided Fisher Exact test. A list with class 'htest'. See fisher.test for details. ONLY included if 'fisher' = TRUE.

fisher.lt: Results from the Fisher Exact test with HA = "less". A list with class 'htest'. See fisher.test for details. ONLY included if 'fisher' = TRUE and in the case of a 2 x 2 table.

fisher.gt: Results from the Fisher Exact test with HA = "greater". A list with class 'htest'. See fisher.test for details. ONLY included if 'fisher' = TRUE and in the case of a 2 x 2 table.

mcnemar: Results from the McNemar test. A list with class 'htest'. See mcnemar.test for details. ONLY included if 'mcnemar' = TRUE.

mcnemar.corr: Results from the corrected McNemar test. A list with class 'htest'. See mcnemar.test for details. ONLY included if 'mcnemar' = TRUE and in the case of a 2 x 2 table.

resid/sresid/asresid: Pearson Residuals (from chi-square tests).

Author(s)

Jakson Aquino jalvesaq@gmail.com has splited the function CrossTable (from the package gmodels) in two: CrossTable and print.CrossTable. The gmodels's function was developed by Marc Schwartz (original version posted to r-devel on Jul 27, 2002. SPSS format modifications added by Nitin Jain based upon code provided by Dirk Enzmann).

See Also

crosstab (a wrapper to ‘⁠CrossTable⁠’ that makes it easier to do a weighted contingency table), plot.CrossTable, forODFTable, table, prop.table, xtabs.

Examples

# Simple cross tabulation of education versus prior induced
# abortions using infertility data
data(warpbreaks, package = "datasets")
ct <- CrossTable(warpbreaks$wool, warpbreaks$tension,
                 dnn = c("Wool", "Tension"))
data(esoph, package = "datasets")
ct <- CrossTable(esoph$alcgp, esoph$agegp, expected = TRUE,
                 chisq = FALSE, prop.chisq = FALSE,
                 dnn = c("Alcohol consumption", "Tobacco consumption"))
plot(ct, inv.y = TRUE)
print(ct)

# While printing the object, you can replace some (but not all)
# arguments previously passed to CrossTable
print(ct, format = "SPSS", cell.layout = FALSE, row.labels = TRUE)

# For better examples, including the use of xtable,
# see the documentation of crosstab().

descr documentation built on Nov. 28, 2023, 1:10 a.m.