没有起源的多元回归以及使用 R 直接输入和逐步输入的变量的混合

机器算法验证 r 逐步回归
2022-03-31 22:35:30

我正在运行一个回归方程,我想输入 12 个独立变量,然后逐步输入另外 7 个独立变量并且没有原点。

  • DV是shfl

  • 我想输入以下 12 个独立的虚拟变量 ajan bfeb cmar dapr emay fjun gjul haug isep joct knov ldec

  • 然后我想逐步进入 slag6 slag7 slag8 slag9 slag10 slag11 slag12

  • 最后,我希望没有起源。

我已经完成了简单的回归,但没有什么比这更能输入主变量和 step 的变量了。

  • 如何使用 R 指定这样的模型?
1个回答

我认为您可以设置您的基本模型,即具有 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已被保留在模型中,即使它被证明是不显着的(好吧,这里适用于多元回归设置和模型选择中的单变量测试的常见警告——至少,它与是的未指定)。