1

I would like to manually sort the coefficients in a coefplot. Previous questions only achieve ordering by (decreased) magnitude, which is not what I want.

Consider the below example:

library(coefplot)
data(tips, package = "reshape2")
mod1 <- lm(tip ~ day + sex + smoker + sex * smoker, data = tips)
coefplot.glm(mod1)

How would I achieve a coefficient order with sexMale:smokerYes on top and daySat, dayThu, daySun (and then the rest) without relying on their magnitude?

Thanks in advance for pointing me to a solution. :)

Ivo
  • 3,890
  • 5
  • 22
  • 53

1 Answers1

3

Because coefplot.glm() is outputting a ggplot object, you can access the data object and re-level the y factor:

Create ggplot object

library(coefplot)
data(tips, package = "reshape2")
mod1 <- lm(tip ~ day + sex + smoker + sex * smoker, data = tips)
gg <- coefplot.glm(mod1)
gg

enter image description here

Re-level y factor

gg$data$Coefficient <- factor(gg$data$Coefficient, levels = rev(c("sexMale:smokerYes", "daySat", "dayThur", "daySun", "smokerYes", "sexMale", "(Intercept)")))
gg

enter image description here

the-mad-statter
  • 5,650
  • 1
  • 10
  • 20