Yu Shao
2004-Oct-04 23:39 UTC
[R] Using model operator in stepwise function's upper scope formula
Hello: I am doing forward stepwise analysis on the glm model. I am trying to use model operator in the "upper" scope formula, for example, scope=list(lower=~1,upper=~ .^2) but the upper bound of the scope seems to be ignored and add1 is not performed at all, while if the terms are explicitly listed in the formula, the step function seems to work properly. Example:> versionplatform sparc-sun-solaris2.9 arch sparc os solaris2.9 system sparc, solaris2.9 status major 1 minor 9.0 year 2004 month 04 day 12 language R> testdataeffect fa1 fa2 fa3 1 0.5054526 -1.4 1 -15.42 2 0.1366526 -2.5 3 -14.72 3 0.4798526 -1.1 3 -16.43 4 0.5566526 -4.6 2 -17.62 5 0.6568526 -3.5 7 -5.41 6 0.6653526 0.0 5 -11.88 7 0.6376526 0.0 5 -11.72 8 0.5203526 -2.9 -1 -14.72 9 0.4905526 -2.1 2 -17.68 10 0.6376526 -1.1 1 -13.39> step (glm(effect ~ 1 , data=testdata), scope=list(lower=~1,upper=~.),direction='forward') Start: AIC= -5.89 effect ~ 1 Call: glm(formula = effect ~ 1, data = testdata) Coefficients: (Intercept) 0.5287 Degrees of Freedom: 9 Total (i.e. Null); 9 Residual Null Deviance: 0.2178 Residual Deviance: 0.2178 AIC: -5.89 =============================================================== But if I listed the term explicitly in the formula, then step function seemed to work correctly:> step (glm(effect ~ 1 , data=testdata),scope=list(lower=~1,upper=~fa1+fa2+fa3), direction='forward') Start: AIC= -5.89 effect ~ 1 Df Deviance AIC + fa3 1 0.1778 -5.9188 <none> 0.2178 -5.8901 + fa2 1 0.2023 -4.6271 + fa1 1 0.2065 -4.4194 Step: AIC= -5.92 effect ~ fa3 Df Deviance AIC <none> 0.1778 -5.9188 + fa1 1 0.1698 -4.3783 + fa2 1 0.1770 -3.9605 Call: glm(formula = effect ~ fa3, data = testdata) Coefficients: (Intercept) fa3 0.78310 0.01830 Degrees of Freedom: 9 Total (i.e. Null); 8 Residual Null Deviance: 0.2178 Residual Deviance: 0.1778 AIC: -5.919 =============================================================== I've lookup the online manual of step function but couldn't find a solution. Thanks in advance, Yu Shao Wadsworth Center, New York State Department of Health, Albany, NY 12208
Prof Brian Ripley
2004-Oct-05 06:45 UTC
[R] Using model operator in stepwise function's upper scope formula
`.' means `what is already there'. In your case, .^2 is 1^2 which is 1, so it behaves correctly. Only in a *fit* involving a *data* argument does `.' mean `the rest of the variables'. On Mon, 4 Oct 2004, Yu Shao wrote:> Hello: > > I am doing forward stepwise analysis on the glm model. I am trying to use model > operator in the "upper" scope formula, for example, > > scope=list(lower=~1,upper=~ .^2) > > but the upper bound of the scope seems to be ignored and add1 is not performed > at all, while if the terms are explicitly listed in the formula, the step > function seems to work properly. Example: > > > version > platform sparc-sun-solaris2.9 > arch sparc > os solaris2.9 > system sparc, solaris2.9 > status > major 1 > minor 9.0 > year 2004 > month 04 > day 12 > language R > > > testdata > effect fa1 fa2 fa3 > 1 0.5054526 -1.4 1 -15.42 > 2 0.1366526 -2.5 3 -14.72 > 3 0.4798526 -1.1 3 -16.43 > 4 0.5566526 -4.6 2 -17.62 > 5 0.6568526 -3.5 7 -5.41 > 6 0.6653526 0.0 5 -11.88 > 7 0.6376526 0.0 5 -11.72 > 8 0.5203526 -2.9 -1 -14.72 > 9 0.4905526 -2.1 2 -17.68 > 10 0.6376526 -1.1 1 -13.39 > > > step (glm(effect ~ 1 , data=testdata), scope=list(lower=~1,upper=~.), > direction='forward') > Start: AIC= -5.89 > effect ~ 1 > > > Call: glm(formula = effect ~ 1, data = testdata) > > Coefficients: > (Intercept) > 0.5287 > > Degrees of Freedom: 9 Total (i.e. Null); 9 Residual > Null Deviance: 0.2178 > Residual Deviance: 0.2178 AIC: -5.89 > > ===============================================================> > But if I listed the term explicitly in the formula, then step function seemed to > work correctly: > > > step (glm(effect ~ 1 , data=testdata), > scope=list(lower=~1,upper=~fa1+fa2+fa3), direction='forward') > Start: AIC= -5.89 > effect ~ 1 > > Df Deviance AIC > + fa3 1 0.1778 -5.9188 > <none> 0.2178 -5.8901 > + fa2 1 0.2023 -4.6271 > + fa1 1 0.2065 -4.4194 > > Step: AIC= -5.92 > effect ~ fa3 > > Df Deviance AIC > <none> 0.1778 -5.9188 > + fa1 1 0.1698 -4.3783 > + fa2 1 0.1770 -3.9605 > > Call: glm(formula = effect ~ fa3, data = testdata) > > Coefficients: > (Intercept) fa3 > 0.78310 0.01830 > > Degrees of Freedom: 9 Total (i.e. Null); 8 Residual > Null Deviance: 0.2178 > Residual Deviance: 0.1778 AIC: -5.919 > ===============================================================> > I've lookup the online manual of step function but couldn't find a solution. > Thanks in advance, > > Yu Shao > Wadsworth Center, New York State Department of Health, > Albany, NY 12208 > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > >-- 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 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595