Hi Rui, Excellent!! This is what I was looking for. Thanks for the help.
So, now I have stored the result of the 10 regressions in "summ.list <- lapply(lm.list2, summary)" And now once I enter " sum.list "....it gives me the output for all the 10 regressions... I wanted to access a beta coefficient of one of the regressions....say "Price2+Media1+Trend+Seasonality"...the result of which is stored in " sum.list[2] " I entered the below statement for accessing the Beta coefficient for Price2... > summ.list[2]$coefficients[2] NULL But this is giving me " NULL " as the output... What I am looking for, is to access a beta value of a particular variable from a particular regression output and use it for further analysis. Can you please help me out with this. Greatly appreciate, you guys efforts. Thanks & Regards, Krunal Nanavati 9769-919198 -----Original Message----- From: Rui Barradas [mailto:ruipbarra...@sapo.pt] Sent: 27 September 2012 21:55 To: Krunal Nanavati Cc: David Winsemius; r-help@r-project.org Subject: Re: [R] Running different Regressions using for loops Hello, Inline. Em 27-09-2012 13:52, Krunal Nanavati escreveu: > 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. No, I don't think so. If it's giving you only 5 outputs the error is probably in the fmla construction. Put print statements to see the results of those paste() instructions. Supposing your data.frame is now called tryout2, price <- paste("Price", 1:5, sep = "") media <- paste("Media", 1:2, sep = "") pricemedia <- apply(expand.grid(price, media, stringsAsFactors = FALSE), 1, paste, collapse="+") response <- "Volume" trendseason <- "Trend+Seasonality" # do this only once lm.list2 <- list() for(i in seq_along(pricemedia)){ regr <- paste(pricemedia[i], trendseason, sep = "+") fmla <- paste(response, regr, sep = "~") lm.list2[[i]] <- lm(as.formula(fmla), data = tryout2) } The trick is to use ?expand.grid Hope this helps, Rui Barradas > 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:ruipbarra...@sapo.pt] > Sent: 27 September 2012 16:22 > To: David Winsemius > Cc: Krunal Nanavati; r-help@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:ruipbarra...@sapo.pt] >>> *Sent:* 26 September 2012 17:13 >>> *To:* Krunal Nanavati >>> *Cc:* r-help@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 >> ______________________________________________ R-help@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.