如何编写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
答案 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 (仅用于构建公式)