[R] stepAIC invalid scope argument

Adaikalavan Ramasamy ramasamy at cancer.org.uk
Mon Aug 15 02:37:37 CEST 2005


I am trying to replicate the first example from stepAIC from the MASS
package with my own dataset but am running into error. If someone can
point where I have gone wrong, I would appreciate it very much. 

Here is an example :

 set.seed(1)
 df   <- data.frame( x1=rnorm(1000), x2=rnorm(1000), x3=rnorm(1000) )
 df$y <- 0.5*df$x1 + rnorm(1000, mean=8, sd=0.5)
 # pairs(df); head(df)

 lo  <- aov( y ~ 1, data=df )
 hi  <- aov( y ~ .^2, data=df )
 mid <- aov( y ~ x2 + x3, data=df )

Running any of the following commands

 stepAIC( mid, scope=list(upper = ~x1 + x2 + x3 , lower = ~1) )
 stepAIC( mid, scope=list(upper = hi , lower = lo) )
 addterm( mid, ~ x1 + x2 + x3 )
 addterm( lo, hi )

gives the same error message : 
  Error in eval(expr, envir, enclos) : invalid second argument

Here is a traceback of the first failed command :
 14: eval(predvars, data, env)
 13: model.frame.default(formula = y ~ x2 + x3 + x1, data = df, drop.unused.levels = TRUE)
 12: model.frame(formula = y ~ x2 + x3 + x1, data = df, drop.unused.levels = TRUE)
 11: eval(expr, envir, enclos)
 10: eval(mf, parent.frame())
 9: lm(formula = y ~ x2 + x3 + x1, data = df, method = "model.frame")
 8: eval(expr, envir, enclos)
 7: eval(fcall, env, parent.frame())
 6: model.frame.lm(fob, xlev = object$xlevels)
 5: model.frame(fob, xlev = object$xlevels)
 4: stats:::add1.lm(object, scope = scope, scale = scale)
 3: addterm.lm(fit, scope$add, scale = scale, trace = max(0, trace - 1), k = k, ...)
 2: addterm(fit, scope$add, scale = scale, trace = max(0, trace - 1), k = k, ...)
 1: stepAIC(mid, scope = list(upper = ~x1 + x2 + x3, lower = ~1))

Any pointers would be much appreciated. Thank you.

Regards, Adai




More information about the R-help mailing list