## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set(collapse = FALSE, comment = "", fig.width = 7, fig.height = 4.5, dpi = 96, dev.args = list(bg = "transparent")) # Console colour carries no meaning on a rendered page. pkgdown turns it on for # its own build, and the escape sequences then reach the reader as literal text, # so colour is switched off here for a plain vignette render and a site build # alike. The fixed width keeps printed output inside the documentation column. options(cli.num_colors = 1, cli.hyperlink = FALSE, crayon.enabled = FALSE, width = 80) # Figures on the package website sit on a warm off-white page in light mode and # are inverted by pkgdown in dark mode, so an opaque background would read as a # pale slab one way and a black plate the other. Two things paint one. The # device # canvas is made transparent by `dev.args` above, and theme_depictr() then # inherits theme_minimal()'s white plot.background, which is drawn over that # canvas, so it is cleared as each figure is printed. This is deliberately a # vignette-level choice: theme_depictr() keeps its opaque background, which is # what a figure saved for a paper wants. transparent_bg <- ggplot2::theme( plot.background = ggplot2::element_rect(fill = NA, colour = NA), panel.background = ggplot2::element_rect(fill = NA, colour = NA) ) knit_print.ggplot <- function(x, ...) knitr::normal_print(x + transparent_bg) knit_print.patchwork <- function(x, ...) knitr::normal_print(x & transparent_bg) library(depictr) # Every chunk that touches the fitted model is guarded on lmerTest, which imports # lme4, so one condition covers both packages. has_lmer <- requireNamespace("lmerTest", quietly = TRUE) has_ggdist <- requireNamespace("ggdist", quietly = TRUE) ## ----fit, eval = has_lmer----------------------------------------------------- correct <- subset(lexical_decision, accuracy == 1) fit <- lmerTest::lmer( RT ~ condition + modality + word_frequency + (1 | participant) + (1 | item), data = correct ) ## ----coef, eval = has_lmer---------------------------------------------------- coefficient_plot( fit, order = "ascending", labels = c(conditionunrelated = "Unrelated priming", modalityauditory = "Auditory modality", word_frequency = "Word frequency (Zipf)"), title = "Predictors of lexical-decision RT (ms)" ) ## ----coef-std, eval = has_lmer------------------------------------------------ coefficient_plot(fit, standardise = TRUE, order = "ascending", title = "Standardised predictors of RT") ## ----compare, eval = has_lmer------------------------------------------------- reduced <- lmerTest::lmer( RT ~ condition + word_frequency + (1 | participant) + (1 | item), data = correct ) compare_models(Reduced = reduced, Full = fit, order = "descending") ## ----fit-table, eval = has_lmer----------------------------------------------- knitr::kable(model_fit_table(Reduced = reduced, Full = fit)) ## ----effects, eval = has_lmer------------------------------------------------- effects_plot(fit, "word_frequency", title = "Predicted RT across word frequency") ## ----interaction-------------------------------------------------------------- crop_fit <- lm(yield ~ fertiliser * treatment + rainfall, data = crop_yield) interaction_plot(crop_fit, "fertiliser", "treatment", title = "Fertiliser x treatment interaction") ## ----fbp, eval = has_lmer && has_ggdist, fig.height = 4----------------------- draws <- readRDS( system.file("extdata", "lexdec_draws.rds", package = "depictr") ) frequentist_bayesian_plot( fit, draws, intercept = FALSE, note_frequentist_no_prior = TRUE, title = "Frequentist estimate over the full Bayesian posterior" ) ## ----posterior, eval = has_ggdist, fig.height = 4----------------------------- draws <- readRDS( system.file("extdata", "lexdec_draws.rds", package = "depictr") ) slopes <- draws[c("conditionunrelated", "modalityauditory", "word_frequency")] posterior_plot( slopes, style = "halfeye", rope = c(-5, 5), pd = TRUE, labels = c(conditionunrelated = "condition", modalityauditory = "modality", word_frequency = "word frequency"), title = "Fixed-effect posteriors (ms), with ROPE and pd" ) ## ----ranef, eval = has_lmer, fig.height = 6----------------------------------- random_effects_plot(fit, title = "By-group departures (random intercepts)") ## ----optim, fig.height = 4.5-------------------------------------------------- af <- readRDS(system.file("extdata", "allfit_lexdec.rds", package = "depictr")) fx <- af$fixef # optimisers x fixed effects opt_long <- data.frame( optimizer = rep(rownames(fx), times = ncol(fx)), term = rep(colnames(fx), each = nrow(fx)), value = as.vector(fx) ) optimizer_fixef_plot( opt_long, title = "Fixed effects across optimisers", labels = c(conditionunrelated = "condition", modalityauditory = "modality", word_frequency = "word frequency") ) ## ----report, fig.width = 9, fig.height = 7------------------------------------ full <- lm(yield ~ rainfall + fertiliser + soil_ph + treatment, data = crop_yield) model_report(full, title = "Crop-yield model")