【问题标题】:Loop function to add large numbers of predictors in regression function在回归函数中添加大量预测变量的循环函数
【发布时间】:2015-10-07 05:56:49
【问题描述】:

我想改进在回归函数中插入预测变量的方式:

fm <- lm(formula= df$dependent_variable ~ df[,2] + df[,3]+ df[,4], data = df)

df = data.frame

在这个例子中,我只放了 4 个预测变量和 1 个从属变量。实际上我有 191 个预测变量。我想我需要一个循环脚本来放置所有这些预测器。 有什么建议吗?

【问题讨论】:

  • 看起来你需要一个循环。但是,你的问题不清楚。如果您需要使用单个公式运行,请考虑 lm(dependent_variable~., data=df), probably paste` 或 formula 也是需要的。
  • 可能我不清楚,抱歉。我想要的是得到一个等效于的公式: lm(formula= df$dependent_variable ~ df[,2] + df[,3]+...+ df[,n], data = df) where n=191 I不明白你的意思..
  • 你试过我评论的那个吗,它应该可以工作,即lm(dependent_variable~., data=df)
  • 或将reformulate与预测变量的索引一起使用,即lm(reformulate(names(df)[2:ncol(df)], response='dependent_variable'), df)
  • 好的,现在我明白了.. 即使 summary() 没有给我预期的结果,这两个系统都可以工作。几乎所有都是NA。我必须检查我的数据框..

标签: r loops regression


【解决方案1】:

这是一种可能的解决方案:

yname<-"DVnamehere"
xnames<-colnames(dat)
xnames<-xnames[-which(xnames==yname)]
formula<-as.formula(paste(yname,"~",paste(xnames,collapse="+")))
model<-lm(formula,data=dat)
summary(model)

虽然这不是一个循环,但它只需要您指定因变量的名称,并使用数据集中的其余变量作为预测变量,然后将所有内容放入回归公式。这有帮助吗?

【讨论】:

  • 是的,这项工作也给我带来了与其他选项相同的问题。
  • 看看你的数据框的维度,对于两个少数参与者来说,你肯定有太多的预测变量。尽管我们正在远离编程问题,但拇指的基本作用是每个预测器至少有 5 个参与者。因此,在您的情况下,191x5=955 名参与者,这是一个非常保守的估计。事实上,你可能想要的不止这些。我建议要么消除预测变量,要么进行因子分析以减少预测变量的数量。另外,如果答案有帮助,请投票/接受。谢谢!
  • 所以如果我理解得很好,与观察结果相比,我有太多的预测因素。所以这是回归方法的一个限制,而不是 R 编程问题。
  • 没错,我猜如果您在任何其他统计软件中运行此数据,您会遇到类似的问题。感谢您接受答案,如果对您有帮助,请点赞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多