wake-up-neo.net

schrittweise Regression

In der schrittweisen Vorwärtsregression von R gebe ich ein Minimalmodell und eine Reihe von Variablen an, die hinzugefügt werden müssen (oder nicht hinzugefügt werden sollen):

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

Gibt es eine Möglichkeit, alle Variablen in einem Matrix/data.frame anzugeben, so dass ich sie nicht auflisten muss?

Beispiele zur Veranschaulichung, was ich gerne machen würde, aber sie funktionieren nicht:

# 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

scope erwartet (zitiert die Hilfeseite ?step)

entweder eine einzelne Formel oder eine Liste mit Komponenten „obere“ und „untere“, beide Formeln. Siehe die Details dazu, wie Sie die Formeln angeben und wie sie sind gebraucht.

Sie können die Formel entsprechend "~" extrahieren und verwenden. so was:

> 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

Sie können es in einem Schritt so tun

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

1
shiny