# Aggregating results from linear model runs R

Since regression modeling is often more “art” than science, I often find myself testing many iterations of a regression structure. What are some efficient ways to summarize the information from these multiple model runs in an attempt to find the “best” model? One approach I’ve used is to put all the models into a list and run `summary()` across that list, but I imagine there are more efficient ways to compare?

Sample code & models:

``````ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)

lm1 <- lm(weight ~ group)
lm2 <- lm(weight ~ group - 1)
lm3 <- lm(log(weight) ~ group - 1)

#Draw comparisions between models 1 - 3?

models <- list(lm1, lm2, lm3)

lapply(models, summary)
``````

Plot them!

http://svn.cluelessresearch.com/tables2graphs/longley.png

Or, if you must, use tables:
The apsrtable package or the `mtable` function in the memisc package.

Using `mtable`

`````` mtable123 <- mtable("Model 1"=lm1,"Model 2"=lm2,"Model 3"=lm3,
summary.stats=c("sigma","R-squared","F","p","N"))

> mtable123

Calls:
Model 1: lm(formula = weight ~ group)
Model 2: lm(formula = weight ~ group - 1)
Model 3: lm(formula = log(weight) ~ group - 1)

=============================================
Model 1   Model 2   Model 3
---------------------------------------------
(Intercept)      5.032***
(0.220)
group: Trt/Ctl  -0.371
(0.311)
group: Ctl                 5.032***  1.610***
(0.220)   (0.045)
group: Trt                 4.661***  1.527***
(0.220)   (0.045)
---------------------------------------------
sigma             0.696      0.696     0.143
R-squared         0.073      0.982     0.993
F                 1.419    485.051  1200.388
p                 0.249      0.000     0.000
N                20         20        20
=============================================
``````