# [R] loop for regression

Joshua Wiley jwiley.psych at gmail.com
Wed Jul 4 21:12:51 CEST 2012

```On Wed, Jul 4, 2012 at 11:48 AM, Bert Gunter <gunter.berton at gene.com> wrote:
> Please carefully read ?lm. As I previously told the OP, no looping/apply is
> necessary. The left hand side of the lm formula can be a matrix for which
> separate fits will be done on each column automatically.

Which is a great option if the design matrix is constant, but suppose
you want to predict each stock from every other stock in a dataset?
This is a one liner with lapply:

lapply(colnames(mtcars), function(n) lm(substitute(y ~ ., list(y =
as.name(n))), data = mtcars))

granted, not the prettiest or most efficient thing on the planet (and
falls apart for some reason with fastLm(), which I am still
investigating work arounds to).  The matrix outcome to lm() approach:

lm(as.matrix(mtcars) ~ ., data = mtcars)

yeilds perfect explanation by the variable of itself, as expected,
which is not really useful.  The OP did not give many details other
than "write a for loop".  It is not clear what should be varying.  If
it is *just* the outcome, you are absolutely right, giving lm a matrix
seems the most sensible route.

Cheers,

Josh

>
> -- Bert
>
> On Wed, Jul 4, 2012 at 9:44 AM, arun <smartpink111 at yahoo.com> wrote:
>
>>
>>
>> Hi,
>>
>> You could also use:
>>
>> 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
>>
>> Stocks<-dat1[,2:4]
>> apply(Stocks,2,function(x) lm(x~Market,data=dat1))
>> \$Stock1
>>
>> Call:
>> lm(formula = x ~ Market, data = dat1)
>>
>> Coefficients:
>> (Intercept)       Market
>>          -3            1
>>
>>
>> \$Stock2
>>
>> Call:
>> lm(formula = x ~ Market, data = dat1)
>>
>> Coefficients:
>> (Intercept)       Market
>>          -2            1
>>
>>
>> \$Stock3
>>
>> Call:
>> lm(formula = x ~ Market, data = dat1)
>>
>> Coefficients:
>> (Intercept)       Market
>>          -1            1
>>
>> A.K.
>>
>>
>>
>>
>> ----- Original Message -----
>> From: Akhil dua <akhil.dua.12 at gmail.com>
>> To: r-help at r-project.org
>> Cc:
>> Sent: Wednesday, July 4, 2012 1:08 AM
>> Subject: [R] loop for regression
>>
>> ---------- 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
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>
>
> --
>
> Bert Gunter
> Genentech Nonclinical Biostatistics
>
> Internal Contact Info:
> Phone: 467-7374
> Website:
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> 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/

```