[R-sig-ME] Analysing data with an ordinal response

Christian Brauner christianvanbrauner at gmail.com
Sat Aug 30 14:54:32 CEST 2014


Hello,

I've posted yesterday investigating about random effects in proportional
odds cummulative mixed effects model; specifically about clmm() from the
ordinal package. I was doing some more reading about categorical data
analysis (e.g. Agresti (2010): Analysis of Ordinal Categorical Data).
Additionally to analysing data with an ordinal response with the help
aforementioned models it seems some people suggest e.g. to use the glmer()
function from lme4 to fit a whole range of models.

The data:
---------
My data looks as follows:
(1) ordinal response: a five point scale with 1<2<3<4<5 (1 being worst, 3
being neutral, 5 being best)
(2) one single categorical predictor "type" with 5 levels
(3) subjects as random effects term which I would specify in lme4 syntax:
(type | subjects) with intercept and slope for every subject.

Every subject saw 320 items (40 for level 1, 40 for level 2, 40 for level
3, 160 for level 4) and rated every single one of them. The dataset seems
quite nice and as it only contains a single predictor is very good to get
acquainted with categorical data analysis. So as I pointed out yesterday
in my mail
(https://stat.ethz.ch/pipermail/r-sig-mixed-models/2014q3/022582.html) I
used proportional odds cummulative mixed effects models which seems a good
choice.

Alternative methods to proportional odds mixed effects models that can
also acount for random effects and for which R packages exist?:
----------------------------------------------------------------------
However, I was wondering if there are alternative ways of analysing such
data apart from treating the response as a continuous variable and using
lmer() or aov(). And if there are any recommendation or advice people can
give here. This is mainly because I'm somewhat uncomfortable with using
MCMCglmm when I'm not doing a full-blown Bayesian analysis and I'm not
sure about clmm() in the ordinal package when it does state in its
reference manual that vector valued random effects cannot be fit. I can
see me having a hard time explaining this to publishers.

Fitting multiple glmer()'s to subsets of the orginal data?
----------------------------------------------------------
Here is an alternative I read about (I think on Stackoverflow by Ben). One
could split a dataset with an ordinal response into subsets that each only
contain two levels of the ordinal response. There are some questions I
have about this. How would you split that dataset into subsets given a 5
point ordinal response?  (Does subset A with levels 1 and 2, subset B with
levels 2 and 3, subset C with levels 3 and 4, subset D with levels 4 and 5
seems like a good choice because of the ordering?) I tried this with the
wine data set from the ordinal package. But this will ungraciously fail
because of convergence failures, model unidentifiability etc. (I'm using
lme4 1.1.8). Here is the wine example:

library(ordinal) # because of the wine dataset
library(lme4)
sub12 <- wine$rating %in% grep("[1-2]", wine$rating, value = TRUE)
sub12 <- subset(wine, subset = sub)
sub12$rating <- factor(sub12$rating, ordered = FALSE)
glmer12 <- glmer(rating ~ temp + contact + (temp | judge),
                 data = sub12,
                 family = binomial)

# Substituting (1 | judge) for (temp | judge) won't make it better

# Will give no warning
glm12 <- glm(rating ~ temp + contact,
             data = sub12,
             family = binomial)

sub23 <- wine$rating %in% grep("[2-3]", wine$rating, value = TRUE)
sub23 <- subset(wine, subset = sub)
sub23$rating <- factor(sub23$rating, ordered = FALSE)

glmer23 <- glmer(rating ~ temp + contact + (temp | judge),
                 data = sub23,
                 family = binomial)

sub34 <- wine$rating %in% grep("[3-4]", wine$rating, value = TRUE)
sub34 <- subset(wine, subset = sub)
sub34$rating <- factor(sub34$rating, ordered = FALSE)
glmer34 <- glmer(rating ~ temp + contact + (temp | judge),
                 data = sub34,
                 family = binomial)

Of course the wine dataset is rather tiny and mine won't but how likely am
I to run in similar problem if I analyse ordinal data this way?

Best,
Christian



More information about the R-sig-mixed-models mailing list