[英]Multiple minimal models in R forward stepwise regression
在 R 逐步前向回归中,我想指定几个最小模型。 我正在寻找在 12 个变量(6 个流量变量 Q_ 和 6 个降水变量 LE_)之间进行选择的最佳模型。
最大模型考虑了所有变量:
formule <- "Q ~ 0 + Q_minus_1h + Q_minus_2h + Q_minus_3h + Q_minus_4h + Q_minus_5h + Q_minus_6h + LE_6h + LE_12h + LE_18h + LE_24h + LE_30h + LE_36h"
biggest <- formula(lm(formule, Sub_fit))
使用 Sub_fit 我的数据集(带有 Q 和我的 12 个变量的数据框)。
我想在我的模型中至少有一个变量“LE_XX”。 所以我的最小模型可能是:
formule <- "Q ~ 0 + LE_6h"
smallest <- formula(lm(formule, Sub_fit))
或者
formule <- "Q ~ 0 + LE_12h"
smallest <- formula(lm(formule, Sub_fit))
或者...
formule <- "Q ~ 0 + LE_36h"
smallest <- formula(lm(formule, Sub_fit))
最后:
modele.res <- step(lm(as.formula("Q ~ 0"),data=Sub_fit), direction='forward', scope=list(lower=smallest, upper=biggest))
“更低”,“范围”,不允许列表,但应该是一个唯一的公式。 有可能做我需要的吗?
要在逐步前向回归中指定多个最小模型,请使用例如lapply
创建最小公式,然后循环遍历它们。
在下面的示例中,内置数据集mtcars
用于拟合多个以mpg
作为响应的模型,数据集中的最后 3 个变量中的每一个都有一个。
data(mtcars)
biggest <- mpg ~ .
sml <- names(mtcars)[9:11]
small_list <- lapply(sml, function(x) {
fmla <- paste("mpg", x, sep = "~")
as.formula(fmla)
})
names(small_list) <- sml
fit <- lm(mpg ~ ., mtcars)
fit_list <- lapply(small_list, function(smallest){
step(fit, scope = list(lower = smallest, upper = biggest))
})
现在选择以 AIC 作为标准
min_aic <- sapply(fit_list, AIC)
min_aic
# am gear carb
#154.1194 155.9852 154.5631
fit_list[[which.min(min_aic)]]
StepReg R 包中的逐步函数可以在逐步回归期间在所有模型中包含一些您想要的变量。
library(StepReg)
f1 <- Q ~ 0 + Q_minus_1h + Q_minus_2h + Q_minus_3h + Q_minus_4h + Q_minus_5h + Q_minus_6h + LE_6h + LE_12h + LE_18h + LE_24h + LE_30h + LE_36h
## include LE_6h in the model
stepwise(formula=f1,
data=yourdata,
include="LE_6h",
selection="forward",
select="AIC")
## include LE_6h and LE_12h in the model
stepwise(formula=f1,
data=yourdata,
include=c("LE_6h","LE_12h"),
selection="forward",
select="AIC")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.