## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 4 ) ## ----logistic----------------------------------------------------------------- library(ggadjustedforest) data(mtcars) mtcars$am <- as.integer(mtcars$am) # binary outcome: automatic (0) vs manual (1) result <- gg_adjusted_forest( data = mtcars, outcome = "am", exposure = "hp", covariates = c("wt", "cyl"), model_type = "logistic", title = "Effect of Horsepower on Transmission Type" ) result$table ## ----plot-logistic------------------------------------------------------------ result$plot ## ----cumulative--------------------------------------------------------------- result_cum <- gg_adjusted_forest( data = mtcars, outcome = "am", exposure = "hp", covariates = c("wt", "cyl", "disp"), cumulative = TRUE, title = "Cumulative adjustment: hp on transmission" ) result_cum$formatted_table[, c("model", "formatted", "p.value")] ## ----cumulative-labels-------------------------------------------------------- labels <- c( "Unadjusted" = "Crude", "+ wt" = "Adjusted for weight", "+ wt + cyl" = "Adjusted for weight + cylinders", "+ wt + cyl + disp" = "Fully adjusted" ) result_cum2 <- gg_adjusted_forest( data = mtcars, outcome = "am", exposure = "hp", covariates = c("wt", "cyl", "disp"), cumulative = TRUE, cumulative_labels = labels, title = "Cumulative adjustment with custom labels" ) result_cum2$plot ## ----cox---------------------------------------------------------------------- lung <- survival::lung lung$status01 <- as.integer(lung$status == 2) lung <- stats::na.omit(lung[, c("time", "status01", "age", "sex", "ph.ecog")]) result_cox <- gg_adjusted_forest( data = lung, outcome = "status01", exposure = "age", covariates = c("sex", "ph.ecog"), model_type = "coxph", time_var = "time", event_var = "status01", title = "Effect of Age on Survival (lung cancer)" ) result_cox$plot ## ----custom------------------------------------------------------------------- gg_adjusted_forest( data = mtcars, outcome = "am", exposure = "hp", covariates = "wt", model_type = "logistic", color = "#2166ac", point_size = 5, point_shape = 18, # diamond vline_color = "firebrick", vline_linetype = "dotted", x_breaks = c(0.9, 1.0, 1.1), title = "Custom aesthetics" )$plot ## ----linear------------------------------------------------------------------- gg_adjusted_forest( data = mtcars, outcome = "mpg", exposure = "hp", covariates = c("wt", "cyl"), model_type = "linear", title = "Effect of Horsepower on Fuel Efficiency" )$plot ## ----table-only--------------------------------------------------------------- forest_table( data = mtcars, outcome = "am", exposure = "hp", covariates = c("wt", "cyl"), model_type = "logistic" ) ## ----multi-patchwork, warning=FALSE, fig.height=5, fig.width=10--------------- library(patchwork) data(mtcars) mtcars$am <- as.integer(mtcars$am) mtcars$vs <- as.integer(mtcars$vs) # Extract $plot — patchwork composes ggplot2 objects directly p_am <- gg_adjusted_forest( data = mtcars, outcome = "am", exposure = "hp", covariates = c("wt", "cyl"), model_type = "logistic", title = "Transmission", show_table = FALSE )$plot p_vs <- gg_adjusted_forest( data = mtcars, outcome = "vs", exposure = "hp", covariates = c("wt", "cyl"), model_type = "logistic", title = "Engine Shape", show_table = FALSE )$plot p_am / p_vs