Mikey
Mikey

Reputation: 11

Predictors are in random order in sjPlot using tab_model (r) (with reproducible code now)

I'm using the tab_model function in sjPlot in r. This function normally works smoothly for me, however, I noticed that the output table is oddly ordering variables in an order other than is in the lmer output.

Data at the bottom of the question.

Here is my working r code

#Packages that are currently loaded
library(lmerTest)
library(sjPlot)
library(sjlabelled)

##Run model

model <- lmer(depvar ~ predictor1*predictor2 + covariate1 + covariate2 + (1|id), data = exampledata)
summary(model)

#Make table

table <- tab_model(model)

enter image description here

enter image description here

I know that one solution is to reorder the predictors manually, however, this is not optimal, because I also want to assign labels to the predictors, and when i try to do both, the labels are assigned in the default, as opposed to manually redone, order.

Any leads on why my table is being printed in an order other than the lmer output would be most appreciated!

Thank you in advance for any ideas you might have!

Michael


Data:

exampledata <- structure(list(X = c(142L, 51L, 720L, 730L, 664L, 826L, 605L, 
587L, 216L, 75L, 862L, 928L, 935L, 972L, 724L, 840L, 506L, 771L, 
393L, 14L, 592L, 62L, 635L, 572L, 800L, 36L, 744L, 971L, 166L, 
649L, 901L, 975L, 723L, 145L, 895L, 1017L, 677L, 570L, 106L, 
451L, 1018L, 13L, 735L, 579L, 433L, 586L, 56L, 363L, 889L, 504L
), id = c(202L, 139L, 662L, 671L, 610L, 751L, 566L, 554L, 270L, 
153L, 773L, 819L, 831L, 858L, 665L, 759L, 494L, 707L, 402L, 110L, 
556L, 145L, 592L, 542L, 729L, 130L, 683L, 858L, 221L, 600L, 797L, 
862L, 665L, 204L, 793L, 889L, 624L, 541L, 175L, 453L, 889L, 110L, 
678L, 548L, 440L, 552L, 141L, 381L, 789L, 492L), predictor1 = c(1L, 
0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 
0L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 
0L), predictor2 = c(0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 
0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 
-0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 
0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 
0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, 0.5), covariate1 = c(2L, 
-1L, -1L, -1L, -1L, -1L, -1L, 2L, 2L, -1L, 2L, -1L, -1L, -1L, 
-1L, -1L, -1L, -1L, -1L, -1L, 2L, 2L, -1L, -1L, -1L, -1L, -1L, 
-1L, -1L, -1L, 2L, 2L, -1L, -1L, 2L, -1L, -1L, -1L, -1L, -1L, 
-1L, -1L, -1L, -1L, 2L, 2L, -1L, 2L, -1L, 2L), covariate2 = c(0L, 
-1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, -1L, 1L, 1L, -1L, 
-1L, 1L, 1L, -1L, 0L, 0L, 1L, -1L, 1L, -1L, -1L, 1L, 1L, -1L, 
0L, 0L, 1L, -1L, 0L, -1L, -1L, 1L, -1L, 1L, -1L, -1L, 1L, -1L, 
0L, 0L, 1L, 0L, 1L, 0L), depvar = c(25, 16.6666666666667, 66.6666666666667, 
33.3333333333333, 41.6666666666667, 0, 8.33333333333333, 25, 
83.3333333333333, 58.3333333333333, 91.6666666666667, 33.3333333333333, 
41.6666666666667, 0, 0, 41.6666666666667, 33.3333333333333, 50, 
100, 16.6666666666667, 100, 66.6666666666667, 25, 66.6666666666667, 
50, NA, 16.6666666666667, 0, 8.33333333333333, 16.6666666666667, 
75, 58.3333333333333, 0, 41.6666666666667, 50, 16.6666666666667, 
16.6666666666667, 0, 50, 50, 25, 8.33333333333333, 41.6666666666667, 
41.6666666666667, 41.6666666666667, 50, 66.6666666666667, 58.3333333333333, 
50, 50)), row.names = c(NA, -50L), class = "data.frame")

Upvotes: 1

Views: 954

Answers (1)

Axeman
Axeman

Reputation: 35397

Underlying problem is not sjPlot, but rather parameters::model_parameters. This is what is used under the hood and gives the odd ordering:

parameters::model_parameters(model)
Parameter               | Coefficient |   SE |           95% CI |     t |    df |      p
----------------------------------------------------------------------------------------
(Intercept)             |       41.08 | 3.82 | [ 33.59,  48.58] | 10.75 | 42.14 | < .001
predictor1              |        3.62 | 2.72 | [ -1.72,   8.95] |  1.33 |  2.78 | > .1  
predictor1 * predictor2 |       -2.60 | 5.46 | [-13.31,   8.11] | -0.48 |  2.74 | > .1  
covariate1              |        8.85 | 2.67 | [  3.62,  14.09] |  3.31 | 41.15 | < .001
predictor2              |       -5.78 | 7.68 | [-20.84,   9.28] | -0.75 | 41.27 | > .1  
covariate2              |        1.39 | 4.34 | [ -7.13,   9.90] |  0.32 | 40.89 | > .1

This misordering happens somewhere in the bowels of parameters (specifically in parameters:::.extract_parameters_mixed). My guess is that it is a bug. An issue could be filed on Github.

Upvotes: 0

Related Questions