ONKELINX, Thierry <Thierry.ONKELINX <at> inbo.be> writes: > This solutions works with R 2.7.0 under windows > > library(MASS) > library(nlme) > PredRes <- function(cal, val){ > cal <<- cal > lmemod <- lme(distance ~ age * Sex, random = ~1|Subject, data = cal, > method="ML") > themod <- stepAIC(lmemod, dir="both", trace = FALSE) > prs <- predict(themod, newdata = val) > obs <- val$distance > print(mean(obs - prs)) > } > > PredRes(cal = subset(Orthodont, age!=14), val = subset(Orthodont, > age==14)) > obs<-subset(Orthodont,age==14)$distance > > print(mean(obs-prs))
That's a workaround, but it effectively makes cal global, and so should be considered not so nice programming practice. The problem is an environment problem in stepAIC, and I am sure Brian Ripley will tell us what's wrong... 10: inherits(x, "data.frame") 9: is.data.frame(data) 8: lme.formula(fixed = distance ~ age + Sex, data = D1, random = ~1 | Subject, subset = age != 14, method = "ML") 7: eval(expr, envir, enclos) 6: eval(expr, p) 5: eval.parent(nfit) 4: dropterm.default(fit, scope$drop, scale = scale, trace = max(0, trace - 1), k = k, ...) 3: dropterm(fit, scope$drop, scale = scale, trace = max(0, trace - 1), k = k, ...) 2: stepAIC(lmemod, dir = "both") 1: PredRes(Orthodont) R version 2.8.0 Under development (unstable) (2008-05-03 r45596) i386-pc-mingw32 locale: LC_COLLATE=German_Germany.1252;LC_CTYPE=German_Germany.1252; LC_MONETARY=German_Germany.1252;LC_NUMERIC=C;LC_TIME=German_Germany.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] nlme_3.1-88 MASS_7.2-42 loaded via a namespace (and not attached): [1] grid_2.8.0 lattice_0.17-7 tools_2.8.0 > Dieter ______________________________________________ R-help@r-project.org mailing list 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.