Подтвердить что ты не робот

Ступенчатая регрессия

В R ступенчатой ​​регрессии, я указываю минимальную модель и набор переменных для добавления (или не добавлять):

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

Можно ли указать использование всех переменных в матрице /data.frame, поэтому мне не нужно их перечислять?

Примеры для иллюстрации того, что я хотел бы сделать, но они не работают:

# 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=(~ .))
4b9b3361

Ответ 1

scope ожидает (цитирование страницы справки ?step)

либо одну формулу, либо список, содержащий           компоненты "верхняя" и "нижняя", обе формулы. См.           подробности о том, как указать формулы и как они           б.

Вы можете извлечь и использовать формулу, соответствующую "~." например:

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

Ответ 2

Вы можете сделать это за один шаг, подобный этому

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