[R] polynomial contrasts in R

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Fri Jan 17 12:25:06 CET 2003

ripley at stats.ox.ac.uk writes:

> I don't think you are describing contrasts for an ordered factor, but 
> orthogonal polynomials in a numeric variable.  The latter are computed by 
> the function poly() in both R and S-PLUS.  You could set them up to give a 
> contrasts matrix if you want, but not a contrasts function (as that is 
> only passed the number of levels, AFAIR).

[Pet peeve] However, contr.poly *also* treats the factor as a numeric
variable, it just assumes that the levels are equidistant. What other
sense would a (say) linear term make? Helmert contrasts (if they are
useful anywhere...) or successive differences would have been more
relevant for ordered factors, but for some reason S-PLUS chose
differently and R has kept the same convention for ordered factors
although we did depart from S-PLUS's use of Helmert contrasts for
unordered factors.

Contrast functions are called with "..." it seems, but not the object
itself, so if a factor has numeric levels, you could potentially have
something like

f.p <- C(f, contr.xpoly, x=as.numeric(levels(f)))

but you do need the extra argument and it is hardly better than

x <- as.numeric(levels(f))
f.p <- C(f, poly(x, degree=length(x)-1))

   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907

More information about the R-help mailing list