在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=(~ .))
答案 0 :(得分:18)
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
>
答案 1 :(得分:1)
你可以像这样一步完成
fwd.model = step(lm(y ~ 1, data=my.data.frame), direction='forward', scope=~ x1 + x2 + x3 + ...)