[R] Using model operator in stepwise function's upper scope formula

Prof Brian Ripley ripley at stats.ox.ac.uk
Tue Oct 5 08:45:48 CEST 2004


`.' 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




More information about the R-help mailing list