【问题标题】:Get all models from leaps regsubsets从 jumps regsubsets 中获取所有模型
【发布时间】:2017-04-21 09:57:46
【问题描述】:

我使用 regsubsets 来搜索模型。是否可以从参数选择列表中自动创建所有lm

library(leaps)
leaps<-regsubsets(y ~ x1 + x2 + x3, data, nbest=1, method="exhaustive")
summary(leaps)$which
  (Intercept)      x1        x2    x3                                                                                   
1        TRUE   FALSE     FALSE  TRUE                                                                                   
2        TRUE   FALSE      TRUE  TRUE                                                                                   
3        TRUE    TRUE      TRUE  TRUE                                                                                   

现在我会手动执行model_1 &lt;- lm(y ~ x3) 等等。如何自动将它们列在列表中?

【问题讨论】:

    标签: r regression linear-regression lm


    【解决方案1】:

    我不知道您为什么想要所有型号的列表。 summarycoef 方法应该可以很好地为您服务。不过我会先从纯编程的角度回答你的问题,然后再回到这一点。


    一个简单的方法是通过reformulate

    reformulate(termlabels, response = NULL, intercept = TRUE)
    

    方法如下:

    ## you are masking `leaps` and `data` function!!
    leaps <- regsubsets(y ~ x1 + x2 + x3, data, nbest = 1, method = "exhaustive")
    X <- summary(leaps)$which
    
    xvars <- dimnames(X)[[2]][-1]  ## column names (all covariates except intercept)
    responsevar <- "y"  ## name of response
    
    lst <- vector("list", dim(X)[1])  ## set up an empty model list
    
    ## loop through all rows / model specifications
    for (i in 1:dim(X)[1]) {
      id <- X[i, ]
      form <- reformulate(xvars[which(id[-1])], responsevar, id[1])
      lst[[i]] <- lm(form, data)
      }
    

    不需要*apply 解决方案。 lm 开销很大,所以 for 循环根本没有开销。


    一种更快的方法是建立一个包含所有协变量的模型矩阵,并动态选择它的列(使用模型矩阵的assign 属性;当您有因子变量时尤其如此)。然后通过.lm.fit 进行模型拟合。但是,除非您是线性模型专家,否则您将难以使用 .lm.fit 的原始输出生成模型摘要/预测,但我认为 summary(leaps) 应该已经为您返回各种有用的统计数据。

    leaps:::coef.regsubsets 函数是这个.lm.fit 路由的等价物。只需这样做:

    coef(leaps, 1:dim(X)[1], TRUE)
    

    您将获得所有模型的系数和方差-协方差矩阵。

    【讨论】:

    • 问题是交互项......在模型中没有明确作为变量名
    • 很好,有没有办法获得所有模型的所有 regsubsets 的 MSE?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多