Plot model coefficients
Plot model coefficients
ggcoef_model( model, tidy_fun = broom::tidy, conf.int = TRUE, conf.level = 0.95, exponentiate = FALSE, variable_labels = NULL, term_labels = NULL, interaction_sep = " * ", categorical_terms_pattern = "{level}", add_reference_rows = TRUE, no_reference_row = NULL, intercept = FALSE, include = dplyr::everything(), significance = 1 - conf.level, significance_labels = NULL, show_p_values = TRUE, signif_stars = TRUE, return_data = FALSE, ... ) ggcoef_compare( models, type = c("dodged", "faceted"), tidy_fun = broom::tidy, conf.int = TRUE, conf.level = 0.95, exponentiate = FALSE, variable_labels = NULL, term_labels = NULL, interaction_sep = " * ", categorical_terms_pattern = "{level}", add_reference_rows = TRUE, no_reference_row = NULL, intercept = FALSE, include = dplyr::everything(), significance = 1 - conf.level, significance_labels = NULL, return_data = FALSE, ... ) ggcoef_multinom( model, type = c("dodged", "faceted"), y.level_label = NULL, tidy_fun = broom::tidy, conf.int = TRUE, conf.level = 0.95, exponentiate = FALSE, variable_labels = NULL, term_labels = NULL, interaction_sep = " * ", categorical_terms_pattern = "{level}", add_reference_rows = TRUE, no_reference_row = NULL, intercept = FALSE, include = dplyr::everything(), significance = 1 - conf.level, significance_labels = NULL, show_p_values = TRUE, signif_stars = TRUE, return_data = FALSE, ... ) ggcoef_plot( data, x = "estimate", y = "label", exponentiate = FALSE, point_size = 2, point_stroke = 2, point_fill = "white", colour = NULL, colour_guide = TRUE, colour_lab = "", colour_labels = ggplot2::waiver(), shape = "significance", shape_values = c(16, 21), shape_guide = TRUE, shape_lab = "", errorbar = TRUE, errorbar_height = 0.1, errorbar_coloured = FALSE, stripped_rows = TRUE, strips_odd = "#11111111", strips_even = "#00000000", vline = TRUE, vline_colour = "grey50", dodged = FALSE, dodged_width = 0.8, facet_row = "var_label", facet_col = NULL, facet_labeller = "label_value" )
model |
a regression model object |
tidy_fun |
option to specify a custom tidier function |
conf.int |
should confidence intervals be computed? (see |
conf.level |
the confidence level to use for the confidence
interval if |
exponentiate |
if |
variable_labels |
a named list or a named vector of custom variable labels |
term_labels |
a named list or a named vector of custom term labels |
interaction_sep |
separator for interaction terms |
categorical_terms_pattern |
a glue pattern for
labels of categorical terms with treatment or sum contrasts
(see |
add_reference_rows |
should reference rows be added? |
no_reference_row |
variables (accepts tidyselect notation)
for those no reference row should be added, when |
intercept |
should the intercept(s) be included? |
include |
variables to include. Accepts tidyselect
syntax. Use |
significance |
level (between 0 and 1) below which a
coefficient is consider to be significantly different from 0
(or 1 if |
significance_labels |
optional vector with custom labels for significance variable |
show_p_values |
if |
signif_stars |
if |
return_data |
if |
... |
parameters passed to |
models |
named list of models |
type |
a dodged plot or a faceted plot? |
y.level_label |
an optional named vector for labeling |
data |
a data frame containing data to be plotted,
typically the output of |
x, y |
variables mapped to x and y axis |
point_size |
size of the points |
point_stroke |
thickness of the points |
point_fill |
fill colour for the points |
colour |
optional variable name to be mapped to colour aesthetic |
colour_guide |
should colour guide be displayed in the legend? |
colour_lab |
label of the colour aesthetic in the legend |
colour_labels |
labels argument passed to
|
shape |
optional variable name to be mapped to the shape aesthetic |
shape_values |
values of the different shapes to use in
|
shape_guide |
should shape guide be displayed in the legend? |
shape_lab |
label of the shape aesthetic in the legend |
errorbar |
should error bars be plotted? |
errorbar_height |
height of error bars |
errorbar_coloured |
should error bars be colored as the points? |
stripped_rows |
should stripped rows be displayed in the background? |
strips_odd |
color of the odd rows |
strips_even |
color of the even rows |
vline |
should a vertical line be drawn at 0 (or 1 if |
vline_colour |
colour of vertical line |
dodged |
should points be dodged (according to the colour aesthetic)? |
dodged_width |
width value for |
facet_row |
variable name to be used for row facets |
facet_col |
optional variable name to be used for column facets |
facet_labeller |
labeller function to be used for labeling facets;
if labels are too long, you can use |
ggcoef_model()
, ggcoef_multinom()
and ggcoef_compare()
use
broom.helpers::tidy_plus_plus()
to obtain a tibble
of the model
coefficients, apply additional data transformation and then pass the
produced tibble
to ggcoef_plot()
to generate the plot.
For more control, you can use the argument return_data = TRUE
to
get the produced tibble
, apply any transformation of your own and
then pass your customized tibble
to ggcoef_plot()
.
ggcoef_model
: Redesign of ggcoef()
based on broom.helpers::tidy_plus_plus()
.
ggcoef_compare
: Designed for displaying several models on the same plot.
ggcoef_multinom
: A variation of ggcoef_model()
adapted to multinomial logistic regressions performed with nnet::multinom()
.
ggcoef_plot
: SOME DESCRIPTION HERE
# Small function to display plots only if it's interactive p_ <- GGally::print_if_interactive if (require(broom.helpers)) { data(tips, package = "reshape") mod_simple <- lm(tip ~ day + time + total_bill, data = tips) p_(ggcoef_model(mod_simple)) # custom variable labels # you can use the labelled package to define variable labels before computing model if (require(labelled)) { tips_labelled <- tips %>% labelled::set_variable_labels( day = "Day of the week", time = "Lunch or Dinner", total_bill = "Bill's total" ) mod_labelled <- lm(tip ~ day + time + total_bill, data = tips_labelled) p_(ggcoef_model(mod_labelled)) } # you can provide custom variable labels with 'variable_labels' p_(ggcoef_model( mod_simple, variable_labels = c( day = "Week day", time = "Time (lunch or dinner ?)", total_bill = "Total of the bill" ) )) # if labels are too long, you can use 'facet_labeller' to wrap them p_(ggcoef_model( mod_simple, variable_labels = c( day = "Week day", time = "Time (lunch or dinner ?)", total_bill = "Total of the bill" ), facet_labeller = label_wrap_gen(10) )) # do not display variable facets but add colour guide p_(ggcoef_model(mod_simple, facet_row = NULL, colour_guide = TRUE)) # a logistic regression example d_titanic <- as.data.frame(Titanic) d_titanic$Survived <- factor(d_titanic$Survived, c("No", "Yes")) mod_titanic <- glm( Survived ~ Sex * Age + Class, weights = Freq, data = d_titanic, family = binomial ) # use 'exponentiate = TRUE' to get the Odds Ratio p_(ggcoef_model(mod_titanic, exponentiate = TRUE)) # display intercepts p_(ggcoef_model(mod_titanic, exponentiate = TRUE, intercept = TRUE)) # customize terms labels p_( ggcoef_model( mod_titanic, exponentiate = TRUE, show_p_values = FALSE, signif_stars = FALSE, add_reference_rows = FALSE, categorical_terms_pattern = "{level} (ref: {reference_level})", interaction_sep = " x " ) + scale_y_discrete(labels = scales::label_wrap(15)) ) # display only a subset of terms p_(ggcoef_model(mod_titanic, exponentiate = TRUE, include = c("Age", "Class"))) # do not change points' shape based on significance p_(ggcoef_model(mod_titanic, exponentiate = TRUE, significance = NULL)) # a black and white version p_(ggcoef_model( mod_titanic, exponentiate = TRUE, colour = NULL, stripped_rows = FALSE )) # show dichotomous terms on one row p_(ggcoef_model( mod_titanic, exponentiate = TRUE, no_reference_row = broom.helpers::all_dichotomous(), categorical_terms_pattern = "{ifelse(dichotomous, paste0(level, ' / ', reference_level), level)}", show_p_values = FALSE )) # works also with with polynomial terms mod_poly <- lm( tip ~ poly(total_bill, 3) + day, data = tips, ) p_(ggcoef_model(mod_poly)) # or with different type of contrasts # for sum contrasts, the value of the reference term is computed if (require(emmeans)) { mod2 <- lm( tip ~ day + time + sex, data = tips, contrasts = list(time = contr.sum, day = contr.treatment(4, base = 3)) ) p_(ggcoef_model(mod2)) } } if (require(broom.helpers)) { # Use ggcoef_compare() for comparing several models on the same plot mod1 <- lm(Fertility ~ ., data = swiss) mod2 <- step(mod1, trace = 0) mod3 <- lm(Fertility ~ Agriculture + Education * Catholic, data = swiss) models <- list("Full model" = mod1, "Simplified model" = mod2, "With interaction" = mod3) p_(ggcoef_compare(models)) p_(ggcoef_compare(models, type = "faceted")) # you can reverse the vertical position of the point by using a negative value # for dodged_width (but it will produce some warnings) ## Not run: p_(ggcoef_compare(models, dodged_width = -.9)) ## End(Not run) } # specific function for nnet::multinom models if (require(broom.helpers) && require(nnet)) { data(happy) mod <- multinom(happy ~ age + degree + sex, data = happy) p_(ggcoef_multinom(mod, exponentiate = TRUE)) p_(ggcoef_multinom(mod, type = "faceted")) p_(ggcoef_multinom( mod, type = "faceted", y.level = c( "pretty happy" = "pretty happy\n(ref: very happy)", "very happy" = "very happy" ) )) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.