-----Original Message-----
From: r-help-bounces at r-project.org
[mailto:r-help-bounces at r-project.org] On Behalf Of Harold Pimentel
Sent: Friday, December 03, 2010 11:31 PM
To: r-help at r-project.org
Subject: [R] Problem storing lm() model in a list
Hi all,
I recently wrote some code to store a number of polynomial
models in a list and return this list. The model is returned
fine, but when I make a subsequent call to predict(), I have
an error. The code for polyModel selection is listed at the
end of the email. Here is an example of the error:
poly.fit <- polyModelSelection(x,y,10,F)
for (d in 1:4) {
+ lm.model <- poly.fit$models[[d]]
+ curve(predict(lm.model,data.frame(x)),add=T,lty=d+1)
+ }
Error: variable 'poly(x, d, raw = T)' was fitted with type
"nmatrix.1" but type "nmatrix.10" was supplied
Does anyone have any ideas?
Thanks,
Harold
##############################################################
##############
polyModelSelection <- function(x,y,maxd,add.dim=F) {
dim.mult <- 0
if (add.dim) {
dim.mult = 1
}
bestD <- 1
bestError <- 1
loss <- 1
lm.models <- vector("list",maxd)
for (d in 1:maxd) {
lm.mod <- lm(y ~ 0 + poly(x,d,raw=T))
lm.models[[d]] <- lm.mod
loss[d] <- modelError(lm.mod,data.frame(x),y)+d*dim.mult
if (d == 1){
bestError <- loss[d]
}
if (loss[d] < bestError) {
bestError <- loss[d]
bestD <- d
}
# print(loss[d])
}
list(loss=loss,models=lm.models,best=c(bestD))
}
modelError <- function(model,x,y) {
sum((y-predict(model,x))^2)
}