Type: Package
Title: Produces an Odds Ratio Plot from a Logistic Regression Model
Version: 0.7.0
Maintainer: Craig Parylo <craig.parylo2@nhs.net>
Description: Produces an Odds Ratio (OR) Plot to visualise the result of a logistic regression analysis. Provide it with a binomial regression model produced by 'glm()' and it will convert the estimates to odds ratios with a 95% confidence interval and plot the results using 'ggplot2'.
License: MIT + file LICENSE
Encoding: UTF-8
Imports: broom, car, cli, detectseparation, dplyr, forcats, ggplot2, glue, gt, janitor, purrr, rlang, scales, stats, stringr, tibble, tidyselect
RoxygenNote: 7.3.2
Suggests: datasets, knitr, labelled, rmarkdown, svglite, testthat (≥ 3.0.0), tidyr, vdiffr
VignetteBuilder: knitr
URL: https://github.com/craig-parylo/plotor, https://craig-parylo.github.io/plotor/
BugReports: https://github.com/craig-parylo/plotor/issues
Config/testthat/edition: 3
Depends: R (≥ 4.1.0)
NeedsCompilation: no
Packaged: 2025-07-01 13:26:20 UTC; Craig.Parylo
Author: Craig Parylo ORCID iD [aut, cre, cph]
Repository: CRAN
Date/Publication: 2025-07-01 13:40:01 UTC

plotor: Produces an Odds Ratio Plot from a Logistic Regression Model

Description

logo

Produces an Odds Ratio (OR) Plot to visualise the result of a logistic regression analysis. Provide it with a binomial regression model produced by 'glm()' and it will convert the estimates to odds ratios with a 95

Author(s)

Maintainer: Craig Parylo craig.parylo2@nhs.net (ORCID) [copyright holder]

See Also

Useful links:


Check OR

Description

Performs a series of tests to ensure that assumptions for logistic regression are met, with optional detailed feedback if any tests fail.

Usage

check_or(glm_model_results, confint_fast_estimate = FALSE, details = TRUE)

Arguments

glm_model_results

Results from a binomial Generalised Linear Model (GLM), as produced by stats::glm().

confint_fast_estimate

Boolean (default = FALSE) Use a faster estimate of the confidence interval? Note: this assumes normally distributed data, which may not be suitable for your data.

details

Boolean (default = TRUE) Show detailed feedback for any failed tests?

Value

Logical, TRUE if all assumption tests pass, FALSE if one or more tests fail

Examples

# Load the Titanic dataset
df <- datasets::Titanic |>
  dplyr::as_tibble() |>
  # convert aggregated counts to individual observations
  dplyr::filter(n > 0) |>
  tidyr::uncount(weights = n) |>
  # convert character variables to factors
  dplyr::mutate(dplyr::across(dplyr::where(is.character), as.factor))

# Perform logistic regression using `glm`
lr <- stats::glm(
  data = df,
  family = binomial,
  formula = Survived ~ Class + Sex + Age
)

# Check the model for logistic regression assumption violations
check_or(lr)

Plot OR

Description

Produces an Odds Ratio plot to visualise the results of a logistic regression analysis.

Usage

plot_or(glm_model_results, conf_level = 0.95, confint_fast_estimate = FALSE)

Arguments

glm_model_results

Results from a binomial Generalised Linear Model (GLM), as produced by stats::glm().

conf_level

Numeric value between 0.001 and 0.999 (default = 0.95) specifying the confidence level for the confidence interval.

confint_fast_estimate

Boolean (default = FALSE) indicating whether to use a faster estimate of the confidence interval. Note: this assumes normally distributed data, which may not be suitable for your data.

Value

The function returns an object of class gg and ggplot, which can be customised and extended using various ggplot2 functions.

See Also

Examples

# Load required libraries
library(plotor)
library(datasets)
library(dplyr)
library(ggplot2)
library(stats)
library(forcats)
library(tidyr)

# Load the Titanic dataset
df <- datasets::Titanic |>
  as_tibble() |>
  # convert aggregated counts to individual observations
  filter(n > 0) |>
  uncount(weights = n) |>
  # convert character variables to factors
  mutate(across(where(is.character), as.factor))

# Perform logistic regression using `glm`
lr <- glm(
  data = df,
  family = 'binomial',
  formula = Survived ~ Class + Sex + Age
)

# Produce the Odds Ratio plot
plot_or(lr)

Table OR

Description

Produces a formatted table showing the outputs from the Odds Ratio analysis, including details on covariate characteristics and model results.

Usage

table_or(
  glm_model_results,
  conf_level = 0.95,
  output = "tibble",
  confint_fast_estimate = FALSE
)

Arguments

glm_model_results

Results from a binomial Generalised Linear Model (GLM), as produced by stats::glm().

conf_level

Numeric value between 0.001 and 0.999 (default = 0.95) specifying the confidence level for the confidence interval.

output

String describing of the output type (default = 'tibble'). Options include 'tibble' and 'gt'.

confint_fast_estimate

Boolean (default = FALSE) indicating whether to use a faster estimate of the confidence interval. Note: this assumes normally distributed data, which may not be suitable for your data.

Details

The table includes the following information:

Includes details on the characteristics of the covariates, such as:

Details are calculated showing the:

Also included is a visualisation of the OR plot to provide an at-a-glance view of the model results.

Value

The returned object depends on the output parameter:

Examples

# Load the Titanic dataset
df <- datasets::Titanic |>
  dplyr::as_tibble() |>
  # convert aggregated counts to individual observations
  dplyr::filter(n > 0) |>
  tidyr::uncount(weights = n) |>
  # convert character variables to factors
  dplyr::mutate(dplyr::across(dplyr::where(is.character), as.factor))

# Perform logistic regression using `glm`
lr <- stats::glm(
  data = df,
  family = 'binomial',
  formula = Survived ~ Class + Sex + Age
)

# Produce the Odds Ratio table as a tibble
table_or(lr)

# Produce the Odds Ratio table as a gt object
table_or(lr, output = 'gt')