Performs a test of (conditional) independence of 2 margins in a contingency table by simulation from the marginal distribution of the input table under (conditional) independence.
coindep_test(x, margin = NULL, n = 1000,
indepfun = function(x) max(abs(x)), aggfun = max,
alternative = c("greater", "less"),
pearson = TRUE)
a contingency table.
margin index(es) or corresponding name(s) of the conditioning variables. Each resulting conditional table has to be a 2-way table.
number of (conditional) independence tables to be drawn.
aggregation function capturing independence in (each conditional) 2-way table.
aggregation function aggregating the test statistics
computed by indepfun
.
a character string specifying the alternative
hypothesis; must be either "greater"
(default) or
"less"
(and may be abbreviated.)
logical. Should the table of Pearson residuals under
independence be computed and passed to indepfun
(default)
or the raw table of observed frequencies?
A list of class "coindep_test"
inheriting from "htest"
with following components:
the value of the test statistic.
the
a character string indicating the type of the test.
a character string giving the name(s) of the data.
observed table of frequencies
expected table of frequencies
corresponding Pearson residuals
the margin
used
a vector of size n
with simulated values of the
distribution of the statistic under the null.
the corresponding quantile function (for computing critical values).
the corresponding distribution function (for computing
If margin
is NULL
this computes a simple independence
statistic in a 2-way table. Alternatively, margin
can give
several conditioning variables and then conditional independence in
the resulting conditional table is tested.
By default, this uses a (double) maximum statistic of Pearson residuals.
By changing indepfun
or aggfun
a (maximum of) Pearson Chi-squared
statistic(s) can be computed or just the usual Pearson Chi-squared statistics
and so on. Other statistics can be computed by changing pearson
to FALSE
.
The function uses r2dtable
to simulate the distribution
of the test statistic under the null.
# NOT RUN {
library(MASS)
TeaTasting <- matrix(c(3, 1, 1, 3), nr = 2,
dimnames = list(Guess = c("Milk", "Tea"),
Truth = c("Milk", "Tea"))
)
## compute maximum statistic
coindep_test(TeaTasting)
## compute Chi-squared statistic
coindep_test(TeaTasting, indepfun = function(x) sum(x^2))
## use unconditional asymptotic distribution
chisq.test(TeaTasting, correct = FALSE)
chisq.test(TeaTasting)
data("UCBAdmissions")
## double maximum statistic
coindep_test(UCBAdmissions, margin = "Dept")
## maximum of Chi-squared statistics
coindep_test(UCBAdmissions, margin = "Dept", indepfun = function(x) sum(x^2))
## Pearson Chi-squared statistic
coindep_test(UCBAdmissions, margin = "Dept", indepfun = function(x) sum(x^2), aggfun = sum)
## use unconditional asymptotic distribution
loglm(~ Dept * (Gender + Admit), data = UCBAdmissions)
# }
Run the code above in your browser using DataLab