[R] na.action in predict.lm
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Jan 9 18:25:44 CET 2002
On Wed, 9 Jan 2002, Andrea Peters wrote:
>
> I would like to predict a matrix containing missing values according to a
> fitted linear model.
> The predicted values must have the same length as the number of
> observations in newdata, where missing predicted values (due to missing
> explanatory values) are replaced by NA. How can I achieve this? I tried
> the following example:
>
> > x <- matrix(rnorm(100), ncol=10)
> > beta <- rep(1, 10)
> > y <- x%*%beta + rnorm(10)
> >
> > options(na.action="na.exclude")
> > mod <- lm(y ~ . - 1, data=as.data.frame(x))
> >
> > x[5,5] <- NA
> > x <- as.data.frame(x)
> > predict(mod, newdata=x)
> 1 2 3 4 6 7
> -0.6161748 1.3659464 -3.2987223 1.2891959 2.1753231 -3.9714629
> 8 9 10
> -0.8349864 2.1076517 -2.3992661
>
>
> The desired output would look like:
> 1 2 3 4 5 6 7
> -0.6161748 1.3659464 -3.2987223 1.2891959 NA 2.1753231 -3.9714629
> 8 9 10
> -0.8349864 2.1076517 -2.3992661
>
>
> I already read the help pages of na.action, options, napredict etc., but
> I couldn't figure out how to solve this problem.
na.exclude only works with the existing dataset (from which the data were
fitted). So this is OK:
> x <- matrix(rnorm(100), ncol=10)
> beta <- rep(1, 10)
> y <- x%*%beta + rnorm(10)
> y <- x%*%beta + rnorm(10)
> x[5,5] <- NA
> mod <- lm(y ~ . - 1, data=as.data.frame(x), na.action="na.exclude")
> predict(mod)
1 2 3 4 5 6
0.6629695 0.4075846 -2.9255085 -1.8214493 NA -0.3774940
7 8 9 10
-10.5488613 3.8361323 0.8803932 -3.8637141
If you want to predict for a new x containing missing values, do
xn <- as.data.frame(matrix(rnorm(100), ncol=10))
xn[5,5] <- NA
pred <- rep(NA, nrow(xn)); names(pred) <- row.names(xn)
xnn <- na.omit(xn)
pred[-attr(xnn, "na.action")] <- predict(mod, xnn)
pred
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list