# Why CLMM function for ordinal mixed logistic regression changes the means?

I am using CLMM to run the ordinal mixed logistic regression model as the DV is ordinal number from 1 to 9 (rating scale). First I read the file and change the DV into ordinal using these commands:

> data1.frame <- read.delim("happy.txt", fileEncoding="UTF-16")
> data1.frame$response <- ordered(data1.frame$response)


Then I run CLMM function:

> mm1 <- clmm (response ~ group + (1|listeners),data=data1.frame)


And because I have three groups and I would like to see all pair contrasts, I run Tukey's pairwise comparison:

> lsmeans(mm1, pairwise~group, adjust="tukey")
$lsmeans group lsmean SE df asymp.LCL asymp.UCL english -0.63348352 0.4555165 NA -1.526388 0.2594206 L2 -0.01566743 0.4424304 NA -0.882920 0.8515852 thai -0.39563590 0.4546666 NA -1.286874 0.4956022 Confidence level used: 0.95$contrasts
contrast         estimate        SE df   z.ratio p.value
english - L2   -0.6178161 0.1564433 NA -3.949137  0.0002
english - thai -0.2378476 0.1873555 NA -1.269499  0.4125
L2 - thai       0.3799685 0.1538963 NA  2.468991  0.0362

P value adjustment: tukey method for a family of 3 means


However, as you can see, in the 'lsmean' column, the mean of each group change into minus zero instead of something from 1 to 9. My question is: is this common when I change the DV from 1 to 9 into ordinal numbers?

If yes, it seems like when plotting the graph, I have to use the actual means of each group, rather than relying on the means provided by this pairwise comparison.

The default output from lsmeans is on the latent-variable scale -- a bit hard to explain but one way to think of it is that the common model involves a linear predictor for the logit of the cumulative probabilities, and the latent value is the average of that linear prediction of each grid value across cut points.

If you want the predicted average class number on the 1-9 scale, it's easy to get:

lsmeans(..., mode = "mean.class")


For more details, see ? models with lsmeans loaded.

• Hi rvl, I have used this command 'lsmeans(mm1, pairwise~group, adjust="tukey", mode = "mean.class")' as suggested, but get this message: ''Error in match.arg(mode) : 'arg' should be one of “latent”, “linear.predictor”, “cum.prob”, “prob”" Commented Jul 28, 2015 at 7:29
• You have an old version of lsmeans. Update it. Commented Jul 28, 2015 at 13:05
• Yeah!!! It works this time after updating. Thank you so so much rvl. You have made my day! Commented Jul 29, 2015 at 7:24
• I'm a little late to the party, but my question is very similar regarding mode = "mean.class". My ordinal scale ranges from 1 to 9, but my estimates are way too large i.e. 15.5. Is this due to having repeated measures in my model (4 per subject)? How do I get these estimates to conform to the scale $[1,9]$? Commented Dec 3, 2020 at 2:35
• This doesn't seem possible; in any case it shouldn't be. Can you send me (emmeans maintainer) a dataset where this happens, along woth the code you. used? I'd prefer a relatively small example if at all possible, and minimal code without tidyverse stuff and other bells/whistles. Commented Dec 3, 2020 at 3:54