sjstats (version 0.17.5)

phi: Measures of association for contingency tables

Description

This function calculates various measure of association for contingency tables and returns the statistic and p-value. Supported measures are Cramer's V, Phi, Spearman's rho, Kendall's tau and Pearson's r.

Usage

phi(tab)

cramer(tab, ...)

# S3 method for formula cramer(formula, data, ...)

xtab_statistics(data, x1 = NULL, x2 = NULL, statistics = c("auto", "cramer", "phi", "spearman", "kendall", "pearson", "fisher"), weights = NULL, ...)

Arguments

tab

A table or ftable. Tables of class xtabs and other will be coerced to ftable objects.

...

Other arguments, passed down to the statistic functions chisq.test, fisher.test or cor.test.

formula

A formula of the form lhs ~ rhs where lhs is a numeric variable giving the data values and rhs a factor giving the corresponding groups.

data

A data frame or a table object. If a table object, x1 and x2 will be ignored. For Kendall's tau, Spearman's rho or Pearson's product moment correlation coefficient, data needs to be a data frame. If x1 and x2 are not specified, the first two columns of the data frames are used as variables to compute the crosstab.

x1

Name of first variable that should be used to compute the contingency table. If data is a table object, this argument will be irgnored.

x2

Name of second variable that should be used to compute the contingency table. If data is a table object, this argument will be irgnored.

statistics

Name of measure of association that should be computed. May be one of "auto", "cramer", "phi", "spearman", "kendall", "pearson" or "fisher". See 'Details'.

weights

Name of variable in x that indicated the vector of weights that will be applied to weight all observations. Default is NULL, so no weights are used.

Value

For phi(), the table's Phi value. For cramer(), the table's Cramer's V. For xtab_statistics(), a list with following components:

estimate

the value of the estimated measure of association.

p.value

the p-value for the test.

statistic

the value of the test statistic.

stat.name

the name of the test statistic.

stat.html

if applicable, the name of the test statistic, in HTML-format.

df

the degrees of freedom for the contingency table.

method

character string indicating the name of the measure of association.

method.html

if applicable, the name of the measure of association, in HTML-format.

method.short

the short form of association measure, equals the statistics-argument.

fisher

logical, if Fisher's exact test was used to calculate the p-value.

Details

The p-value for Cramer's V and the Phi coefficient are based on chisq.test(). If any expected value of a table cell is smaller than 5, or smaller than 10 and the df is 1, then fisher.test() is used to compute the p-value, unless statistics = "fisher"; in this case, the use of fisher.test() is forced to compute the p-value. The test statistic is calculated with cramer() resp. phi().

Both test statistic and p-value for Spearman's rho, Kendall's tau and Pearson's r are calculated with cor.test().

When statistics = "auto", only Cramer's V or Phi are calculated, based on the dimension of the table (i.e. if the table has more than two rows or columns, Cramer's V is calculated, else Phi).

Examples

Run this code
# NOT RUN {
# Phi coefficient for 2x2 tables
tab <- table(sample(1:2, 30, TRUE), sample(1:2, 30, TRUE))
phi(tab)

# Cramer's V for nominal variables with more than 2 categories
tab <- table(sample(1:2, 30, TRUE), sample(1:3, 30, TRUE))
cramer(tab)

data(efc)
# 2x2 table, compute Phi automatically
xtab_statistics(efc, e16sex, c161sex)

# more dimensions than 2x2, compute Cramer's V automatically
xtab_statistics(efc, c172code, c161sex)

# ordinal data, use Kendall's tau
xtab_statistics(efc, e42dep, quol_5, statistics = "kendall")

# calcilate Spearman's rho, with continuity correction
xtab_statistics(efc,
  e42dep,
  quol_5,
  statistics = "spearman",
  exact = FALSE,
  continuity = TRUE
)

# }

Run the code above in your browser using DataLab