[R] loop for regression

Joshua Wiley jwiley.psych at gmail.com
Wed Jul 4 07:47:50 CEST 2012


Hi,

A few comments.  First a for loop is probably not optimally efficient.
 Consider instead (using a bulit in example dataset):

lm(cbind(mpg, hp) ~ cyl + vs, data = mtcars)

which gives:

Call:
lm(formula = cbind(mpg, hp) ~ cyl + vs, data = mtcars)

Coefficients:
             mpg       hp
(Intercept)   39.6250  -15.6279
cyl           -3.0907   27.5843
vs            -0.9391  -19.1148

i.e., same predictors used on both outcomes.  Note that this is
substantially faster than running separately.  See ?lm for details.
If you need to run separate models (e.g., predictors are changing),
and you have many models and a lot of data (which would not be
surprising when working with stock data), consider using the RcppEigen
package.  You can get it by:

install.packages("RcppEigen")
require(RcppEigen) # load package

it has a function called fastLm which is orders of magnitude faster
than lm() and works almost identically.

lapply(mtcars[, c("mpg", "hp")], function(x) fastLm(X = cbind(Int = 1,
mtcars[, c("cyl", "vs")]), y = x))

you just give it the design matrix (X) and response vector (y) see ?fastLm

Cheers,

Josh

On Tue, Jul 3, 2012 at 10:08 PM, Akhil dua <akhil.dua.12 at gmail.com> wrote:
> ---------- Forwarded message ----------
> From: Akhil dua <akhil.dua.12 at gmail.com>
> Date: Wed, Jul 4, 2012 at 10:33 AM
> Subject:
> To: r-help at r-project.org
>
>
> Hi everyone I
> have data on stock prices and market indices
>
> and I need to run a seperate regression of every stock on market
> so I want to write a  "for loop"  so that I wont have to write codes again
> and again to run the regression...
> my data is in the format given below
>
>
>
> Date               Stock1  Stock2   Stock3    Market
> 01/01/2000         1           2          3             4
> 01/02/2000         5           6          7             8
> 01/03/2000         1           2          3             4
> 01/04/2000         5           6          7             8
>
>
> So can any one help me how to write this loop
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.



-- 
Joshua Wiley
Ph.D. Student, Health Psychology
Programmer Analyst II, Statistical Consulting Group
University of California, Los Angeles
https://joshuawiley.com/



More information about the R-help mailing list