web-dev-qa-db-fra.com

régression pas à pas

Dans la régression progressive pas à pas, je spécifie un modèle minimal et un ensemble de variables à ajouter (ou à ne pas ajouter):

min.model = lm(y ~ 1)
fwd.model = step(min.model, direction='forward', scope=(~ x1 + x2 + x3 + ...))

Existe-t-il un moyen de spécifier l'utilisation de toutes les variables dans une matrice/data.frame, afin que je n'ai pas à les énumérer?

Exemples illustrant ce que j'aimerais faire, mais ils ne fonctionnent pas:

# 1
fwd.model = step(min.model, direction='forward', scope=(~ ., data=my.data.frame))

# 2
min.model = lm(y ~ 1, data=my.data.frame)
fwd.model = step(min.model, direction='forward', scope=(~ .))
13
Michael Schubert

scope s'attend (en citant la page d'aide ?step)

soit une formule unique, soit une liste contenant composants «supérieur» et «inférieur», les deux formules. Voir le détails pour savoir comment spécifier les formules et comment elles sont utilisé.

Vous pouvez extraire et utiliser la formule correspondant à "~". comme ça:

> my.data.frame=data.frame(y=rnorm(20),foo=rnorm(20),bar=rnorm(20),baz=rnorm(20))
> min.model = lm(y ~ 1, data=my.data.frame)
> biggest <- formula(lm(y~.,my.data.frame))
> biggest
y ~ foo + bar + baz
> fwd.model = step(min.model, direction='forward', scope=biggest)
Start:  AIC=0.48
y ~ 1

       Df Sum of Sq    RSS      AIC
+ baz   1    2.5178 16.015 -0.44421
<none>              18.533  0.47614
+ foo   1    1.3187 17.214  0.99993
+ bar   1    0.4573 18.075  1.97644

Step:  AIC=-0.44
y ~ baz

       Df Sum of Sq    RSS      AIC
<none>              16.015 -0.44421
+ foo   1   0.41200 15.603  1.03454
+ bar   1   0.20599 15.809  1.29688
> 
18
Stephan Kolassa