2013-11-03 95 views
0

我有一个响应变量,我试图找到一种方法来拟合使用1664个不同的解释变量的多元线性回归模型。我对R相当陌生,并且通过使用公式中的每个解释变量陈述公式来教导如何做到这一点。但是,因为我有1664个变量,所以要花很长时间才能完成。有没有更快的方法来做到这一点?如何拟合1664个解释变量的多元线性回归模型R

谢谢!

+0

我不知道我知道你的意思,但我可能会写一个脚本来生成我的代码或把它们放到一个数组并在其上循环。 – duffymo

+1

你只是指'lm(response〜。,data = your_data)'?这是在SO上的其他地方评论的捷径。 –

+0

这创建了一个包含1664个解释变量的线性模型,我猜R^2非常接近1;)。 –

回答

3

我想你想从1664个变量中选择一个有效的模型,即一个能够用很少的解释变量尽可能多地预测数据变化的模型。有几种方法可以做到这一点:

  • 使用专家知识选择已知相关的变量。这可能是由于其他研究发现这一点,或者是由于您现在使这个变量相关的某个基础过程所致。
  • 使用某种逐步回归方法来选择变量是基于他们如何很好地解释数据。请注意,这种方法有一些严重的缺点。查看stepAIC,了解使用Aikaike信息标准进行此操作的方法。

如果您选择纯粹基于随机性的95%显着性水平(0.05 * 1664),将1664个变量与数据相关将产生83个显着相关性。所以,请谨慎使用自动变量选择。用专家知识或一些解相关技术(例如主成分分析)减少变量的数量将会有所帮助。

对于代码示例,您首先需要包含您可以构建的自己的(数据+代码)示例。

+4

Lasso/Ridge/Elastic Net呢?但是我们真的在CrossValidated地区... –

+1

+1 for @ AriB.Friedman的评论:请参阅'glmnet'软件包。 –

+0

问题是我不确定哪些变量是相关的。这样做的目的是基本上减少与相关的变量,从而表明它们对响应变量具有某种形式的重要性。我会尝试先做逐步回归的方法,然后看看我在做线性回归之前得到了什么,谢谢! – user2062207

2

我会回答编程问题,但要注意的是,经常有多个变量的回归可能会使用某种变量选择过程(例如@ PaulHiemstra的建议)。

  1. 您可以构建一个data.frame只与您要运行的变量,然后用公式快捷键:form <- y ~ .,这里的点表示尚未提到的所有变量。
  2. 您可以改为手动构建公式。例如:form <- as.formula(paste("y ~", paste(myVars,sep="+")))

然后运行你的回归:

lm(form, data=dat)