【问题标题】:Multiple minimal models in R forward stepwise regressionR前向逐步回归中的多个最小模型
【发布时间】:2021-12-08 12:19:15
【问题描述】:

在 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))

“lower”,进入“scope”,不允许列表,但应该是一个唯一的公式。有可能做我需要的吗?

【问题讨论】:

    标签: r regression


    【解决方案1】:

    要在逐步前向回归中指定几个最小模型,请创建最小的公式,例如,lapply,然后循环遍历它们。
    在下面的示例中,内置数据集 mtcars 用于拟合多个以 mpg 作为响应的模型,数据集中最后三个变量各一个。

    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)]]
    

    【讨论】:

    • 感谢您的回答!您的示例适用于数据 mtcar。如果我尝试使用自己的数据,使用 lower = "Q ~LE6h" 我收到以下错误:factor.scope(ffac, list(add = fadd, drop = fdrop)) 中的错误:lower scope has term 'LE_6h' not包含在模型中。它不适用于任何“LE_X”变量,但它适用于“Q_minus_1h”变量。你知道它可能是什么吗?
    • 我明白了!函数步骤的第一个参数(适合您的示例)应该与所要求的最小模型一致。非常感谢!
    • @Chika 是的,就是这样,mpg ~ . 是一个公式,mpg 作为响应,所有其他变量(点 .)作为回归量。这是拟合的模型,然后循环将 step 下降到 smallest
    猜你喜欢
    • 2014-05-19
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多