# [R] ordinal predictor in anova

Vincent Staszewski vincent.staszewski at ed.ac.uk
Wed Apr 13 12:36:49 CEST 2011

```   Hi,

I have a dataset with a continuous response variable and, among
other predictors, an ordinal variable.

Here is what it could look like

treatment <- factor(rep(c("AA", "AC", "AD","AE", "AB"), each = 10))

length <- c(75, 67, 70, 75, 65, 71, 67, 67, 76, 68,
57, 58, 60, 59, 62, 60, 60, 57, 59, 61,
58, 61, 56, 58, 57, 56, 61, 60, 57, 58,
58, 59, 58, 61, 57, 56, 58, 57, 57, 59,
62, 66, 65, 63, 64, 62, 65, 65, 62, 67)

This ordinal variable (treatment) contains 5 classes and can not be
recoded as a numerical variable (for example 1, 2,3,4 and 5) because I
have no information on the relative difference between classes (it
could as well be 1, 24, 25, 50,55). Coding it simply as a categorical
variable is also not ok because there is a hierarchy between the
groups. This is the definition of ordinal variable.

I have defined the ordinal variable (the order is from a priori prediction)

#NOW DEFINING THE ORDERED VARIABLE:
sugars\$treatment_ordered<-ordered(sugars\$treatment,c("AA", "AB","AC",

The problem is that when I run the ANOVA or perform model
comparison, R is giving me the same results if I use either
"treatment" as a predictor in the model or "treatment_ordered".

anova(lm(length ~ treatment_ordered, sugars));anova(lm(length ~
treatment, sugars))

I've thought about using planned contrasts but I do not manage to
would it be
(-1,0.25,0.25,0.25,0.25)&(-0.5,-0.5,0.33,0.33,0.33)&...

OR
(AA<AB)&(AB,AC)&...
(-1,1,0,0,0)&(0,-1,1,0,0)&...

and anyway you can only test one matrix at a time.

To make thinks a bit more complicated, I also have another factor,
categorical variable and I'd like to test the interaction with the
ordinal factor (of course sample sizes are higher in the "real"
dataset):

treatment <- factor(rep(c("AA", "AC", "AD","AE", "AB"), each = 10))

length <- c(75, 67, 70, 75, 65, 71, 67, 67, 76, 68,
57, 58, 60, 59, 62, 60, 60, 57, 59, 61,
58, 61, 56, 58, 57, 56, 61, 60, 57, 58,
58, 59, 58, 61, 57, 56, 58, 57, 57, 59,
62, 66, 65, 63, 64, 62, 65, 65, 62, 67)
treatment2 <- c("BA", "BA", "BB", "BB", "BC", "BC", "BD", "BD", "BE", "BE",
"BA", "BA", "BB", "BB", "BC", "BC", "BD", "BD", "BE", "BE",
"BA", "BA", "BB", "BB", "BC", "BC", "BD", "BD", "BE", "BE",
"BA", "BA", "BB", "BB", "BC", "BC", "BD", "BD", "BE", "BE",
"BA", "BA", "BB", "BB", "BC", "BC", "BD", "BD", "BE", "BE")

sugars <- data.frame(treatment, length,treatment2)

sugars\$treatment_ordered<-ordered(sugars\$treatment,c("AA", "AB","AC",

anova(lm(length ~
treatment_ordered+treatment2+treatment_ordered:treatment2, sugars))

Any suggestions?

Thanks,

V.

--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.

----- End forwarded message -----

--
Vincent STASZEWSKI
Institute of Infection and Immunology Research
Ashworth Laboratories
Kings' Buildings
EH9 3JT
Edinburgh
Scotland, UK
Tel: 0044(0)131 650 8682
webpage: http://reece.bio.ed.ac.uk/vincent-staszewski.html

--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.

```