From e3817167fad3a58922203898d61716e35127de24 Mon Sep 17 00:00:00 2001 From: "Mattan S. Ben-Shachar" <35330040+mattansb@users.noreply.github.com> Date: Wed, 9 Aug 2023 22:06:27 +0300 Subject: [PATCH] rc CRAN 0.8.5 (#595) --- DESCRIPTION | 2 +- NEWS.md | 2 + R/convert_between_xtabcorr.R | 2 +- R/eta_squared-main.R | 14 +++-- R/eta_squared-methods.R | 10 +++- R/interpret_cfa_fit.R | 104 ++++++++++++++++++----------------- cran-comments.md | 4 +- inst/WORDLIST | 2 + man/effectsize.Rd | 2 +- man/eta_squared.Rd | 4 +- man/interpret_gfi.Rd | 70 ++++++++++++----------- man/w_to_fei.Rd | 2 +- 12 files changed, 126 insertions(+), 92 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 298985b21..1927e489a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: effectsize Title: Indices of Effect Size -Version: 0.8.3.11 +Version: 0.8.5 Authors@R: c(person(given = "Mattan S.", family = "Ben-Shachar", diff --git a/NEWS.md b/NEWS.md index 9a9d62d89..c4526b4f0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,7 @@ ## New features +- `interpret_cfi()` gains a new rule option: `"hu&bentler1999"` ( #538 ). - `cohens_f()` added option to return unbiased estimators (based on Omega- or Epsilon-squared). - `tschuprows_t()` now returns an effect size corrected for small-sample bias. Set `adjust = FALSE` to preserve old behavior. - `w_to_v()` and others for converting between effect sizes of Chi-square tests. @@ -18,6 +19,7 @@ ## Breaking Changes - `*_to_riskratio()` and `riskratio_to_*()` argument `log` not longer converts RR to/from log(RR). +- `interpret_gfi()` and friends: some previously named `"default"` rules have been re-labelled as `"byrne1994"`. ## Bug fixes diff --git a/R/convert_between_xtabcorr.R b/R/convert_between_xtabcorr.R index ee0f54ac9..dfc208a59 100644 --- a/R/convert_between_xtabcorr.R +++ b/R/convert_between_xtabcorr.R @@ -1,4 +1,4 @@ -#' Convert Between *d*, *r*, and Odds Ratio +#' Convert Between Effect Sizes for Contingency Tables Correlations #' #' Enables a conversion between different indices of effect size, such as #' Cohen's *w* to \ifelse{latex}{\eqn{Fei}}{פ (Fei)}, and Cramer's *V* to diff --git a/R/eta_squared-main.R b/R/eta_squared-main.R index 8062c7bce..ff464089e 100644 --- a/R/eta_squared-main.R +++ b/R/eta_squared-main.R @@ -59,7 +59,7 @@ #' `afex` package. #' \cr\cr #' For type 3 sum of squares, it is generally recommended to fit models with -#' *orthoginal factor weights* (e.g., `contr.sum`) and *centered covariates*, +#' *orthogonal factor weights* (e.g., `contr.sum`) and *centered covariates*, #' for sensible results. See examples and the `afex` package. #' #' ## Un-Biased Estimate of Eta @@ -316,19 +316,25 @@ cohens_f <- function(model, if ("CI" %in% colnames(res)) attr(res, "ci_method") <- list(method = "ncp", distribution = "F") class(res) <- unique(c("effectsize_anova", "effectsize_table", "see_effectsize_table", class(res))) attr(res, "approximate") <- isTRUE(attr(res, "approximate", exact = TRUE)) - attr(res, "table_footer") <- if (method != "eta") sprintf("Based on %s squared.", paste0(toupper(substring(methed, 1, 1)), substring(methed, 2))) + attr(res, "table_footer") <- if (method != "eta") sprintf("Based on %s squared.", paste0(toupper(substring(method, 1, 1)), substring(method, 2))) res } #' @rdname eta_squared #' @export cohens_f_squared <- function(model, - partial = TRUE, squared = TRUE, model2 = NULL, + partial = TRUE, generalized = FALSE, + squared = TRUE, + method = c("eta", "omega", "epsilon"), + model2 = NULL, ci = 0.95, alternative = "greater", verbose = TRUE, ...) { cohens_f( model, - partial = partial, squared = squared, model2 = model2, + partial = partial, generalized = generalized, + squared = squared, + method = method, + model2 = model2, ci = ci, alternative = alternative, verbose = verbose, ... ) diff --git a/R/eta_squared-methods.R b/R/eta_squared-methods.R index f3c7a153e..e57fc4235 100644 --- a/R/eta_squared-methods.R +++ b/R/eta_squared-methods.R @@ -33,6 +33,9 @@ #' @keywords internal .anova_es.mixed <- function(model, + type = c("eta", "omega", "epsilon"), + partial = TRUE, generalized = FALSE, + ci = 0.95, alternative = "greater", verbose = TRUE, include_intercept = FALSE, ...) { @@ -52,7 +55,12 @@ aov_tab$df_error <- aov_tab[["den Df"]] aov_tab <- aov_tab[, c("Parameter", "df", "df_error", "F")] - out <- .es_aov_table(aov_tab, verbose = verbose, include_intercept = include_intercept, ...) + out <- .es_aov_table(aov_tab, type = type, + partial = partial, generalized = generalized, + ci = ci, alternative = alternative, + verbose = verbose, + include_intercept = include_intercept, ... + ) attr(out, "anova_type") <- attr(model, "type") attr(out, "approximate") <- TRUE diff --git a/R/interpret_cfa_fit.R b/R/interpret_cfa_fit.R index b90f15a7f..7899005af 100644 --- a/R/interpret_cfa_fit.R +++ b/R/interpret_cfa_fit.R @@ -4,7 +4,8 @@ #' equation modelling, such as RMSEA, CFI, NFI, IFI, etc. #' #' @param x vector of values, or an object of class `lavaan`. -#' @param rules Can be `"default"` or custom set of [rules()]. +#' @param rules Can be the name of a set of rules (see below) or custom set of +#' [rules()]. #' @inheritParams interpret #' #' @inherit performance::model_performance.lavaan details @@ -19,29 +20,19 @@ #' #' - **GFI/AGFI**: The (Adjusted) Goodness of Fit is the proportion of variance #' accounted for by the estimated population covariance. Analogous to R2. The -#' GFI and the AGFI should be > .95 and > .90, respectively. +#' GFI and the AGFI should be > .95 and > .90, respectively (Byrne, 1994; +#' `"byrne1994"`). #' #' - **NFI/NNFI/TLI**: The (Non) Normed Fit Index. An NFI of 0.95, indicates the #' model of interest improves the fit by 95\% relative to the null model. The #' NNFI (also called the Tucker Lewis index; TLI) is preferable for smaller -#' samples. They should be > .90 (Byrne, 1994) or > .95 (Schumacker & Lomax, -#' 2004). +#' samples. They should be > .90 (Byrne, 1994; `"byrne1994"`) or > .95 +#' (Schumacker & Lomax, 2004; `"schumacker2004"`). #' #' - **CFI**: The Comparative Fit Index is a revised form of NFI. Not very #' sensitive to sample size (Fan, Thompson, & Wang, 1999). Compares the fit of a -#' target model to the fit of an independent, or null, model. It should be > -#' .90. -#' -#' - **RMSEA**: The Root Mean Square Error of Approximation is a -#' parsimony-adjusted index. Values closer to 0 represent a good fit. It should -#' be < .08 or < .05. The p-value printed with it tests the hypothesis that -#' RMSEA is less than or equal to .05 (a cutoff sometimes used for good fit), -#' and thus should be not significant. -#' -#' - **RMR/SRMR**: the (Standardized) Root Mean Square Residual represents the -#' square-root of the difference between the residuals of the sample covariance -#' matrix and the hypothesized model. As the RMR can be sometimes hard to -#' interpret, better to use SRMR. Should be < .08. +#' target model to the fit of an independent, or null, model. It should be > .96 +#' (Hu & Bentler, 1999; `"hu&bentler1999"`) or .90 (Byrne, 1994; `"byrne1994"`). #' #' - **RFI**: the Relative Fit Index, also known as RHO1, is not guaranteed to #' vary from 0 to 1. However, RFI close to 1 indicates a good fit. @@ -54,6 +45,18 @@ #' agreed-upon cutoff value for an acceptable model for this index. Should be > #' 0.50. #' +#' - **RMSEA**: The Root Mean Square Error of Approximation is a +#' parsimony-adjusted index. Values closer to 0 represent a good fit. It should +#' be < .08 (Awang, 2012; `"awang2012"`) or < .05 (Byrne, 1994; `"byrne1994"`). +#' The p-value printed with it tests the hypothesis that RMSEA is less than or +#' equal to .05 (a cutoff sometimes used for good fit), and thus should be not +#' significant. +#' +#' - **RMR/SRMR**: the (Standardized) Root Mean Square Residual represents the +#' square-root of the difference between the residuals of the sample covariance +#' matrix and the hypothesized model. As the RMR can be sometimes hard to +#' interpret, better to use SRMR. Should be < .08 (Byrne, 1994; `"byrne1994"`). +#' #' See the documentation for \code{\link[lavaan:fitmeasures]{fitmeasures()}}. #' #' @@ -92,29 +95,35 @@ #' - Awang, Z. (2012). A handbook on SEM. Structural equation modeling. #' #' - Byrne, B. M. (1994). Structural equation modeling with EQS and EQS/Windows. -#' Thousand Oaks, CA: Sage Publications. -#' -#' - Tucker, L. R., and Lewis, C. (1973). The reliability coefficient for maximum -#' likelihood factor analysis. Psychometrika, 38, 1-10. +#' Thousand Oaks, CA: Sage Publications. #' -#' - Schumacker, R. E., and Lomax, R. G. (2004). A beginner's guide to structural -#' equation modeling, Second edition. Mahwah, NJ: Lawrence Erlbaum Associates. +#' - Fan, X., B. Thompson, and L. Wang (1999). Effects of sample size, +#' estimation method, and model specification on structural equation modeling +#' fit indexes. Structural Equation Modeling, 6, 56-83. #' -#' - Fan, X., B. Thompson, and L. Wang (1999). Effects of sample size, estimation -#' method, and model specification on structural equation modeling fit indexes. -#' Structural Equation Modeling, 6, 56-83. +#' - Hu, L. T., & Bentler, P. M. (1999). Cutoff criteria for fit indexes in +#' covariance structure analysis: Conventional criteria versus new +#' alternatives. Structural equation modeling: a multidisciplinary journal, +#' 6(1), 1-55. #' #' - Kline, R. B. (2015). Principles and practice of structural equation -#' modeling. Guilford publications. +#' modeling. Guilford publications. +#' +#' - Schumacker, R. E., and Lomax, R. G. (2004). A beginner's guide to +#' structural equation modeling, Second edition. Mahwah, NJ: Lawrence Erlbaum +#' Associates. +#' +#' - Tucker, L. R., and Lewis, C. (1973). The reliability coefficient for +#' maximum likelihood factor analysis. Psychometrika, 38, 1-10. #' #' #' @keywords interpreters #' @export -interpret_gfi <- function(x, rules = "default") { +interpret_gfi <- function(x, rules = "byrne1994") { rules <- .match.rules( rules, list( - default = rules(c(0.95), c("poor", "satisfactory"), name = "default", right = FALSE) + byrne1994 = rules(c(0.95), c("poor", "satisfactory"), name = "byrne1994", right = FALSE) ) ) @@ -124,11 +133,11 @@ interpret_gfi <- function(x, rules = "default") { #' @rdname interpret_gfi #' @export -interpret_agfi <- function(x, rules = "default") { +interpret_agfi <- function(x, rules = "byrne1994") { rules <- .match.rules( rules, list( - default = rules(c(0.90), c("poor", "satisfactory"), name = "default", right = FALSE) + byrne1994 = rules(c(0.90), c("poor", "satisfactory"), name = "byrne1994", right = FALSE) ) ) @@ -157,42 +166,38 @@ interpret_nnfi <- interpret_nfi #' @rdname interpret_gfi #' @export -interpret_cfi <- function(x, rules = "default") { +interpret_cfi <- function(x, rules = "byrne1994") { rules <- .match.rules( rules, list( - default = rules(c(0.90), c("poor", "satisfactory"), name = "default", right = FALSE) + "hu&bentler1999" = rules(c(0.96), c("poor", "satisfactory"), name = "hu&bentler1999", right = FALSE), + "byrne1994" = rules(c(0.90), c("poor", "satisfactory"), name = "byrne1994", right = FALSE) ) ) interpret(x, rules) } - - - #' @rdname interpret_gfi #' @export -interpret_rmsea <- function(x, rules = "default") { +interpret_rfi <- function(x, rules = "default") { rules <- .match.rules( rules, list( - default = rules(c(0.05), c("satisfactory", "poor"), name = "default"), - awang2012 = rules(c(0.05, 0.08), c("good", "satisfactory", "poor"), name = "awang2012") + default = rules(c(0.90), c("poor", "satisfactory"), name = "default", right = FALSE) ) ) interpret(x, rules) } - #' @rdname interpret_gfi #' @export -interpret_srmr <- function(x, rules = "default") { +interpret_ifi <- function(x, rules = "default") { rules <- .match.rules( rules, list( - default = rules(c(0.08), c("satisfactory", "poor"), name = "default") + default = rules(c(0.90), c("poor", "satisfactory"), name = "default", right = FALSE) ) ) @@ -201,11 +206,11 @@ interpret_srmr <- function(x, rules = "default") { #' @rdname interpret_gfi #' @export -interpret_rfi <- function(x, rules = "default") { +interpret_pnfi <- function(x, rules = "default") { rules <- .match.rules( rules, list( - default = rules(c(0.90), c("poor", "satisfactory"), name = "default", right = FALSE) + default = rules(c(0.50), c("poor", "satisfactory"), name = "default") ) ) @@ -214,31 +219,32 @@ interpret_rfi <- function(x, rules = "default") { #' @rdname interpret_gfi #' @export -interpret_ifi <- function(x, rules = "default") { +interpret_rmsea <- function(x, rules = "byrne1994") { rules <- .match.rules( rules, list( - default = rules(c(0.90), c("poor", "satisfactory"), name = "default", right = FALSE) + byrne1994 = rules(c(0.05), c("satisfactory", "poor"), name = "byrne1994"), + awang2012 = rules(c(0.05, 0.08), c("good", "satisfactory", "poor"), name = "awang2012") ) ) interpret(x, rules) } + #' @rdname interpret_gfi #' @export -interpret_pnfi <- function(x, rules = "default") { +interpret_srmr <- function(x, rules = "byrne1994") { rules <- .match.rules( rules, list( - default = rules(c(0.50), c("poor", "satisfactory"), name = "default") + byrne1994 = rules(c(0.08), c("satisfactory", "poor"), name = "byrne1994") ) ) interpret(x, rules) } - # lavaan ------------------------------------------------------------------ #' @rdname interpret_gfi diff --git a/cran-comments.md b/cran-comments.md index 32cdd3a62..24b7a9cfc 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -6,7 +6,7 @@ ## Test environments -* local installation: R 4.2.2 on Windows +* local installation: R 4.3.1 on Windows * GitHub Actions - Windows: release - macOS: release @@ -21,7 +21,7 @@ ## revdepcheck results -We checked 19 reverse dependencies, comparing R CMD check results across CRAN and dev versions of this package. +We checked 20 reverse dependencies, comparing R CMD check results across CRAN and dev versions of this package. * We saw 0 new problems * We failed to check 0 packages diff --git a/inst/WORDLIST b/inst/WORDLIST index 8b1654575..95819419a 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -13,6 +13,7 @@ BMC Baptista BayestestR's Behaviour +Bentler Bergsma Biometrics Biometrika @@ -66,6 +67,7 @@ Hedges’ Hjort Hoekstra Hotelling's +Hu IFI IRRs Intraclass diff --git a/man/effectsize.Rd b/man/effectsize.Rd index 7770ab81b..f1b55ddfb 100644 --- a/man/effectsize.Rd +++ b/man/effectsize.Rd @@ -22,7 +22,7 @@ effectsize(model, ...) \item{type}{The effect size of interest. See details.} \item{ci}{Value or vector of probability of the CI (between 0 and 1) -to be estimated. Default to \code{.95} (\verb{95\%}).} +to be estimated. Default to \code{0.95} (\verb{95\%}).} \item{test}{The indices of effect existence to compute. Character (vector) or list with one or more of these options: \code{"p_direction"} (or \code{"pd"}), diff --git a/man/eta_squared.Rd b/man/eta_squared.Rd index a544bccf3..87c37b170 100644 --- a/man/eta_squared.Rd +++ b/man/eta_squared.Rd @@ -53,7 +53,9 @@ cohens_f( cohens_f_squared( model, partial = TRUE, + generalized = FALSE, squared = TRUE, + method = c("eta", "omega", "epsilon"), model2 = NULL, ci = 0.95, alternative = "greater", @@ -162,7 +164,7 @@ to \code{eta_squared()}. See examples below for use of \code{car::Anova()} and t \code{afex} package. \cr\cr For type 3 sum of squares, it is generally recommended to fit models with -\emph{orthoginal factor weights} (e.g., \code{contr.sum}) and \emph{centered covariates}, +\emph{orthogonal factor weights} (e.g., \code{contr.sum}) and \emph{centered covariates}, for sensible results. See examples and the \code{afex} package. } diff --git a/man/interpret_gfi.Rd b/man/interpret_gfi.Rd index 407fb4215..502ae66a0 100644 --- a/man/interpret_gfi.Rd +++ b/man/interpret_gfi.Rd @@ -6,28 +6,24 @@ \alias{interpret_nfi} \alias{interpret_nnfi} \alias{interpret_cfi} -\alias{interpret_rmsea} -\alias{interpret_srmr} \alias{interpret_rfi} \alias{interpret_ifi} \alias{interpret_pnfi} +\alias{interpret_rmsea} +\alias{interpret_srmr} \alias{interpret.lavaan} \alias{interpret.performance_lavaan} \title{Interpret of CFA / SEM Indices of Goodness of Fit} \usage{ -interpret_gfi(x, rules = "default") +interpret_gfi(x, rules = "byrne1994") -interpret_agfi(x, rules = "default") +interpret_agfi(x, rules = "byrne1994") interpret_nfi(x, rules = "byrne1994") interpret_nnfi(x, rules = "byrne1994") -interpret_cfi(x, rules = "default") - -interpret_rmsea(x, rules = "default") - -interpret_srmr(x, rules = "default") +interpret_cfi(x, rules = "byrne1994") interpret_rfi(x, rules = "default") @@ -35,6 +31,10 @@ interpret_ifi(x, rules = "default") interpret_pnfi(x, rules = "default") +interpret_rmsea(x, rules = "byrne1994") + +interpret_srmr(x, rules = "byrne1994") + \method{interpret}{lavaan}(x, ...) \method{interpret}{performance_lavaan}(x, ...) @@ -42,7 +42,8 @@ interpret_pnfi(x, rules = "default") \arguments{ \item{x}{vector of values, or an object of class \code{lavaan}.} -\item{rules}{Can be \code{"default"} or custom set of \code{\link[=rules]{rules()}}.} +\item{rules}{Can be the name of a set of rules (see below) or custom set of +\code{\link[=rules]{rules()}}.} \item{...}{Currently not used.} } @@ -59,25 +60,17 @@ between the sample and fitted covariance matrices. Its p-value should be > is quite sensitive to sample size. \item \strong{GFI/AGFI}: The (Adjusted) Goodness of Fit is the proportion of variance accounted for by the estimated population covariance. Analogous to R2. The -GFI and the AGFI should be > .95 and > .90, respectively. +GFI and the AGFI should be > .95 and > .90, respectively (Byrne, 1994; +\code{"byrne1994"}). \item \strong{NFI/NNFI/TLI}: The (Non) Normed Fit Index. An NFI of 0.95, indicates the model of interest improves the fit by 95\\% relative to the null model. The NNFI (also called the Tucker Lewis index; TLI) is preferable for smaller -samples. They should be > .90 (Byrne, 1994) or > .95 (Schumacker & Lomax, -2004). +samples. They should be > .90 (Byrne, 1994; \code{"byrne1994"}) or > .95 +(Schumacker & Lomax, 2004; \code{"schumacker2004"}). \item \strong{CFI}: The Comparative Fit Index is a revised form of NFI. Not very sensitive to sample size (Fan, Thompson, & Wang, 1999). Compares the fit of a -target model to the fit of an independent, or null, model. It should be > -.90. -\item \strong{RMSEA}: The Root Mean Square Error of Approximation is a -parsimony-adjusted index. Values closer to 0 represent a good fit. It should -be < .08 or < .05. The p-value printed with it tests the hypothesis that -RMSEA is less than or equal to .05 (a cutoff sometimes used for good fit), -and thus should be not significant. -\item \strong{RMR/SRMR}: the (Standardized) Root Mean Square Residual represents the -square-root of the difference between the residuals of the sample covariance -matrix and the hypothesized model. As the RMR can be sometimes hard to -interpret, better to use SRMR. Should be < .08. +target model to the fit of an independent, or null, model. It should be > .96 +(Hu & Bentler, 1999; \code{"hu&bentler1999"}) or .90 (Byrne, 1994; \code{"byrne1994"}). \item \strong{RFI}: the Relative Fit Index, also known as RHO1, is not guaranteed to vary from 0 to 1. However, RFI close to 1 indicates a good fit. \item \strong{IFI}: the Incremental Fit Index (IFI) adjusts the Normed Fit Index (NFI) @@ -86,6 +79,16 @@ fit, but the index can exceed 1. \item \strong{PNFI}: the Parsimony-Adjusted Measures Index. There is no commonly agreed-upon cutoff value for an acceptable model for this index. Should be > 0.50. +\item \strong{RMSEA}: The Root Mean Square Error of Approximation is a +parsimony-adjusted index. Values closer to 0 represent a good fit. It should +be < .08 (Awang, 2012; \code{"awang2012"}) or < .05 (Byrne, 1994; \code{"byrne1994"}). +The p-value printed with it tests the hypothesis that RMSEA is less than or +equal to .05 (a cutoff sometimes used for good fit), and thus should be not +significant. +\item \strong{RMR/SRMR}: the (Standardized) Root Mean Square Residual represents the +square-root of the difference between the residuals of the sample covariance +matrix and the hypothesized model. As the RMR can be sometimes hard to +interpret, better to use SRMR. Should be < .08 (Byrne, 1994; \code{"byrne1994"}). } See the documentation for \code{\link[lavaan:fitmeasures]{fitmeasures()}}. @@ -130,15 +133,20 @@ interpret(model) \item Awang, Z. (2012). A handbook on SEM. Structural equation modeling. \item Byrne, B. M. (1994). Structural equation modeling with EQS and EQS/Windows. Thousand Oaks, CA: Sage Publications. -\item Tucker, L. R., and Lewis, C. (1973). The reliability coefficient for maximum -likelihood factor analysis. Psychometrika, 38, 1-10. -\item Schumacker, R. E., and Lomax, R. G. (2004). A beginner's guide to structural -equation modeling, Second edition. Mahwah, NJ: Lawrence Erlbaum Associates. -\item Fan, X., B. Thompson, and L. Wang (1999). Effects of sample size, estimation -method, and model specification on structural equation modeling fit indexes. -Structural Equation Modeling, 6, 56-83. +\item Fan, X., B. Thompson, and L. Wang (1999). Effects of sample size, +estimation method, and model specification on structural equation modeling +fit indexes. Structural Equation Modeling, 6, 56-83. +\item Hu, L. T., & Bentler, P. M. (1999). Cutoff criteria for fit indexes in +covariance structure analysis: Conventional criteria versus new +alternatives. Structural equation modeling: a multidisciplinary journal, +6(1), 1-55. \item Kline, R. B. (2015). Principles and practice of structural equation modeling. Guilford publications. +\item Schumacker, R. E., and Lomax, R. G. (2004). A beginner's guide to +structural equation modeling, Second edition. Mahwah, NJ: Lawrence Erlbaum +Associates. +\item Tucker, L. R., and Lewis, C. (1973). The reliability coefficient for +maximum likelihood factor analysis. Psychometrika, 38, 1-10. } } \keyword{interpreters} diff --git a/man/w_to_fei.Rd b/man/w_to_fei.Rd index 56936f55c..dd955a567 100644 --- a/man/w_to_fei.Rd +++ b/man/w_to_fei.Rd @@ -11,7 +11,7 @@ \alias{c_to_w} \alias{v_to_t} \alias{t_to_v} -\title{Convert Between \emph{d}, \emph{r}, and Odds Ratio} +\title{Convert Between Effect Sizes for Contingency Tables Correlations} \usage{ w_to_fei(w, p)