我想获得适合1M个独立数据集的线性回归斜率(对于data.frame为1M * 50行,对于数组为1M * 50)。现在我正在使用lm()
函数,这需要很长时间(大约10分钟)。
线性回归有更快的功能吗?
答案 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)