R 在我的数据集的所有列中运行回归和循环

R 在我的数据集的所有列中运行回归和循环,r,R,我正在以以下形式运行回归: reg=lm(y ~ a+b+ab,data=mydata) 在“b”的位置,我想循环遍历数据集的所有列。 例如: 第二次,我想循环遍历数据集中“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 `~`

我正在以以下形式运行回归:

reg=lm(y ~ a+b+ab,data=mydata)
在“b”的位置,我想循环遍历数据集的所有列。 例如:

第二次,我想循环遍历数据集中“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进行统计。

这将完成您的第一个循环

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)

VariablesToLoopIs
a+b+ab
表示
a+b+I(a*b)
-即-
a
乘以
b
?是的,我想测试a和b之间的交互作用reg=lm(y
~
a+b+a*b,data=mydata),我相信只要使用
y~a*b
就可以扩展到
y~a+b+a:b
,其中
a:b
是交互术语
是用于显式包含交互的字符。我建议您可能需要阅读R-e的公式规范,例如,您可能应该搜索所有回归子集,但您也应该意识到,大多数著名的统计学家都认为这是惊人的数据挖掘。但是,使用此代码,它是否保存了至少有1个有效p值的任何输出?我想将输出自动保存在外部文件中,您想具体保存什么?保存回归的输出(p值估计…)感谢我在运行脚本的第一部分(进行回归)时所做的修改,r崩溃,可能是因为回归次数(1000次回归)的缘故?我想知道问题是否在于此?如果我在开始时添加“保存”功能,是否可以解决问题?
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)
elementsToKeep<-sapply(allmodels,function(x){
pvalues<-summary(x)$coefficients[,4] 
ifelse(any(pvalues<0.05),TRUE,FALSE)
})

relevantmodels<-allmodels[elementsToKeep]
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")