我认为您可以设置您的基本模型,即具有 12 个 IV 的模型,然后add1()
与剩余的预测变量一起使用。因此,假设您mod1
定义了一个模型,例如mod1 <- lm(y ~ 0+x1+x2+x3)
(0+
表示没有截距),那么
add1(mod1, ~ .+x4+x5+x6, test="F")
将在基础模型之上添加和测试一个又一个预测变量。
更一般地说,如果您事先知道模型中应该包含一组变量(这可能是由于先验知识或其他原因),您可以使用step()
or stepAIC()
(在MASS
包中)并查看scope=
参数。
这是一个插图,我们先验地指定结果之间的函数关系,是的和预测变量,X1,X2, … ,X10. 我们希望模型包含前三个预测变量,但让其他预测变量的选择通过逐步回归完成:
set.seed(101)
X <- replicate(10, rnorm(100))
colnames(X) <- paste("x", 1:10, sep="")
y <- 1.1*X[,1] + 0.8*X[,2] - 0.7*X[,5] + 1.4*X[,6] + rnorm(100)
df <- data.frame(y=y, X)
# say this is one of the base model we think of
fm0 <- lm(y ~ 0+x1+x2+x3+x4, data=df)
# build a semi-constrained stepwise regression
fm.step <- step(fm0, scope=list(upper = ~ 0+x1+x2+x3+x4+x5+x6+x7+x8+x9+x10,
lower = ~ 0+x1+x2+x3), trace=FALSE)
summary(fm.step)
结果如下所示:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
x1 1.0831 0.1095 9.888 2.87e-16 ***
x2 0.6704 0.1026 6.533 3.17e-09 ***
x3 -0.1844 0.1183 -1.558 0.123
x6 1.6024 0.1142 14.035 < 2e-16 ***
x5 -0.6528 0.1029 -6.342 7.63e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.004 on 95 degrees of freedom
Multiple R-squared: 0.814, Adjusted R-squared: 0.8042
F-statistic: 83.17 on 5 and 95 DF, p-value: < 2.2e-16
你可以看到X3已被保留在模型中,即使它被证明是不显着的(好吧,这里适用于多元回归设置和模型选择中的单变量测试的常见警告——至少,它与是的未指定)。