From russell-lenth at uiowa.edu  Fri May 16 00:55:18 2008
From: russell-lenth at uiowa.edu (russell-lenth at uiowa.edu)
Date: Fri, 16 May 2008 00:55:18 +0200 (CEST)
Subject: [Rd] Bug in poly() (PR#11243)
Message-ID: <20080515225518.57EA92834170@mail.pubhealth.ku.dk>

I don't understand why this is a bug in usage.  Is it because the 2nd 
argument is not named?  I get the same behavior if I do name it:

=====
[R version 2.6.2 (2008-02-08), Windows XP Pro]

R> x = rep(1:4,3)
R> y = (1:12)^1.5
R> lm(y ~ poly(x, degree=10))

Call:
lm(formula = y ~ poly(x, degree = 10))

Coefficients:
            (Intercept)   poly(x, degree = 10)1   poly(x, degree = 10)2
               18.39370                14.21385                 0.58588
  poly(x, degree = 10)3   poly(x, degree = 10)4   poly(x, degree = 10)5
               -0.01770                 3.34767               -11.46388
  poly(x, degree = 10)6   poly(x, degree = 10)7   poly(x, degree = 10)8
                0.51178                 0.44296                12.47199
  poly(x, degree = 10)9  poly(x, degree = 10)10
              -28.38972                18.47439
=====

Is there a case where we *would* want a 10th degree polynomial fitted to 
only 4 distinct x values?  A simple modification [changing 'length(x)' 
to 'length(unique(x))' in 2 places] seems to fix this:

=====
R> mypoly
    ...
     if (raw) {
         if (degree >= length(unique(x)))
             stop("'degree' must be less than number of points")
    ...
     if (is.null(coefs)) {
         if (degree >= length(unique(x)))
             stop("'degree' must be less than number of points")
    ...

R> lm(y ~ mypoly(x, degree=10))
Error in mypoly(x, degree = 10) :
   'degree' must be less than number of points
=====

Russ
-- 
Russell V. Lenth, Professor
Department of Statistics
   & Actuarial Science            (319)335-0814    FAX (319)335-3017
The University of Iowa           russell-lenth at uiowa.edu
Iowa City, IA 52242  USA         http://www.stat.uiowa.edu/~rlenth/



[Rd] Bug in poly() (PR#11243)
russell-lenth at uiowa.edu