Contingency Tables
The χ² test of association (not to be confused with the χ² goodness of fit) is used to test whether two categorical variables are independent or associated. If the p-value is low, it suggests the variables are not independent, and that there is a relationship between the two variables.
Example usage
data('HairEyeColor')
dat <- as.data.frame(HairEyeColor)
contTables(formula = Freq ~ Hair:Eye, dat)
#
# CONTINGENCY TABLES
#
# Contingency Tables
# ─────────────────────────────────────────────────────
# Hair Brown Blue Hazel Green Total
# ─────────────────────────────────────────────────────
# Black 68 20 15 5 108
# Brown 119 84 54 29 286
# Red 26 17 14 14 71
# Blond 7 94 10 16 127
# Total 220 215 93 64 592
# ─────────────────────────────────────────────────────
#
#
# χ² Tests
# ───────────────────────────────
# Value df p
# ───────────────────────────────
# χ² 138 9 < .001
# N 592
# ───────────────────────────────
#
# Alternatively, omit the left of the formula (`Freq`) if each row
# represents a single observation:
contTables(formula = ~ Hair:Eye, dat)
Arguments
| data | the data as a data frame |
| rows | the variable to use as the rows in the contingency table (not necessary when providing a formula, see the examples) |
| cols | the variable to use as the columns in the contingency table (not necessary when providing a formula, see the examples) |
| counts | the variable to use as the counts in the contingency table (not necessary when providing a formula, see the examples) |
| layers | the variables to use to split the contingency table (not necessary when providing a formula, see the examples) |
| chiSq | TRUE (default) or FALSE, provide χ² |
| chiSqCorr | TRUE or FALSE (default), provide χ² with continuity correction |
| zProp | TRUE or FALSE (default), provide a z test for differences between two proportions |
| likeRat | TRUE or FALSE (default), provide the likelihood ratio |
| fisher | TRUE or FALSE (default), provide Fisher's exact test |
| contCoef | TRUE or FALSE (default), provide the contingency coefficient |
| phiCra | TRUE or FALSE (default), provide Phi and Cramer's V |
| diffProp | TRUE or FALSE (default), provide the differences in proportions (only available for 2x2 tables) |
| logOdds | TRUE or FALSE (default), provide the log odds ratio (only available for 2x2 tables) |
| odds | TRUE or FALSE (default), provide the odds ratio (only available for 2x2 tables) |
| relRisk | TRUE or FALSE (default), provide the relative risk (only available for 2x2 tables) |
| ci | TRUE or FALSE (default), provide confidence intervals for the comparative measures |
| ciWidth | a number between 50 and 99.9 (default: 95), width of the confidence intervals to provide |
| compare | columns or rows (default), compare columns/rows in difference of proportions or relative risks (2x2 tables) |
| hypothesis | 'different' (default), 'oneGreater' or 'twoGreater', the alternative hypothesis; group 1 different to group 2, group 1 greater than group 2, and group 2 greater than group 1 respectively |
| gamma | TRUE or FALSE (default), provide gamma |
| taub | TRUE or FALSE (default), provide Kendall's tau-b |
| mh | TRUE or FALSE (default), provide Mantel-Haenszel test for trend |
| obs | TRUE or FALSE (default), provide the observed counts |
| exp | TRUE or FALSE (default), provide the expected counts |
| pcRow | TRUE or FALSE (default), provide row percentages |
| pcCol | TRUE or FALSE (default), provide column percentages |
| pcTot | TRUE or FALSE (default), provide total percentages |
| barplot | TRUE or FALSE (default), show barplots |
| yaxis | ycounts (default) or ypc. Use respectively counts or percentages for the bar plot y-axis |
| yaxisPc | total_pc (default), column_pc, or row_pc. Use respectively percentages of total, within columns, or within rows for the bar plot y-axis. |
| xaxis | rows (default), or columns in bar plot X axis |
| bartype | stack or side by side (default), barplot type |
Returns
A results object containing:
| results$freqs | a table |
| results$chiSq | a table |
| results$odds | a table |
| results$nom | a table |
| results$gamma | a table |
| results$taub | a table |
| results$mh | a table |
| results$barplot | an image |
Tables can be converted to data frames with asDF or as.data.frame(). For example:
results$freqs$asDF
as.data.frame(results$freqs)