Nothing
## ----include = FALSE--------------------------------------------------------------------------------------------------------------------------------------------------------------
## Use ragg for better font rendering if available
if (requireNamespace("ragg", quietly = TRUE)) {
old_opts <- options(summata.use_ragg = TRUE, width = 180)
knitr::opts_chunk$set(
dev = "ragg_png",
fig.retina = 1,
collapse = TRUE,
comment = "##>",
message = FALSE,
warning = FALSE,
fig.width = 8,
fig.height = 5,
out.width = "100%"
)
} else {
old_opts <- options(width = 180)
knitr::opts_chunk$set(
collapse = TRUE,
comment = "##>",
message = FALSE,
warning = FALSE,
fig.width = 8,
fig.height = 5,
out.width = "100%"
)
}
## Dynamic figure sizing: queue_plot() stashes rec_dims from a plot object,
## and the opts_hook on the NEXT chunk (with use_rec_dims = TRUE) applies them
## before knitr opens the graphics device. Plots render via ragg (dev = "ragg_png"
## set above) and knitr captures them natively. No files written to disk.
.plot_dims <- new.env(parent = emptyenv())
.plot_dims$width <- NULL
.plot_dims$height <- NULL
knitr::opts_hooks$set(use_rec_dims = function(options) {
if (isTRUE(options$use_rec_dims)) {
if (!is.null(.plot_dims$width)) options$fig.width <- .plot_dims$width
if (!is.null(.plot_dims$height)) options$fig.height <- .plot_dims$height
.plot_dims$width <- NULL
.plot_dims$height <- NULL
}
options
})
## Call at the end of a plot-creation chunk to stash dimensions for the next chunk.
queue_plot <- function(plot) {
dims <- attr(plot, "rec_dims")
if (!is.null(dims)) {
.plot_dims$width <- dims$width
.plot_dims$height <- dims$height
}
invisible(plot)
}
## ----setup------------------------------------------------------------------------------------------------------------------------------------------------------------------------
library(summata)
library(survival)
library(ggplot2)
data(clintrial)
data(clintrial_labels)
# Examine the clustering structure
table(clintrial$site)
## ----eval = FALSE-----------------------------------------------------------------------------------------------------------------------------------------------------------------
# p <- glmforest(model, data = mydata)
# dims <- attr(p, "rec_dims")
# ggplot2::ggsave("forest_plot.png", p,
# width = dims$width,
# height = dims$height)
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example1 <- fit(
data = clintrial,
outcome = "surgery",
predictors = c("age", "sex", "treatment", "stage"),
interactions = c("sex:treatment"),
model_type = "glm",
labels = clintrial_labels
)
example1
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example2 <- fit(
data = clintrial,
outcome = "Surv(os_months, os_status)",
predictors = c("age", "sex", "treatment", "stage"),
interactions = c("sex:treatment", "stage:treatment"),
model_type = "coxph",
labels = clintrial_labels
)
example2
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example3 <- fit(
data = clintrial,
outcome = "los_days",
predictors = c("age", "sex", "treatment", "stage", "surgery"),
interactions = c("age:treatment"),
model_type = "lm",
labels = clintrial_labels
)
example3
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example4 <- fullfit(
data = clintrial,
outcome = "surgery",
predictors = c("age", "sex", "treatment", "stage", "sex:treatment"),
model_type = "glm",
method = "all",
labels = clintrial_labels
)
example4
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example5 <- compfit(
data = clintrial,
outcome = "surgery",
model_list = list(
"Main Effects" = c("age", "sex", "treatment", "stage"),
"Sex × Treatment" = c("age", "sex", "treatment", "stage"),
"Stage × Treatment" = c("age", "sex", "treatment", "stage"),
"Both Interactions" = c("age", "sex", "treatment", "stage")
),
interactions_list = list(
NULL,
c("sex:treatment"),
c("stage:treatment"),
c("sex:treatment", "stage:treatment")
),
model_type = "glm",
labels = clintrial_labels
)
example5
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
interaction_model <- fit(
data = clintrial,
outcome = "surgery",
predictors = c("age", "sex", "treatment", "stage"),
interactions = c("sex:treatment"),
model_type = "glm",
labels = clintrial_labels
)
example6 <- glmforest(
x = attr(interaction_model, "model"),
title = "Logistic Regression with Interaction",
labels = clintrial_labels,
indent_groups = TRUE,
zebra_stripes = TRUE
)
queue_plot(example6)
## ----echo = FALSE, out.width = "100%", use_rec_dims = TRUE------------------------------------------------------------------------------------------------------------------------
print(example6)
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example7 <- fit(
data = clintrial,
outcome = "los_days",
predictors = c("age", "sex", "treatment", "stage", "(1|site)"),
model_type = "lmer",
labels = clintrial_labels
)
example7
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example8 <- fit(
data = clintrial,
outcome = "surgery",
predictors = c("age", "sex", "treatment", "stage"),
random = "(1|site)",
model_type = "glmer",
labels = clintrial_labels
)
example8
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example9 <- fit(
data = clintrial,
outcome = "los_days",
predictors = c("age", "sex", "treatment", "stage", "(1 + treatment|site)"),
model_type = "lmer",
labels = clintrial_labels
)
example9
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example10 <- fit(
data = clintrial,
outcome = "Surv(os_months, os_status)",
predictors = c("age", "sex", "treatment", "stage", "(1|site)"),
model_type = "coxme",
labels = clintrial_labels
)
example10
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example11 <- glmforest(
x = attr(example8, "model"),
title = "Logistic Mixed Model (Fixed Effects)",
labels = clintrial_labels,
indent_groups = TRUE,
zebra_stripes = TRUE
)
queue_plot(example11)
## ----echo = FALSE, out.width = "100%", use_rec_dims = TRUE------------------------------------------------------------------------------------------------------------------------
print(example11)
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example12 <- compfit(
data = clintrial,
outcome = "los_days",
model_list = list(
"Random Intercepts" = c("age", "sex", "treatment", "stage", "(1|site)"),
"Random Slopes" = c("age", "sex", "treatment", "stage", "(1 + treatment|site)")
),
model_type = "lmer",
labels = clintrial_labels
)
example12
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example13 <- fit(
data = clintrial,
outcome = "Surv(os_months, os_status)",
predictors = c("age", "sex", "treatment"),
strata = "site",
model_type = "coxph",
labels = clintrial_labels
)
example13
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example14 <- fit(
data = clintrial,
outcome = "Surv(os_months, os_status)",
predictors = c("age", "sex", "treatment", "stage"),
cluster = "site",
model_type = "coxph",
labels = clintrial_labels
)
example14
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Create example weights
clintrial$analysis_weight <- runif(nrow(clintrial), 0.5, 2.0)
example15 <- fit(
data = clintrial,
outcome = "surgery",
predictors = c("age", "sex", "treatment", "stage"),
weights = "analysis_weight",
model_type = "glm",
labels = clintrial_labels
)
example15
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example16 <- uniscreen(
data = clintrial,
outcome = "surgery",
predictors = c("age", "sex", "treatment", "stage"),
model_type = "glmer",
random = "(1|site)",
labels = clintrial_labels
)
example16
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example17 <- uniscreen(
data = clintrial,
outcome = "Surv(os_months, os_status)",
predictors = c("age", "sex", "treatment", "stage", "ecog"),
model_type = "coxme",
random = "(1|site)",
labels = clintrial_labels
)
example17
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
uni_results <- uniscreen(
data = clintrial,
outcome = "Surv(os_months, os_status)",
predictors = c("age", "sex", "treatment", "stage", "ecog", "grade"),
model_type = "coxph",
labels = clintrial_labels
)
example18 <- uniforest(
uni_results,
title = "Univariable Screening Results",
indent_groups = TRUE,
zebra_stripes = TRUE
)
queue_plot(example18)
## ----echo = FALSE, out.width = "100%", use_rec_dims = TRUE------------------------------------------------------------------------------------------------------------------------
print(example18)
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example19 <- multifit(
data = clintrial,
outcomes = c("surgery", "pfs_status", "os_status"),
predictor = "treatment",
covariates = c("age", "sex", "stage"),
interactions = c("treatment:sex"),
labels = clintrial_labels,
parallel = FALSE
)
example19
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example20 <- multifit(
data = clintrial,
outcomes = c("surgery", "pfs_status"),
predictor = "treatment",
covariates = c("age", "sex"),
random = "(1|site)",
model_type = "glmer",
labels = clintrial_labels,
parallel = FALSE
)
example20
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
example21 <- multifit(
data = clintrial,
outcomes = c("Surv(pfs_months, pfs_status)",
"Surv(os_months, os_status)"),
predictor = "treatment",
covariates = c("age", "sex"),
random = "(1|site)",
model_type = "coxme",
labels = clintrial_labels,
parallel = FALSE
)
example21
## ----fig.width = 12, fig.height = 8-----------------------------------------------------------------------------------------------------------------------------------------------
# Step 1: Screen risk factors for primary outcome
risk_screening <- uniscreen(
data = clintrial,
outcome = "os_status",
predictors = c("age", "sex", "bmi", "smoking", "diabetes",
"hypertension", "stage", "ecog", "treatment"),
model_type = "glm",
p_threshold = 0.20,
labels = clintrial_labels
)
risk_screening
# Step 2: Test key exposure across multiple outcomes
effects <- multifit(
data = clintrial,
outcomes = c("surgery", "pfs_status", "os_status"),
predictor = "treatment",
covariates = c("age", "sex", "stage"),
columns = "both",
labels = clintrial_labels,
parallel = FALSE
)
effects
# Step 3: Visualize effects
forest_plot <- multiforest(
effects,
title = "Effects Across Outcomes",
indent_predictor = TRUE,
zebra_stripes = TRUE
)
queue_plot(forest_plot)
## ----echo = FALSE, out.width = "100%", use_rec_dims = TRUE------------------------------------------------------------------------------------------------------------------------
print(forest_plot)
## ----eval = FALSE-----------------------------------------------------------------------------------------------------------------------------------------------------------------
# # Start with random intercepts only
# fit(data, outcome, c(predictors, "(1|site)"), model_type = "lmer")
## ----eval = FALSE-----------------------------------------------------------------------------------------------------------------------------------------------------------------
# # Access model for detailed interpretation
# model <- attr(result, "model")
# summary(model)
## ----include = FALSE----------------------------------------------------------
options(old_opts)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.