Home > Back-end >  Estimated averages of a glmm by the emmeans package
Estimated averages of a glmm by the emmeans package

Time:06-07

I am trying to plot the estimated means using a negative binomial random effects model with their respective confidence intervals, in which the data and the fit were defined as follows:

d.AD <- data.frame(treatment = gl(12,12),
                   treatment2 = gl(4,1,36),
                   counts = rpois(144, 4.03),
                   treatment3 = gl(3,4,36),
                   ID = gl(12,12))
d.AD$treatment2 = as.integer(d.AD$treatment2)
d.AD$treatment3 = as.factor(d.AD$treatment3)
d.AD$ID = as.factor(d.AD$ID)

library(ggplot2)
library(lme4)
library(emmeans)

mode1A <- glmer.nb(counts~treatment3 poly(treatment2, 2)   (1|ID), 
                   data=d.AD, verbose=F)

The function to make the averages with the confidence intervals used was the emmeans of the emmeans package. However, see that the shape of the graph is inverted, that is, I would like the x axis to be my y axis and vice versa.

emm1 = emmeans(mode1A,~"treatment3", type="response")
emm1df = as.data.frame(emm1)
plot(emm1)  
  geom_point(size=2.2) 
  labs(x = 'Response', y = 'Treatment')    
  scale_shape_manual(NULL, values = 18)  
  theme(legend.title = element_text(size = 25,color = "black"),
        legend.text = element_text(size = 25,color = "black"),
        axis.title = element_text(size = 25,color = "black"),
        axis.text.x = element_text(color = "black", hjust=1),
        axis.text.y = element_text(color = "black", hjust=1),
        axis.text = element_text(size = 25,color = "black"),
        plot.title = element_blank(),
        strip.text.x = element_text(size = 15,color = "black"))

enter image description here

I would like something close to this example.

enter image description here

CodePudding user response:

You could do something like:

emm1df |>
  ggplot(aes(x     = treatment3,
             y     = response,
             label = round(response,2)
             )
         )  
  geom_point(size = 2)  
  geom_errorbar(aes(ymin = asymp.LCL,
                    ymax = asymp.UCL),
                width = 0
                )  
  geom_label(nudge_y = (emm1df$asymp.UCL-emm1df$response)*1.2)  
  ylim(c(3,5))  
  labs(x = "Treatment",
       y = "Response")

Example

CodePudding user response:

Try

plot(emm1, horizontal = FALSE)

See `? plot.emmGrid

  • Related