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:
> 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
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