[R] summary many regressions

PIKAL Petr petr.pikal at precheza.cz
Tue Nov 26 11:12:18 CET 2013


Hi

It is work for split/lapply or sapply approach.

ff<-function(data) {ss<-lm(y~x, data); c(coef(ss), summary(ss)$adj.r.squared)}
lapply(split(data[,1:2], data$city), ff)

Regards
Petr

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Gary Dong
> Sent: Tuesday, November 26, 2013 12:36 AM
> To: r-help at r-project.org
> Subject: [R] summary many regressions
> 
> Dear R users,
> 
> I have a large data set which includes data from 300 cities. I want to
> run a biviriate regression for each city and record the coefficient and
> the adjusted R square.
> 
> For example, in the following, I have 10 cities represented by numbers
> from
> 1 to 10:
> 
> x = cumsum(c(0, runif(999, -1, +1)))
> y = cumsum(c(0, runif(999, -1, +1)))
> city = rep(1:10,each=100)
> data<-data.frame(cbind(x,y,city))
> 
> I can manually run regressions for each city:
> fit_city1 <- lm(y ~ x,data=subset(data,data$city==1))
> summary(fit_city1)
> 
> Obvious, it is very tedious to run 300 regressions. I wonder if there
> is a quicker way to do this. Use for loop?  what I want to see is
> something like
> this:
> 
> City        Coefficient       Adjusted R square
> 1              -0.05                  0.36
> 2              -0.12                  0.20
> 3              -0.05                  0.32
> .....
> 
> Any advice is appreciated!
> 
> Gary
> 
> 	[[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.



More information about the R-help mailing list