假设我有一个包含多个变量的表,a
- h
,其中h
是目标/y/预测变量:
a <- rnorm(10,5,1)
b <- rnorm(10,5,1)
c <- rnorm(10,5,1)
d <- rnorm(10,5,1)
e <- rnorm(10,5,1)
f <- rnorm(10,5,1)
g <- rnorm(10,5,1)
h <- rnorm(10,5,1)
df = data.frame(a,b,c,d,e,f,g,h)
我想运行AIC确定预测 h
的最佳模型。为此,我需要运行 df[1:7] 的每个组合。所以我需要以下 AIC:
lm(fomula= h ~ a+b+c+d+e+f+g)
lm(fomula= h ~ a+b+c+d+e+f)
lm(fomula= h ~ a+b+c+d+e)
以及变量的所有其他配置。请问有什么办法可以做到这一点吗?
为了获得我尝试过的变量的所有可能的公式:
library(combinat)
combn(colnames(df[,1:7]))
但是,我只得到:
[1] "a" "b" "c" "d" "e" "f" "g"
上述代码的输出与我最终想要的相去甚远。
最佳答案
使用step
函数。这应该给你最好的模型:
step(lm(h~., df),direction = 'both', trace = 0)
Call:
lm(formula = h ~ b + e + f, data = df)
Coefficients:
(Intercept) b e f
4.3494 -0.8705 -0.3266 1.2877
此模型具有最低的AIC
。您可以更改 trace = 1
,以查看运行的中间模型
关于r - 如何在 R 模型中生成变量的所有可能组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74493903/