[R] Running different Regressions using for loops

David Winsemius dwinsemius at comcast.net
Thu Sep 27 10:24:13 CEST 2012


On Sep 26, 2012, at 10:31 PM, Krunal Nanavati wrote:

> Dear Rui,
> 
> Thanks for your time.
> 
> I have a question though, when I run the 5 regression, whose outputs are
> stored in “lm.list[i]”, I only get the coefficients for the Intercept,
> Price, Trend & Seasonality as below
> 
> 
>> lm.list[1]
> 
> [[1]]
> 
> Call:
> 
> lm(formula = as.formula(fmla), data = tryout)
> 
> Coefficients:
> 
> (Intercept)       Price4        Trend  Seasonality
> 
>    9923123     -2606826        64616       551392

summ.list <- lapply(lm.list, summary)
coef.list <- lapply(summ.list, coef)
coef.list

> 
> I am also looking out for t stats and p value and R squared.

For the r.squared

rsq.vec <- sapply(summ.list, "$", "r.squared")
adj.rsq <- sapply(summ.list, "$", "adj.r.squared")

> Do you know,
> how can I get all these statistics. Also, why is “ as.formula “ used in the
> lm function. It should work without that as well, right?

No.
> 
> 
> Can you please tell me, why the code that I had written, does not work with
> R. I thought it should work perfectly.

In R there is a difference between expression objects and character objects.


> Thanks & Regards,
> 
> 
> 
> Krunal Nanavati
> 
> 9769-919198
> 
> 
> 
> *From:* Rui Barradas [mailto:ruipbarradas at sapo.pt]
> *Sent:* 26 September 2012 17:13
> *To:* Krunal Nanavati
> *Cc:* r-help at r-project.org
> *Subject:* Re: [R] Running different Regressions using for loops
> 
> 
> 
> Hello,
> 
> Try the following.
> 
> 
> #cnames <- names(tryout)  # in your code, use this one
> cnames <- c("Volume", "Price1", "Price2", "Price3", "Price4", "Price5",
> "Trend", "Seasonaliy")
> 
> price <- cnames[grep("Price", cnames)]
> resp <- cnames[1]
> regr <- cnames[7:8]
> 
> #lm.list <- vector("list", 5)
> for(i in 1:5){
>    regress <- paste(price[i], paste(regr, collapse = "+"), sep = "+")
>    fmla <- paste(resp, regress, sep = "~")
>    print(fmla)
>    #lm.list[[i]] <- lm(as.formula(fmla), data = tryout)
> }
> 
> Hope this helps,
> 
> Rui Barradas
> 
> Em 26-09-2012 08:08, Krunal Nanavati escreveu:
> 
> Hi,
> 
> 
> I am trying to run many different regressions using a FOR Loop.
> 
> 
> The input data that is read into R has the following variables
> 
> ·         Volume
> ·         Price2
> ·         Price3
> ·         Price4
> ·         Price5
> ·         Trend
> ·         Seasonality
> 
> I want to run 5 regressions, with the Volume as an dependent variable and
> 
> Price, Trend & Seasonality as independent variables. I have read the above
> 
> mentioned variables in a variable called “tryout”
> 
> 
> 
> I am entering the following syntax in R
> 
> 
> for(i in 1:5)
> 
> + {
> + result[i]=lm(Volume~Price[i]+Trend+Seasonaliy,data=tryout)
> + summary(result[i])
> + }
> 
> After running these lines…I am getting the following error message
> Error in eval(expr, envir, enclos) : object 'Price' not found
> 
> Can someone help me out with this error message. Appreciate for your time
> 
> and consideration.
> 
> 
> 
>  [[alternative HTML version deleted]]
> 
> 

David Winsemius, MD
Alameda, CA, USA




More information about the R-help mailing list