[R] Running different Regressions using for loops

Krunal Nanavati krunal.nanavati at cogitaas.com
Thu Sep 27 14:52:48 CEST 2012


Hi,

Thanks for all your help. I am stuck again, but with a new problem, on
similar lines.

I have taken the problem to the next step now...i have now added 2 "for"
loops... 1 for the Price variable...and another for the Media variable

I have taken 5 price variables...and 2 media variables with the "trend and
seasonality"(appearing in all of them)....so in all there will be 10
regression to run now

Price 1, Media 1

Price 1, Media 2

Price 2, Media 1'

Price 2, Media 2

...and so on

I have built up a code for it...




> tryout=read.table("C:\\Users\\Krunal\\Desktop\\R
tryout.csv",header=T,sep=",")
> cnames <- names(tryout)
> price <- cnames[grep("Price", cnames)]
> media <- cnames[grep("Media", cnames)]
> resp <- cnames[1]
> regr <- cnames[7:8]
> lm.list <- vector("list", 10)
> for(i in 1:5)
+ {
+ regress <- paste(price[i], paste(regr, collapse = "+"), sep = "+")
+ for(j in 1:2)
+ {
+ regress1 <- paste(media[j],regress,sep="+")
+ fmla <- paste(resp, regress1, sep = "~")
+ lm.list[[i]] <- lm(as.formula(fmla), data = tryout)
+ }
+ }
> summ.list <- lapply(lm.list, summary)
> summ.list






But it is only running...5 regressions...only Media 1 along with the 5
Price variables & Trend & Seasonality is regressed on Volume...giving only
5 outputs

I feel there is something wrong with the    " lm.list[[i]] <-
lm(as.formula(fmla), data = tryout)"   statement. I am not sure about its
placement...whether it should be in loop 2 or in loop 1

Can you please help me out??










Thanks & Regards,

Krunal Nanavati
9769-919198

-----Original Message-----
From: Rui Barradas [mailto:ruipbarradas at sapo.pt]
Sent: 27 September 2012 16:22
To: David Winsemius
Cc: Krunal Nanavati; r-help at r-project.org
Subject: Re: [R] Running different Regressions using for loops

Hello,

Just to add that you can also

lapply(lm.list, coef)

with a different output.

Rui Barradas
Em 27-09-2012 09:24, David Winsemius escreveu:
> 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