Compute Cramer's *V*, phi (\(\phi\)), Cohen's *w* (an alias of phi),
Pearson's contingency coefficient, Odds ratios, Risk ratios, Cohen's *h* and
Cohen's *g* for contingency tables or goodness-of-fit. See details.

## Usage

```
phi(x, y = NULL, ci = 0.95, alternative = "greater", adjust = FALSE, ...)
cohens_w(x, y = NULL, ci = 0.95, alternative = "greater", adjust = FALSE, ...)
cramers_v(x, y = NULL, ci = 0.95, alternative = "greater", adjust = FALSE, ...)
pearsons_c(
x,
y = NULL,
ci = 0.95,
alternative = "greater",
adjust = FALSE,
...
)
oddsratio(x, y = NULL, ci = 0.95, alternative = "two.sided", log = FALSE, ...)
riskratio(x, y = NULL, ci = 0.95, alternative = "two.sided", log = FALSE, ...)
cohens_h(x, y = NULL, ci = 0.95, alternative = "two.sided", ...)
cohens_g(x, y = NULL, ci = 0.95, alternative = "two.sided", ...)
```

## Arguments

- x
a numeric vector or matrix.

`x`

and`y`

can also both be factors.- y
a numeric vector; ignored if

`x`

is a matrix. If`x`

is a factor,`y`

should be a factor of the same length.- ci
Confidence Interval (CI) level

- alternative
a character string specifying the alternative hypothesis; Controls the type of CI returned:

`"greater"`

(two-sided CI; default for Cramer's*V*, phi (\(\phi\)), and Cohen's*w*),`"two.sided"`

(default for OR, RR, Cohen's*h*and Cohen's*g*) or`"less"`

(one-sided CI). Partial matching is allowed (e.g.,`"g"`

,`"l"`

,`"two"`

...). See*One-Sided CIs*in effectsize_CIs.- adjust
Should the effect size be bias-corrected? Defaults to

`FALSE`

.- ...
Arguments passed to

`stats::chisq.test()`

, such as`p`

. Ignored for`cohens_g()`

.- log
Take in or output the log of the ratio (such as in logistic models).

## Value

A data frame with the effect size (`Cramers_v`

, `phi`

(possibly with
the suffix `_adjusted`

), `Odds_ratio`

, `Risk_ratio`

(possibly with the
prefix `log_`

), `Cohens_h`

, or `Cohens_g`

) and its CIs (`CI_low`

and
`CI_high`

).

## Details

Cramer's *V*, phi (\(\phi\)) and Pearson's *C* are effect sizes for tests
of independence in 2D contingency tables. For 2-by-k tables, Cramer's *V* and
phi are identical, and are equal to the simple correlation between two
dichotomous variables, ranging between 0 (no dependence) and 1 (perfect
dependence). For larger tables, Cramer's *V* or Pearson's *C* should be used,
as they are bounded between 0-1, whereas phi can be larger than 1 (upper
bound is `sqrt(min(nrow, ncol) - 1))`

).

For goodness-of-fit in 1D tables Pearson's *C* or phi can be used. Phi has no
upper bound (can be arbitrarily large, depending on the expected
distribution), while Pearson's *C* is bounded between 0-1.

For 2-by-2 contingency tables, Odds ratios, Risk ratios and Cohen's *h* can
also be estimated. Note that these are computed with each **column**
representing the different groups, and the first column representing the
treatment group and the second column baseline (or control). Effects are
given as `treatment / control`

. If you wish you use rows as groups you must
pass a transposed table, or switch the `x`

and `y`

arguments.

Cohen's *g* is an effect size for dependent (paired) contingency tables
ranging between 0 (perfect symmetry) and 0.5 (perfect asymmetry) (see
`stats::mcnemar.test()`

).

## Confidence Intervals for Cohen's g, OR, RR and Cohen's h

For Cohen's *g*, confidence intervals are based on the proportion (\(P = g
+ 0.5\)) confidence intervals returned by `stats::prop.test()`

(minus 0.5),
which give a good close approximation.

For Odds ratios, Risk ratios and Cohen's *h*, confidence intervals are
estimated using the standard normal parametric method (see Katz et al., 1978;
Szumilas, 2010).

See *Confidence (Compatibility) Intervals (CIs)*, *CIs and Significance
Tests*, and *One-Sided CIs* sections for *phi*, Cohen's *w*, Cramer's *V* and
Pearson's *C*.

## Confidence (Compatibility) Intervals (CIs)

Unless stated otherwise, confidence (compatibility) intervals (CIs) are
estimated using the noncentrality parameter method (also called the "pivot
method"). This method finds the noncentrality parameter ("*ncp*") of a
noncentral *t*, *F*, or \(\chi^2\) distribution that places the observed
*t*, *F*, or \(\chi^2\) test statistic at the desired probability point of
the distribution. For example, if the observed *t* statistic is 2.0, with 50
degrees of freedom, for which cumulative noncentral *t* distribution is *t* =
2.0 the .025 quantile (answer: the noncentral *t* distribution with *ncp* =
.04)? After estimating these confidence bounds on the *ncp*, they are
converted into the effect size metric to obtain a confidence interval for the
effect size (Steiger, 2004).

For additional details on estimation and troubleshooting, see effectsize_CIs.

## CIs and Significance Tests

"Confidence intervals on measures of effect size convey all the information
in a hypothesis test, and more." (Steiger, 2004). Confidence (compatibility)
intervals and p values are complementary summaries of parameter uncertainty
given the observed data. A dichotomous hypothesis test could be performed
with either a CI or a p value. The 100 (1 - \(\alpha\))% confidence
interval contains all of the parameter values for which *p* > \(\alpha\)
for the current data and model. For example, a 95% confidence interval
contains all of the values for which p > .05.

Note that a confidence interval including 0 *does not* indicate that the null
(no effect) is true. Rather, it suggests that the observed data together with
the model and its assumptions combined do not provided clear evidence against
a parameter value of 0 (same as with any other value in the interval), with
the level of this evidence defined by the chosen \(\alpha\) level (Rafi &
Greenland, 2020; Schweder & Hjort, 2016; Xie & Singh, 2013). To infer no
effect, additional judgments about what parameter values are "close enough"
to 0 to be negligible are needed ("equivalence testing"; Bauer & Kiesser,
1996).

## References

Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd Ed.). New York: Routledge.

Katz, D. J. S. M., Baptista, J., Azen, S. P., & Pike, M. C. (1978). Obtaining confidence intervals for the risk ratio in cohort studies. Biometrics, 469-474.

Szumilas, M. (2010). Explaining odds ratios. Journal of the Canadian academy of child and adolescent psychiatry, 19(3), 227.

## See also

`chisq_to_phi()`

for details regarding estimation and CIs.

Other effect size indices:
`cles()`

,
`cohens_d()`

,
`effectsize.BFBayesFactor()`

,
`eta_squared()`

,
`rank_biserial()`

,
`standardize_parameters()`

## Examples

```
M <-
matrix(c(150, 100, 165,
130, 50, 65,
35, 10, 2,
55, 40, 25), nrow = 4,
dimnames = list(
Music = c("Pop", "Rock", "Jazz", "Classic"),
Study = c("Psych", "Econ", "Law")))
M
#> Study
#> Music Psych Econ Law
#> Pop 150 50 2
#> Rock 100 65 55
#> Jazz 165 35 40
#> Classic 130 10 25
# Note that Phi is not bound to [0-1], but instead
# the upper bound for phi is sqrt(min(nrow, ncol) - 1)
phi(M)
#> Phi | 95% CI
#> -------------------
#> 0.34 | [0.27, 1.41]
#>
#> - One-sided CIs: upper bound fixed at (1.4142135623731).
cramers_v(M)
#> Cramer's V | 95% CI
#> -------------------------
#> 0.24 | [0.19, 1.00]
#>
#> - One-sided CIs: upper bound fixed at (1).
pearsons_c(M)
#> Pearson's C | 95% CI
#> --------------------------
#> 0.32 | [0.26, 1.00]
#>
#> - One-sided CIs: upper bound fixed at (1).
## 2-by-2 tables
## -------------
RCT <-
matrix(c(71, 30,
50, 100), nrow = 2, byrow = TRUE,
dimnames = list(
Diagnosis = c("Sick", "Recovered"),
Group = c("Treatment", "Control")))
RCT # note groups are COLUMNS
#> Group
#> Diagnosis Treatment Control
#> Sick 71 30
#> Recovered 50 100
oddsratio(RCT)
#> Odds ratio | 95% CI
#> -------------------------
#> 4.73 | [2.74, 8.17]
oddsratio(RCT, alternative = "greater")
#> Odds ratio | 95% CI
#> -----------------------------
#> 4.73 | [3.00, Inf]
#>
#> - One-sided CIs: upper bound fixed at (Inf).
riskratio(RCT)
#> Risk ratio | 95% CI
#> -------------------------
#> 2.54 | [1.87, 3.45]
cohens_h(RCT)
#> Cohen's h | 95% CI
#> ------------------------
#> 0.74 | [0.50, 0.99]
## Dependent (Paired) Contingency Tables
## -------------------------------------
Performance <-
matrix(c(794, 150,
86, 570), nrow = 2,
dimnames = list(
"1st Survey" = c("Approve", "Disapprove"),
"2nd Survey" = c("Approve", "Disapprove")))
Performance
#> 2nd Survey
#> 1st Survey Approve Disapprove
#> Approve 794 86
#> Disapprove 150 570
cohens_g(Performance)
#> Cohen's g | 95% CI
#> ------------------------
#> 0.14 | [0.07, 0.19]
```