Dear R experts: I just tried some simple test that told me that hand computing the OLS coefficients is about 3-10 times as fast as using the built-in lm() function. (code included below.) Most of the time, I do not care, because I like the convenience, and I presume some of the time goes into saving a lot of stuff that I may or may not need. But when I do want to learn the properties of an estimator whose input contains a regression, I do care about speed.
What is the recommended fastest way to get regression coefficients in R? (Is Gentlemen's weighted-least-squares algorithm implemented in a low-level C form somewhere? that one was always lightning fast for me.) regards, /ivo bybuiltin = function( y, x ) coef(lm( y ~ x -1 )); byhand = function( y, x ) { xy<-t(x)%*%y; xxi<- solve(t(x)%*%x) b<-as.vector(xxi%*%xy) ## I will need these later, too: ## res<-y-as.vector(x%*%b) ## soa[i]<-b[2] ## sigmas[i]<-sd(res) b; } MC=500; N=10000; set.seed(0); x= matrix( rnorm(N*MC), nrow=N, ncol=MC ); y= matrix( rnorm(N*MC), nrow=N, ncol=MC ); ptm = proc.time() for (mc in 1:MC) byhand(y[,mc],x[,mc]); cat("By hand took ", proc.time()-ptm, "\n"); ptm = proc.time() for (mc in 1:MC) bybuiltin(y[,mc],x[,mc]); cat("By built-in took ", proc.time()-ptm, "\n"); ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.