循环回归:创建交互项,存储结果,仅提取重要的项

时间:2019-02-15 09:53:27

标签: r loops regression interaction

我有一个数据集

auto <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Auto.csv")

我试图在其中查找任何重要的交互作用术语。我想要仅包含单个交互及其构成项的回归(即,气缸+加速度+气缸:加速度是我要检查的回归)。

到目前为止,使用其他Stackoverflow问题,我已经能够提出以下建议:

results <- NULL
vars=colnames(auto)[-c(1,9)]
for(i in vars){
for(j in vars){
if(i ! = j){
factor=paste(i,j,sep='*')}
for(k in 1:20){
results[[k]]<-summary(lm(paste("mpg~", factor), data=auto)))
}}}

但是,这会连续生成一个列表,其中仅存储了其中的最后一次交互(即,原产地系数*年)。如果代码不只执行唯一值,也不执行条款的平方版本,我也可以。但是,由于它们中的两个(列表中的最后两个,原点和年份)不值得平方,并且由于我不知道如何为i和j设置单独的长度并使之起作用,所以我省略了

我应该怎么做才能从此循环中获得想要的结果?我应该以不同的方式去做吗?我还尝试创建所有交互,然后将其添加到数据框并在其中循环运行,但这似乎没有任何效率/可能性。

1 个答案:

答案 0 :(得分:0)

您的k循环除了将结果存储到长度为20的列表中外没有其他作用,所有值都将相同,并且剩下的是{{ 1}}。我将预先计算组合,为每个组合创建一个列表,然后将其馈入单个循环。

请注意,R附带了一个i*j数据集。

mtcars