楼主: bolt2012
1027 0

如何用现成R函数进行更有效率的回归运算 [推广有奖]

  • 1关注
  • 10粉丝

硕士生

97%

还不是VIP/贵宾

-

威望
0
论坛币
269 个
通用积分
0.1098
学术水平
11 点
热心指数
17 点
信用等级
11 点
经验
6614 点
帖子
165
精华
0
在线时间
151 小时
注册时间
2012-3-20
最后登录
2016-9-2

楼主
bolt2012 发表于 2013-2-24 11:00:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
新人第一次发经验贴,希望大家多多指教哈!
一般情况下,我都是用lm()函数进行线性回归拟合。。。但是如果遇到大数据,比如一个因变量对成千个乃至上亿个自变量进行线性回归时,又或者要分析的变量有巨量的观测数时,单单使用lm()函数就吃不消了。。


说到这里,相信大家都会想到用并行运算解决。。这的确是个方法。。R也有很多pkgs可以实现这一功能。

在这想分享两个现成的R函数,使用它们能将一般的回归分析速度提高很多倍:

  1. library(RcppArmadillo)                                                   #将使用这个包中的fastLmPure()函数
  2. x = rnorm(1000)
  3. y = rnorm(1000)
  4. system.time(replicate(1000,lm(y~x)))
  5. system.time(replicate(1000,lm.fit(y = y,x = cbind(rep(1,1000),x))))                       #lm.fit()函数,需要注意的一点是要自行构造设计矩阵
  6. system.time(replicate(1000,fastLmPure(y = y,X = cbind(rep(1,1000),x))))             #fastLmPure()函数,注意参数X是大写的!!!同样要构造设计矩阵
复制代码



下面是输出结果:

  1. > system.time(replicate(1000,fastLmPure(y = y,X = cbind(rep(1,1000),x))))
  2. 用户 系统 流逝
  3. 0.15 0.00 0.15
  4. > system.time(replicate(1000,lm.fit(y = y,x = cbind(rep(1,1000),x))))
  5. 用户 系统 流逝
  6. 1.18 0.00 1.50
  7. > system.time(replicate(1000,lm(y~x)))
  8. 用户 系统 流逝
  9. 4.82 0.04 6.61
复制代码


打完收工。。各位看官请轻拍。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R函数 有效率 如何用 replicate replica 如何

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-26 06:34