gamma_gk() computes the Goodman-Kruskal Gamma statistic for a
two-way contingency table of ordinal variables.
Arguments
- x
A contingency table (of class
table).- detail
Logical. If
FALSE(default), return the estimate as a numeric scalar. IfTRUE, return a named numeric vector including confidence interval and p-value.- conf_level
A single number strictly between 0 and 1 giving the confidence level (default
0.95). Only used whendetail = TRUE. Set toNULLto omit the confidence interval. Any other value – including percentages such as95– raises a classed error (spicy_invalid_input).- digits
Number of decimal places used when printing the result (default
3). Only affects thedetail = TRUEoutput.
Value
Same structure as cramer_v(): a scalar when
detail = FALSE, a named vector when detail = TRUE.
The p-value tests H0: gamma = 0 (Wald z-test).
Details
Gamma is computed as \(\gamma = (C - D) / (C + D)\), where
\(C\) and \(D\) are the numbers of concordant and
discordant pairs. It ignores tied pairs, making it appropriate
for ordinal variables with many ties.
When the asymptotic standard error is zero (e.g. a perfect
association), the Wald z-test is undefined and the p-value is
NA, matching the other measures in the family.
Standard error formulas follow the DescTools implementations
(Signorell et al., 2024); see cramer_v() for full references.
References
Goodman, L. A., & Kruskal, W. H. (1954). Measures of association for cross classifications. Journal of the American Statistical Association, 49(268), 732-764. doi:10.2307/2281536
Brown, M. B., & Benedetti, J. K. (1977). Sampling behavior of tests for correlation in two-way contingency tables. Journal of the American Statistical Association, 72(358), 309-315. doi:10.1080/01621459.1977.10480995
See also
kendall_tau_b(), kendall_tau_c(), somers_d(),
assoc_measures()
Other association measures:
assoc_measures(),
contingency_coef(),
cramer_v(),
goodman_kruskal_tau(),
kendall_tau_b(),
kendall_tau_c(),
lambda_gk(),
phi(),
somers_d(),
uncertainty_coef(),
yule_q()
Examples
tab <- table(sochealth$education, sochealth$self_rated_health)
gamma_gk(tab)
#> [1] 0.3104791
gamma_gk(tab, detail = TRUE)
#> Estimate SE CI lower CI upper p
#> 0.310 0.037 0.238 0.383 <.001