运行回归并遍历我的数据集的所有列

时间:2016-03-08 00:00:14

标签: r

我正在以下列形式进行回归:

reg=lm(y ~ a+b+ab,data=mydata)

在“b”的位置,我想循环遍历数据集的所有列。 示例:

data

reg=lm(y `~` a+b+ab,data=mydata)
reg=lm(y `~` a+c+ac,data=mydata)

第二次,我想循环遍历数据集的所有列,包括“a”和“b”。
示例:

reg=lm(y `~` a+b+ab,data=mydata)
reg=lm(y `~` a+c+ac,data=mydata)
reg=lm(y `~` b+c+bc,data=mydata)
reg=lm(y `~` c+d+cd,data=mydata)
reg=lm(y `~` e+c+ec,data=mydata).....all possibilities

最后,我想保存任何至少有1个重要p值的输出。 我使用R作为统计数据。

1 个答案:

答案 0 :(得分:0)

这应该是你的第一个循环

lapply(setdiff(names(mydata),c("y","a")),function(x){
lm(paste0("y~a*",x),mydata)
})

这应该做第二次

VariablesToLoop<-expand.grid(setdiff(names(mydata),"y"),setdiff(names(mydata),"y"),stringsAsFactors = FALSE)
VariablesToLoop<-VariablesToLoop[!VariablesToLoop$Var1==VariablesToLoop$Var2,]
Map(function(name1,name2){
lm(paste0("y~",name1,"*",name2),mydata)
},VariablesToLoop$Var1,VariablesToLoop$Var2)

假设所有模型结果都保存在元素 allmodels 中,只需运行:

elementsToKeep<-sapply(allmodels,function(x){
pvalues<-summary(x)$coefficients[,4] 
ifelse(any(pvalues<0.05),TRUE,FALSE)
})

relevantmodels<-allmodels[elementsToKeep]

将相关模型保存在 relatedmodels

然后为了保存:

relevant.pvalues<-lapply(relevantmodels,function(x){
summary(x)$coefficients[,4] 
})

df <- data.frame(matrix(unlist(relevant.pvalues), nrow=length(relevant.pvalues),byrow=T))

write.csv(df,file="pvalues.csv")