我正在以下列形式进行回归:
reg=lm(y ~ a+b+ab,data=mydata)
在“b”的位置,我想循环遍历数据集的所有列。 示例:
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作为统计数据。
答案 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")