[R] Why missing values are not allowed in 'poly'?

William Dunlap wdunlap at tibco.com
Wed Mar 23 21:29:31 CET 2016


I think the worst aspect of this restriction in poly() is that when
you use poly in the formula of a model-fitting function you cannot
have any missing values in the data, even if you supply
na.action=na.exclude.

  > d <- transform(data.frame(y=c(-1,1:10)), x=log(y))
  Warning message:
  In log(y) : NaNs produced
  > fit <- lm(y ~ poly(x, 3), data=d, na.action=na.exclude)
  Error in poly(x, 3) : missing values are not allowed in 'poly'

Thus people are pushed to using a less stable formulation like
  > fit <- lm(y ~ x + I(x^2) + I(x^3), data=d, na.action=na.exclude)


Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Wed, Mar 23, 2016 at 12:59 PM, Liviu Andronic <landronimirc at gmail.com>
wrote:

> Dear all,
> I'm a bit surprised by this behavior in poly:
>
> x <- c(NA, 1:10)
> poly(x, degree = 2, raw=TRUE)
> ## Error in poly(x, degree = 2, raw = TRUE) :
> ##   missing values are not allowed in 'poly'
> x^2
> ## [1] NA 1 4 9 16 25 36 49 64 81 100
>
> As you can see, poly() will fail if the vector contains NAs, whereas
> it is perfectly possible to obtain the square of the vector manually.
>
> Is there a reason for this limitation in poly?
>
> Regards,
> Liviu
>
>
> --
> Do you think you know what math is?
> http://www.ideasroadshow.com/issues/ian-stewart-2013-08-02
> Or what it means to be intelligent?
> http://www.ideasroadshow.com/issues/john-duncan-2013-08-30
> Think again:
> http://www.ideasroadshow.com/library
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list