[R] Presentation of multiple models in one table using xtable

From: Ajay Narottam Shah <ajayshah_at_mayin.org>
Date: Mon 14 Aug 2006 - 23:08:27 EST


Consider this situation:
> x1 <- runif(100); x2 <- runif(100); y <- 2 + 3*x1 - 4*x2 + rnorm(100)
> m1 <- summary(lm(y ~ x1))
> m2 <- summary(lm(y ~ x2))
> m3 <- summary(lm(y ~ x1 + x2))

Now you have estimated 3 different "competing" models, and suppose you want to present the set of models in one table. xtable(m1) is cool, but doing that thrice would give us 3 different tables.

What I want is this one table:


                    M1             M2              M3
-----------------------------------------------------------
Intercept         0.0816         3.6292         2.2272
                 (0.5533)       (0.2316)***    (0.2385)***

x1                2.8151                        2.7606
                 (0.5533)***                   (0.3193)***

x2                              -4.2899        -4.2580
                                (0.401)***     (0.3031)***

$\sigma_e$        1.538          1.175          0.8873
$R^2$             0.2089         0.5385         0.7393
-----------------------------------------------------------

How would one set about doing this? I am hoping that it's possible to write a function xtable.multi.lm where one would say xtable.multi.lm(m1,m2,m3) and get the above table.

My sense is there are three challenges:

  1. How to write a general R function which eats a unpredictable number of summary(lm()) objects, and fill out a matrix with results such as the above.
  2. How to get a good xtable(), with decimal alignment and with the *** stuff (actually, $^{***}$). Will there be any catch in dropping into mathmode for $R^2$? After each pair of lines, I'd like to have a \\[2mm] so as to get a nice spacing in the table.
  3. This style of presentation seems relevant to a whole host of models
    • whether ARCH models or survival models - not just OLS regressions. It would be very nice if one supported all manner of model objects and not just what comes out of lm().

I'm happy to take a crack at writing this function, which should ideally go back into the xtable library. But I don't have an idea on how to go about these two questions. If you will guide me, I am happy to work on it. :-)

-- 
Ajay Shah                                      http://www.mayin.org/ajayshah  
ajayshah_at_mayin.org                             http://ajayshahblog.blogspot.com
<*(:-? - wizard who doesn't know the answer.

______________________________________________
R-help@stat.math.ethz.ch 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.
Received on Wed Aug 16 01:08:11 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 16 Aug 2006 - 20:21:24 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.