Chris Ruehlemann
Chris Ruehlemann

Reputation: 21432

Plot random effects into mixed-effects plot created with sjPlot

I'm plotting a mixed-effects model m_0 using plot_model (data below):

library(lme4)
library(sjPlot)

m_0 <- glmer(Preselected_0 ~ Shift_Altnt_Ratio_Q + (Shift_Altnt_Ratio_Q | File / Person_anon), family = "binomial", 
                    data = df)
summary(m_0)
plot_model(m_0, type = "eff", terms = c("Shift_Altnt_Ratio_Q"), ci.lvl = .68, line.size = 1.2,
           title = ""
)

There are two issues with the resulting plot:

(i) the x-axis does not extend to 1, which it should

(ii) the random effects (Person_anon nested in File) are not plotted as individual lines

enter image description here

What I am looking for is shown in this graph (obtained from very convoluted base R code), where the thin grey lines represent the random effects:

enter image description here

The thin grey lines are added using this for loop:

for (i in seq(nrow(ranef(m_0)[[1]]))) {
  lines(seq(0, 1, 0.05),
        # -----> Fixed effects intercept, read off of summary
        plogis(-2.0987 + ranef(m_0)[[1]][i,1] + 
                 # ---------------> Fixed effects slope, read off of summary
                 (seq(0, 1, 0.05)*(12.9791 +ranef(m_0)[[1]][i,2])) 
        ),
        col=rgb(0,0,0,70,maxColorValue=255))
}

How can the two issue be fixed for the sjPlot plot, especially how can the random effects be added to it?

Data:

df <- structure(list(Shift_Altnt_Ratio_Q = c(0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.333333333333333, 
0, 0.333333333333333, 0, 0.25, 0.333333333333333, 0, 0, 0, 0, 
0.25, 0, 0, 0, 0.333333333333333, 0, 0, 0, 0, 0, 0.4, 0.4, 0, 
0, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.333333333333333, 
0, 0, 0, 0, 0, 0.2, 0, 0.333333333333333, 0, 0.2, 0.333333333333333, 
0, 0, 0.428571428571429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0.444444444444444, 0.333333333333333, 0, 0, 0, 0, 0, 0, 
0, 0.333333333333333, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 0, 0.4, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0.25, 0, 0.333333333333333, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.272727272727273, 
0, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0.4, 0, 0.4, 0.333333333333333, 
0.333333333333333, 0.4, 0, 0.333333333333333, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.222222222222222, 0, 0, 
0, 0, 0.333333333333333, 0, 0, 0, 0, 0, 0, 0.375, 0.454545454545455, 
0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 
0, 0, 0, 0, 0, 0.333333333333333, 0.333333333333333, 0, 0, 0.4, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.333333333333333, 
0, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0.571428571428571), Preselected_0 = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 
1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 
2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 
2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 
1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 
2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L), levels = c("YES", 
"NO"), class = "factor"), File = c("F01", "F01", "F01", "F01", 
"F01", "F01", "F01", "F01", "F01", "F01", "F01", "F01", "F01", 
"F01", "F01", "F01", "F01", "F01", "F01", "F01", "F01", "F01", 
"F01", "F01", "F01", "F01", "F04", "F04", "F04", "F04", "F04", 
"F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", 
"F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", 
"F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", 
"F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", 
"F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", 
"F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", "F04", 
"F04", "F04", "F04", "F04", "F04", "F07", "F07", "F07", "F07", 
"F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", 
"F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", 
"F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", 
"F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", 
"F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", "F07", 
"F07", "F07", "F07", "F07", "F08", "F08", "F08", "F08", "F08", 
"F08", "F08", "F08", "F08", "F08", "F08", "F08", "F08", "F08", 
"F08", "F08", "F08", "F08", "F08", "F08", "F08", "F08", "F08", 
"F08", "F08", "F08", "F08", "F08", "F08", "F08", "F08", "F08", 
"F08", "F08", "F08", "F08", "F08", "F08", "F08", "F12", "F12", 
"F12", "F12", "F12", "F12", "F12", "F12", "F12", "F12", "F12", 
"F12", "F12", "F12", "F12", "F12", "F12", "F12", "F12", "F12", 
"F12", "F12", "F12", "F12", "F12", "F12", "F12", "F12", "F16", 
"F16", "F16", "F16", "F16", "F16", "F16", "F16", "F16", "F16", 
"F16", "F16", "F16", "F16", "F16", "F16", "F16", "F16", "F16", 
"F18", "F18", "F18", "F18", "F18", "F18", "F18", "F18", "F18", 
"F18", "F18", "F18", "F18", "F18", "F18", "F18", "F18", "F18", 
"F18", "F18", "F18", "F18", "F18", "F20", "F20", "F20", "F20", 
"F20", "F20", "F20", "F20", "F20", "F20", "F20", "F20", "F20", 
"F20", "F20", "F20", "F20", "F20", "F20", "F22", "F22", "F22", 
"F22", "F22", "F22", "F22", "F22", "F22", "F22", "F23", "F23", 
"F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", 
"F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", 
"F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", 
"F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", "F23", 
"F23", "F19", "F19", "F19", "F19", "F19", "F19", "F19", "F19", 
"F19", "F19", "F19", "F16"), Person_anon = c("GGGGGGGGGGGGGGGl", 
"IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "IIIIIIIIIIIIt", 
"IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "GGGGGGGGGGGGGGGl", "IIIIIIIIIIIIt", 
"IIIIIIIIIIIIt", "KKKKKKKKKKr", "IIIIIIIIIIIIt", "KKKKKKKKKKr", 
"IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "GGGGGGGGGGGGGGGl", 
"IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "KKKKKKKKKKr", "IIIIIIIIIIIIt", 
"IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "IIIIIIIIIIIIt", "IIIIIIIIIIIIt", 
"IIIIIIIIIIIIt", "DDDDDDDDDDDDe", "AAAAAAAAAAAAAn", "DDDDDDDDDDDDe", 
"DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "CCCCCCCCCCx", "CCCCCCCCCCx", 
"DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"DDDDDDDDDDDDe", "AAAAAAAAAAAAAn", "DDDDDDDDDDDDe", "CCCCCCCCCCx", 
"CCCCCCCCCCx", "CCCCCCCCCCx", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"AAAAAAAAAAAAAn", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "AAAAAAAAAAAAAn", 
"DDDDDDDDDDDDe", "CCCCCCCCCCx", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "CCCCCCCCCCx", "DDDDDDDDDDDDe", 
"AAAAAAAAAAAAAn", "CCCCCCCCCCx", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "CCCCCCCCCCx", "CCCCCCCCCCx", 
"CCCCCCCCCCx", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"CCCCCCCCCCx", "DDDDDDDDDDDDe", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"CCCCCCCCCCx", "AAAAAAAAAAAAAn", "CCCCCCCCCCx", "DDDDDDDDDDDDe", 
"CCCCCCCCCCx", "DDDDDDDDDDDDe", "CCCCCCCCCCx", "DDDDDDDDDDDDe", 
"CCCCCCCCCCx", "LLLLLLLLLLLLLn", "LLLLLLLLLLLLLn", "LLLLLLLLLLLLLn", 
"CCCCCCCCCCx", "LLLLLLLLLLLLLn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"AAAAAAAAAAAAAn", "LLLLLLLLLLLLLn", "LLLLLLLLLLLLLn", "AAAAAAAAAAAAAn", 
"AAAAAAAAAAAAAn", "CCCCCCCCCCx", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"AAAAAAAAAAAAAn", "CCCCCCCCCCx", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"AAAAAAAAAAAAAn", "CCCCCCCCCCx", "AAAAAAAAAAAAAn", "LLLLLLLLLLLLLn", 
"LLLLLLLLLLLLLn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "LLLLLLLLLLLLLn", 
"AAAAAAAAAAAAAn", "CCCCCCCCCCx", "CCCCCCCCCCx", "CCCCCCCCCCx", 
"AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "CCCCCCCCCCx", 
"AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"CCCCCCCCCCx", "CCCCCCCCCCx", "LLLLLLLLLLLLLn", "AAAAAAAAAAAAAn", 
"CCCCCCCCCCx", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", "AAAAAAAAAAAAAn", 
"AAAAAAAAAAAAAn", "LLLLLLLLLLLLLn", "LLLLLLLLLLLLLo", "LLLLLLLLLLLLLo", 
"LLLLLLLLLLLLLn", "LLLLLLLLLLLLLn", "LLLLLLLLLLLLLo", "NNNNNNNNNNNr", 
"NNNNNNNNNNNr", "LLLLLLLLLLLLLn", "LLLLLLLLLLLLLn", "NNNNNNNNNNNr", 
"NNNNNNNNNNNr", "NNNNNNNNNNNr", "NNNNNNNNNNNr", "NNNNNNNNNNNr", 
"LLLLLLLLLLLLLo", "LLLLLLLLLLLLLo", "NNNNNNNNNNNr", "LLLLLLLLLLLLLo", 
"NNNNNNNNNNNr", "NNNNNNNNNNNr", "NNNNNNNNNNNr", "NNNNNNNNNNNr", 
"NNNNNNNNNNNr", "LLLLLLLLLLLLLn", "LLLLLLLLLLLLLn", "NNNNNNNNNNNr", 
"LLLLLLLLLLLLLo", "LLLLLLLLLLLLLo", "LLLLLLLLLLLLLo", "LLLLLLLLLLLLLn", 
"LLLLLLLLLLLLLo", "NNNNNNNNNNNr", "NNNNNNNNNNNr", "LLLLLLLLLLLLLn", 
"LLLLLLLLLLLLLn", "NNNNNNNNNNNr", "LLLLLLLLLLLLLn", "NNNNNNNNNNNr", 
"NNNNNNNNNNNr", "LLLLLLLLLLLLLo", "LLLLLLLLLLLLLo", "CCCCCCCCCCx", 
"LLLLLLLLLLLLLo", "DDDDDDDDDDDDe", "CCCCCCCCCCx", "LLLLLLLLLLLLLo", 
"LLLLLLLLLLLLLo", "LLLLLLLLLLLLLo", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"DDDDDDDDDDDDe", "CCCCCCCCCCx", "DDDDDDDDDDDDe", "CCCCCCCCCCx", 
"CCCCCCCCCCx", "CCCCCCCCCCx", "CCCCCCCCCCx", "DDDDDDDDDDDDe", 
"CCCCCCCCCCx", "CCCCCCCCCCx", "DDDDDDDDDDDDe", "DDDDDDDDDDDDe", 
"DDDDDDDDDDDDe", "DDDDDDDDDDDDe", "LLLLLLLLLLLLLo", "DDDDDDDDDDDDe", 
"DDDDDDDDDDDDe", "CCCCCCCCCCx", "CCCCCCCCCCx", "AAAAAAAAAAo", 
"AAAAAAAAAAo", "AAAAAAAAAAo", "AAAAAAAAAAo", "AAAAAAAAAAo", "AAAAAAAAAAo", 
"CCCCCCCCCCx", "CCCCCCCCCCCCCCx", "AAAAAAAAAAo", "AAAAAAAAAAo", 
"AAAAAAAAAAo", "AAAAAAAAAAo", "AAAAAAAAAAo", "AAAAAAAAAAo", "CCCCCCCCCCCCCCx", 
"AAAAAAAAAAo", "CCCCCCCCCCCCCCx", "SSSSSSSSSSd", "SSSSSSSSSSd", 
"GGGGGGGGGGGGGi", "SSSSSSSSSSd", "SSSSSSSSSSd", "AAAAAAAAAAo", 
"SSSSSSSSSSd", "SSSSSSSSSSd", "AAAAAAAAAAo", "SSSSSSSSSSd", "AAAAAAAAAAo", 
"SSSSSSSSSSd", "SSSSSSSSSSd", "SSSSSSSSSSd", "AAAAAAAAAAo", "SSSSSSSSSSd", 
"GGGGGGGGGGGGGi", "GGGGGGGGGGGGGi", "GGGGGGGGGGGGGi", "GGGGGGGGGGGGGi", 
"GGGGGGGGGGGGGi", "GGGGGGGGGGGGGi", "SSSSSSSSSSd", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"JJJJJJJJJJJJy", "JJJJJJJJJJJJy", "JJJJJJJJJJJJy", "JJJJJJJJJJJJJJJJJJd", 
"JJJJJJJJJJJJJJJJJJd", "JJJJJJJJJJJJJJJJJJd", "JJJJJJJJJJJJy", 
"JJJJJJJJJJJJJJJJJJd", "JJJJJJJJJJJJy", "JJJJJJJJJJJJy", "LLLLLLLLLLn", 
"CCCCCCCCCCCCd", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", 
"CCCCCCCCCCCCd", "OOOOOOOOOOOOm", "OOOOOOOOOOOOm", "LLLLLLLLLLn", 
"CCCCCCCCCCCCd", "OOOOOOOOOOOOm", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", 
"LLLLLLLLLLn", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", 
"LLLLLLLLLLn", "LLLLLLLLLLn", "LLLLLLLLLLn", "OOOOOOOOOOOOm", 
"CCCCCCCCCCCCd", "LLLLLLLLLLn", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", 
"OOOOOOOOOOOOm", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", 
"CCCCCCCCCCCCd", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", "CCCCCCCCCCCCd", 
"CCCCCCCCCCCCd", "LLLLLLLLLLn", "LLLLLLLLLLn", "LLLLLLLLLLn", 
"LLLLLLLLLLn", "OOOOOOOOOOOOm", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", "LLLLLLLLLLLLLLLLLLLl", 
"AAAAAAAAAAo")), row.names = c(NA, -332L), class = c("tbl_df", 
"tbl", "data.frame"))

Upvotes: 1

Views: 118

Answers (1)

Thomson Harris
Thomson Harris

Reputation: 13

Not sure how to add the random effects to the plot but this code will extend the extent of the x-axis to 1.

    plot_model(m_0, type = "eff", terms = c("Shift_Altnt_Ratio_Q"), ci.lvl = .68, line.size = 1.2,
           title = "") + xlim(0, 1)

Upvotes: 0

Related Questions