[R] loop for regression

Joshua Wiley jwiley.psych at gmail.com
Wed Jul 4 23:18:22 CEST 2012


Apologies to Bert, I see now that "market" is a variable in the
dataset, not a generic name for market indicators.  lm() with a matrix
as the outcome seems the best approach here.

Josh

On Wed, Jul 4, 2012 at 12:12 PM, Joshua Wiley <jwiley.psych at gmail.com> wrote:
> 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:
>>> dat1 <- read.table(text="
>>>
>>> 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
>>> ", header=TRUE, stringsAsFactors=FALSE)
>>>
>>> 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
>>> PLEASE do read the posting guide
>>> 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
>>> PLEASE do read the posting guide
>>> 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:
>> http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
>>
>>         [[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/



-- 
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