How to use ordinal logistic regression with random effects? In my study I will be measuring workload with several metrics. With heart-rate variability (HRV), electrodermal activity (EDA) and with a subjective scale (IWS). After normalization the IWS has three values:


*

*Workload lower than normal

*Workload is average

*Workload is higher than normal.


I want to see how well the physiological measures can predict subjective workload.
Therefore I want to use ratio data to predict ordinal values. According to: How do I run Ordinal Logistic Regression analysis in R with both numerical / categorical values? this is easily done by using the MASS:polr function. 
However, I also want to account for random effects such as between-subject differences, gender, smoking etc. Looking at this tutorial, I don't see how I can add random effects to MASS:polr. Alternatively lme4:glmer would then be an option, but this function only allows the prediction of binary data. 
Is it possible to add random effects to an ordinal logistic regression?
 A: Yes, it is possible to include random effects in an ordinal regression model.  Conceptually, this is the same as including random effects in a linear mixed model.  Although the UCLA site only demonstrates the polr() function in the MASS package, there are a number of facilities for fitting ordinal models in R.  There is a broader (but less detailed) overview here.  The only way I know of to include random effects in R uses the ordinal package, though.  I work through an example here: Is there a two-way Friedman's test?
A: In principle you can make the machinery of any logistic mixed model software perform ordinal logistic regression by expanding the ordinal response variable into a series of binary contrasts between successive levels (e.g. see Dobson and Barnett Introduction to Generalized Linear Models section 8.4.6). However, this is a pain, and luckily there are a few options in R:


*

*the ordinal package, via the clmm and clmm2 functions (clmm = Cumulative Link Mixed Model)

*the mixor package, via the mixor function

*the MCMCglmm package, via family="ordinal" (see ?MCMCglmm)

*the brms package, e.g. via family="cumulative" (see ?brmsfamily)


The latter two options are implemented within Bayesian MCMC frameworks.  As far as I know, all of the functions quoted (with the exception of ordinal::clmm2) can handle multiple random effects (intercepts, slopes, etc.); most of them (maybe not MCMCglmm?) can handle choices of link function (logit, probit, etc.).
(If I have time I will come back and revise this answer with a worked example of setting up ordinal models from scratch using lme4)
