On Sep 28, 2012, at 4:35 AM, Krunal Nanavati wrote: > Ok...I am sorry for the misunderstanding.... > > what I am trying to do is....
Perhaps (and that is a really large 'perhaps'): >>> lm.list2 <- list() lm.means <- 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) } lm.means[[i]] <- mean(lm.list2[[i]]$coefficients[c("Price1", "Media1")] } > > When I run...this set of statements....the 1st regression to be run, will > have Price 1, Media 1...as X variables....and in the second loop it will > have Price 1 & Media 2 .... > > So, what I was thinking is...if I can generate inside the for loop....the > mean for Price 1 and Media 1 during the 1st loop....and then mean for > Price 1 and Media 2 during the second loop...and so on...for all the 10 > regressions > > > Is the method that I was trying appropriate...or is there a better method > there...I am sorry for the earlier explanation, I hope this one makes it > more understandable One generally want ones methods to be determinate while allowing the results to be approximate. Had you followed the posting guide a offered a reproducible example it would have been much more "understandable". > > > Thanks for your time...and all the quick replies > > > -----Original Message----- > From: Rui Barradas [mailto:ruipbarra...@sapo.pt] > Sent: 28 September 2012 16:49 > To: Krunal Nanavati > Cc: David Winsemius; r-help@r-project.org > Subject: Re: [R] Running different Regressions using for loops > > Ok, if I'm understanding it well, you want the mean value of Price1, , > Price5? I don't know if it makes any sense, the coefficients already are > mean values, but see if this is it. > > price.coef <- sapply(lm.list, function(x) coef(x)[2]) > mean(price.coef) > > Rui Barradas > Em 28-09-2012 12:07, Krunal Nanavati escreveu: >> Hi, >> >> Yes the thing that you provided...works fine....but probably I should >> have asked for some other thing. >> >> Here is what I am trying to do.... >> >> I am trying to get the mean of Price variable....so I am entering the >> below function: >> >> mean(names(lm.list2[[2]]$coefficient[2] )) >> >> but this gives me an error.... >> >> [1] NA >> Warning message: >> In mean.default(names(lm.list2[[2]]$coefficient[2])) : >> argument is not numeric or logical: returning NA >> >> I thought by getting the text from the list variable...will help me >> generate the mean for that text...which is a variable in the >> data...say Price 1, Media 2....and so on >> >> Is this a proper approach...if it is...then something more needs to be >> done with the function that you provided. >> >> If not, is there a better way...to generate the mean of a particular >> variable inside the " for loop " used earlier...given below: >> >>> 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) } >> >> >> >> Thanks & Regards, >> >> Krunal Nanavati >> 9769-919198 >> >> >> -----Original Message----- >> From: Rui Barradas [mailto:ruipbarra...@sapo.pt] >> Sent: 28 September 2012 16:02 >> To: Krunal Nanavati >> Cc: David Winsemius; r-help@r-project.org >> Subject: Re: [R] Running different Regressions using for loops >> >> Hello, >> >> Try >> >> names(lm.list2[[2]]$coefficient[2] ) >> >> Rui Barradas >> Em 28-09-2012 11:29, Krunal Nanavati escreveu: >>> Ok...this solves a part of my problem >>> >>> When I type " lm.list2[2] " ...I get the following output >>> >>> [[1]] >>> >>> Call: >>> lm(formula = as.formula(fmla), data = tryout2) >>> >>> Coefficients: >>> (Intercept) Price2 Media1 Distri1 Trend >>> Seasonality >>> 13491232 -5759030 -1520 34370 48628 >>> 445351 >>> >>> >>> >>> >>> When I enter " lm.list2[[2]]$coefficient[2] " it gives me the below >>> output >>> >>> Price2 >>> -5759030 >>> >>> And when I enter " lm.list2[[2]]$coefficient[[2]] " ...I get the >>> number...which is -5759030 >>> >>> >>> I am looking out for a way to get just the " Price2 "....is there a >>> statement for that?? >>> >>> >>> >>> Thanks & Regards, >>> >>> Krunal Nanavati >>> 9769-919198 >>> >>> >>> -----Original Message----- >>> From: Rui Barradas [mailto:ruipbarra...@sapo.pt] >>> Sent: 28 September 2012 15:18 >>> To: Krunal Nanavati >>> Cc: David Winsemius; r-help@r-project.org >>> Subject: Re: [R] Running different Regressions using for loops >>> >>> Hello, >>> >>> To access list elements you need `[[`, like this: >>> >>> summ.list[[2]]$coefficients >>> >>> Or Use the extractor function, >>> >>> coef(summ.list[[2]]) >>> >>> Rui Barradas >>> Em 28-09-2012 07:23, Krunal Nanavati escreveu: >>>> 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 >>>>>> 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.