一般情况下,我都是用lm()函数进行线性回归拟合。。。但是如果遇到大数据,比如一个因变量对成千个乃至上亿个自变量进行线性回归时,又或者要分析的变量有巨量的观测数时,单单使用lm()函数就吃不消了。。
说到这里,相信大家都会想到用并行运算解决。。这的确是个方法。。R也有很多pkgs可以实现这一功能。
在这想分享两个现成的R函数,使用它们能将一般的回归分析速度提高很多倍:
- library(RcppArmadillo) #将使用这个包中的fastLmPure()函数
- x = rnorm(1000)
- y = rnorm(1000)
- system.time(replicate(1000,lm(y~x)))
- system.time(replicate(1000,lm.fit(y = y,x = cbind(rep(1,1000),x)))) #lm.fit()函数,需要注意的一点是要自行构造设计矩阵
- system.time(replicate(1000,fastLmPure(y = y,X = cbind(rep(1,1000),x)))) #fastLmPure()函数,注意参数X是大写的!!!同样要构造设计矩阵
下面是输出结果:
- > system.time(replicate(1000,fastLmPure(y = y,X = cbind(rep(1,1000),x))))
- 用户 系统 流逝
- 0.15 0.00 0.15
- > system.time(replicate(1000,lm.fit(y = y,x = cbind(rep(1,1000),x))))
- 用户 系统 流逝
- 1.18 0.00 1.50
- > system.time(replicate(1000,lm(y~x)))
- 用户 系统 流逝
- 4.82 0.04 6.61
打完收工。。各位看官请轻拍。。



雷达卡



京公网安备 11010802022788号







