Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Type: Package
Package: effectsize
Title: Indices of Effect Size
Version: 1.0.1.1
Version: 1.0.1.2
Authors@R:
c(person(given = "Mattan S.",
family = "Ben-Shachar",
Expand Down
27 changes: 15 additions & 12 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,10 @@ S3method(interpret,effectsize_table)
S3method(interpret,lavaan)
S3method(interpret,numeric)
S3method(interpret,performance_lavaan)
S3method(odds_to_probs,data.frame)
S3method(odds_to_probs,numeric)
S3method(oddsratio_to_arr,default)
S3method(oddsratio_to_arr,numeric)
S3method(oddsratio_to_nnt,default)
S3method(oddsratio_to_nnt,numeric)
S3method(oddsratio_to_riskratio,default)
S3method(oddsratio_to_riskratio,numeric)
S3method(plot,effectsize_table)
Expand All @@ -48,13 +50,17 @@ S3method(print_html,effectsize_table)
S3method(print_html,rules)
S3method(print_md,effectsize_table)
S3method(print_md,rules)
S3method(probs_to_odds,data.frame)
S3method(probs_to_odds,numeric)
S3method(r2_semipartial,lm)
S3method(rb_to_p_superiority,effectsize_difference)
S3method(rb_to_p_superiority,numeric)
S3method(rb_to_wmw_odds,effectsize_difference)
S3method(rb_to_wmw_odds,numeric)
S3method(riskratio_to_arr,default)
S3method(riskratio_to_arr,numeric)
S3method(riskratio_to_nnt,default)
S3method(riskratio_to_nnt,numeric)
S3method(riskratio_to_oddsratio,default)
S3method(riskratio_to_oddsratio,numeric)
export(.es_aov_simple)
export(.es_aov_strata)
export(.es_aov_table)
Expand All @@ -70,6 +76,7 @@ export(arr)
export(arr_to_logoddsratio)
export(arr_to_nnt)
export(arr_to_oddsratio)
export(arr_to_probs)
export(arr_to_riskratio)
export(c_to_w)
export(chisq_to_cohens_w)
Expand All @@ -88,14 +95,6 @@ export(cohens_u1)
export(cohens_u2)
export(cohens_u3)
export(cohens_w)
export(convert_d_to_oddsratio)
export(convert_d_to_r)
export(convert_odds_to_probs)
export(convert_oddsratio_to_d)
export(convert_oddsratio_to_r)
export(convert_probs_to_odds)
export(convert_r_to_d)
export(convert_r_to_oddsratio)
export(cov_pooled)
export(cramers_v)
export(d_to_logoddsratio)
Expand Down Expand Up @@ -165,6 +164,7 @@ export(kendalls_w)
export(logoddsratio_to_arr)
export(logoddsratio_to_d)
export(logoddsratio_to_nnt)
export(logoddsratio_to_probs)
export(logoddsratio_to_r)
export(logoddsratio_to_riskratio)
export(mad_pooled)
Expand All @@ -174,12 +174,14 @@ export(nnt)
export(nnt_to_arr)
export(nnt_to_logoddsratio)
export(nnt_to_oddsratio)
export(nnt_to_probs)
export(nnt_to_riskratio)
export(odds_to_probs)
export(oddsratio)
export(oddsratio_to_arr)
export(oddsratio_to_d)
export(oddsratio_to_nnt)
export(oddsratio_to_probs)
export(oddsratio_to_r)
export(oddsratio_to_riskratio)
export(omega_squared)
Expand Down Expand Up @@ -207,6 +209,7 @@ export(riskratio_to_arr)
export(riskratio_to_logoddsratio)
export(riskratio_to_nnt)
export(riskratio_to_oddsratio)
export(riskratio_to_probs)
export(rm_d)
export(rules)
export(sd_pooled)
Expand Down
12 changes: 12 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,20 @@

## New features

- `oddsratio_to_*()` and `riskratio_to_*()` can now convert binomial models with logit- or log-links (respectively) to any of RR, OR, ARR, NNT.
- New functions to convert between measures of change in probabilities and probabilities. See `?oddsratio_to_probs` for all available functions.
- `effetsize()` and friends support `datawizard::data_tabulate()` objects as inputs.

## Changes

`riskratio_to_*()` now returns `NA` if the expected risk is larger than 1. This results when impossible combinations of risk ratio `RR` and baseline risk `p0` are provided.

## Breaking Changes

- `probs_to_odds(<data.frame>)` and `odds_to_probs(<data.frame>)` methods has been deprecated.
- `riskratio(log=)` argument has been deprecated.
- `convert_*()` aliases, deprecated since March 2023, have been removed.

# effectsize 1.0.1

## New features
Expand Down
115 changes: 6 additions & 109 deletions R/convert_between_odds_to_probs.R
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
#' @param odds The *Odds* (or `log(odds)` when `log = TRUE`) to convert.
#' @param probs Probability values to convert.
#' @param log Take in or output log odds (such as in logistic models).
#' @param select When a data frame is passed, character or list of of column
#' names to be transformed.
#' @param exclude When a data frame is passed, character or list of column names
#' to be excluded from transformation.
#' @param ... Arguments passed to or from other methods.
#'
#' @return Converted index.
Expand All @@ -22,126 +18,27 @@
#' probs_to_odds(0.95, log = TRUE)
#' @export
odds_to_probs <- function(odds, log = FALSE, ...) {
UseMethod("odds_to_probs")
}
if (is.data.frame(odds)) {
.deprecated_df_methods("odds_to_probs")
}

#' @export
odds_to_probs.numeric <- function(odds, log = FALSE, ...) {
if (log) {
stats::plogis(odds)
} else {
stats::plogis(log(odds))
}
}


#' @rdname odds_to_probs
#' @export
odds_to_probs.data.frame <- function(odds, log = FALSE, select = NULL, exclude = NULL, ...) {
.odds_to_probs_df(odds = odds, log = log, select = select, exclude = exclude, ...)
}


#' @rdname odds_to_probs
#' @export
probs_to_odds <- function(probs, log = FALSE, ...) {
UseMethod("probs_to_odds")
}
if (is.data.frame(probs)) {
.deprecated_df_methods("probs_to_odds")
}

#' @export
probs_to_odds.numeric <- function(probs, log = FALSE, ...) {
if (log) {
stats::qlogis(probs)
} else {
exp(stats::qlogis(probs))
}
}

#' @rdname odds_to_probs
#' @export
probs_to_odds.data.frame <- function(probs, log = FALSE, select = NULL, exclude = NULL, ...) {
.odds_to_probs_df(probs = probs, log = log, select = select, exclude = exclude, ...)
}









# Data frame --------------------------------------------------------------



#' @keywords internal
.odds_to_probs_df <- function(odds = NULL, probs = NULL, log = FALSE, select = NULL, exclude = NULL, ...) {
# If vector
if (is.null(odds)) {
mydata <- probs
} else {
mydata <- odds
}

# check for formula notation, convert to character vector
if (inherits(select, "formula")) {
select <- all.vars(select)
}
if (inherits(exclude, "formula")) {
exclude <- all.vars(exclude)
}

# Variable order
var_order <- names(mydata)

# Keep subset
if (!is.null(select) && select %in% names(mydata)) {
select <- as.vector(select)
to_keep <- as.data.frame(mydata[!names(mydata) %in% select])
mydata <- mydata[names(mydata) %in% select]
} else {
to_keep <- NULL
}

# Remove exceptions
if (!is.null(exclude) && exclude %in% names(mydata)) {
exclude <- as.vector(exclude)
if (is.null(to_keep)) {
to_keep <- as.data.frame(mydata[exclude])
} else {
to_keep <- cbind(to_keep, as.data.frame(mydata[exclude]))
}

mydata <- mydata[!names(mydata) %in% exclude]
}

# Remove non-numerics
is_num <- vapply(mydata, is.numeric, logical(1))
dfother <- mydata[!is_num]
dfnum <- mydata[is_num]

# Tranform
if (is.null(odds)) {
dfnum <- data.frame(lapply(dfnum, probs_to_odds.numeric, log = log))
} else {
dfnum <- data.frame(lapply(dfnum, odds_to_probs.numeric, log = log))
}

# Add non-numerics
if (is.null(ncol(dfother))) {
mydata <- dfnum
} else {
mydata <- cbind(dfother, dfnum)
}

# Add exceptions
if (!is.null(select) || !is.null(exclude) && exists("to_keep")) {
mydata <- cbind(mydata, to_keep)
}

# Reorder
mydata <- mydata[var_order]

mydata
}
Loading
Loading