Getting ggthemes to work with marginal effects plots

bayesplot

#1

I’m trying to plot the marginal_effects using a different theme than the default. In the example below I use theme_stata (my preferred theme) but I’ve also tried it with other themes. According to the help for the function marginal_effects I should be able to use a ggthemes theme. Anyone know what might be going on? I’ve included a reproducible example below.

data = read.csv("https://tinyurl.com/y9uct2c5",header = TRUE)
fit = brm(Neuroticism ~ Age + Gender, data=data)

#This doesn’t change the theme.
marginal_effects(fit, theme=ggthemes::theme_stata())

#This doesn’t work either
marginal_effects(fit, theme=theme_stata())
marginal_effects(fit, theme=ggthemes::theme_stata)
marginal_effects(fit, theme=theme_stata)

#This throws an error.
theme_set(ggthemes::theme_stata())

Warning message:
New theme missing the following elements: axis.title.x.top, axis.title.y.right, axis.text.x.top, axis.text.y.right, axis.line.x, axis.line.y, legend.margin, legend.spacing.x, legend.spacing.y, legend.box.margin, legend.box.background, legend.box.spacing, panel.spacing.x, panel.spacing.y, panel.ontop, plot.subtitle, plot.caption, strip.placement, strip.switch.pad.grid, strip.switch.pad.wrap

  • Operating System: Windows 10
  • brms Version: 2.3.0
  • ggthemes Version: 3.5.0

#2

You could try the package ggeffects, which also supports brms-models, e.g.:

p <- purrr::map(
       c("Age", "Gender"),
       ~  ggeffects::ggpredict(fit, .x) %>% plot() + theme_stata()
     )
p

p1

p2


#3

theme is an argument of the plot method of marginal_effects not of marginal_effects itself (see ?marginal_effects for details). In your case, go for

plot(marginal_effects(fit), theme=theme_stata())

#4

Thanks, that’s perfect! This toy data set actually has a lot of heteroscedasticity, when you see the plot. Looks like a good opportunity to toy around with the asymmetric laplace family