繁体   English   中英

R前向逐步回归中的多个最小模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM