[R] nlme errors ?

Ramon Diaz-Uriarte rdiazuri at students.wisc.edu
Wed Jul 5 18:09:52 CEST 2000

Just in case these plotting functions are of help to anybody, here they go. I
wrote them a while ago, and use them routinely as diagnostics for linear mixed
effects models (most of them follow ideas in ch. 4 of Pinheiro & Bates's
"Mixed-effects models in S and S-Plus").  I know they are not very well
written and there is a lot of room for improvement (in fact, I never intended
for them to be seen by anybody but me, and thus being sloppy didn't
have to embarrass me...); for instance, the data set needs to be attached for
the plots to work, some of them don't work if you have missing values, and 
the par settings are changed; these are all easy to fix (but I am lazy...).



lme.plot1 <- function(fit, resid="p",...){
### resids by fitted, qqnorm of resids, observed by fitted
  xx <- attributes(terms.formula(fit$call[[2]]))$variables[[2]]
  par(ask = TRUE)
  plot( resid(fit,type = resid) ~ fitted(fit), xlab="Fitted values", las=1)
  qqnorm(resid(fit,type = resid), las=1)
  plot( eval(xx) ~ fitted(fit), ylab = deparse(xx), xlab = "Fitted values", las = 1)
  qqnorm( ranef(fit, level = length(attributes(ranef(fit))$grpNames)), main = "Random effects")
  par(ask = FALSE)


lme.plot2 <- function(fit, resid="p", jit.am = 0){
###to plot residuals vs. levels of predictors
  zz <- attributes(terms.formula(fit$call[[2]]))$variables
  ## print("there are a bunch of plots, keep pressing")
  ## print(c("to see all; total number of plots are ",(length(zz) - 2) ))
  par(ask = TRUE)
  par(las = 1)
  for (i in 1:(length(zz) - 2)) {
    plot( resid(fit,type = resid) ~ jitter(as.numeric(eval(zz[[i + 2]])), amount=jit.am), xlab = deparse(zz[[i + 2]]))
    abline(h = 0, lty = 2)
  par(ask = FALSE)

lme.plot3 <- function(fit, resid = "p",...){
### to plot residuals vs. fitted for each level of the predictors with coplot
  zz <- attributes(terms.formula(fit$call[[2]]))$variables
  par(ask = TRUE)
  par(las = 1)
  for (i in 1:(length(zz) - 2)) coplot(resid(fit,type = resid) ~ fitted(fit)|eval(zz[[i+2]]), xlab=deparse(zz[[i + 2]]), ...)
  par(ask = FALSE)


Ramón Díaz-Uriarte
Dept. Zoology and Statistics
University of Wisconsin-Madison
Madison, WI 53706-1381

email: rdiazuri at students.wisc.edu
(NOTE: starting 15-July-2000 new email:
ramon-diaz at teleline.es)
phone: 608-238-8041
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