自动预测模型拟合,基于附件数据框选择变量

时间:2019-05-10 20:12:09

标签: r linear-regression

如何编写FOR循环(或其他函数)以重新拟合线性模型?

我正在使用R包的飞跃对多个线性回归模型进行详尽的搜索。包会返回某些拟合统计量的向量(即BIC和r平方)。但是,我想为模型的一个子集(〜100)生成一些其他拟合标准(即CCC)。我不想使用人工拟合模型的子集,而是希望利用跨越提供的data.frame对预测的多个线性模型进行自动拟合。

我有两个要使用的data.frame:1)数据(响应+所有解释变量)和2)一个data.frame,描述每个模型中哪些变量。第二个data.frame具有布尔(TRUE / FALSE)指示符,用于指示每个解释变量(列)是否已包含在线性模型(行)中。下面是该data.frame的表示。

     (Intercept)    var1  var2 var3   
X5          TRUE    TRUE FALSE FALSE 
X6          TRUE    TRUE FALSE FALSE 
X7.2        TRUE    TRUE FALSE FALSE 
X7.4        TRUE    TRUE FALSE FALSE 
X8.2        TRUE    TRUE FALSE  TRUE

1 个答案:

答案 0 :(得分:0)

lapply列中动态考虑布尔数据框构建公式中的TRUE。请确保将响应调整为以下字符串中的实际变量。

model_list <- lapply(1:nrow(bool_df), function(i) {    
    tmp <- as.vector(bool_df[i,-1])
    eq <- paste("response ~ ", 
                paste(names(tmp)[tmp == TRUE], collapse=" + "))

    lm(as.formula(eq), data_df)
})

Rextester demo (仅用于构建公式)