是否有更快的lm功能

时间:2014-08-21 00:11:36

标签: r lm

我想获得适合1M个独立数据集的线性回归斜率(对于data.frame为1M * 50行,对于数组为1M * 50)。现在我正在使用lm()函数,这需要很长时间(大约10分钟)。

线性回归有更快的功能吗?

4 个答案:

答案 0 :(得分:20)

是的,有:

  • R本身有lm.fit()更简单:没有公式表示法,结果集更简单

  • 我们的几个Rcpp相关软件包有fastLm()个实现:RcppArmadillo,RcppEigen,RcppGSL。

我们在一些博客文章和演示文稿中描述了fastLm()。如果您想以最快的方式使用它,请不要使用公式界面:解析公式并准备模型矩阵需要比实际回归更多的时间。

也就是说,如果您在单个向量上回归单个向量,则可以简化此操作,因为不需要矩阵包。

答案 1 :(得分:11)

从3.1.0开始,有一个.lm.fit()函数。此功能应该比lm()lm.fit()快。

已对其进行了描述,并将其效果与此处的https://rpubs.com/maechler/fast_lm不同lm函数进行了比较。

答案 2 :(得分:4)

来自speedlm

speedglm应该这样做,因为它适用于大型数据集。

答案 3 :(得分:2)

Rfast中的lmfit甚至比.lm.fit更快。 唯一的缺点是当设计矩阵没有满级时它不起作用。