MyNixOS website logo
Description

Regression Table for Publication.

Create regression tables for publication. Currently supports 'lm', 'glm', 'survreg', and 'ivreg' outputs.

Build Status

outreg

Create Regression Tables for Publication

.variable.statModel 1Model 2Model 3
1(Intercept)Estimate37.885***38.752***34.496***
2Std Err[2.074][1.787][7.441]
5cylEstimate-2.876***-0.942*-0.762
6Std Err[0.322][0.551][0.635]
9wtEstimate-3.167***-2.973***
10Std Err[0.741][0.818]
13hpEstimate-0.018-0.021
14Std Err[0.012][0.013]
17dratEstimate0.818
18Std Err[1.387]
21N323232
22R20.7260.8430.845
23adj R20.7170.8260.822
24AIC169.306155.477157.067

Overview

outreg summarizes regression outcomes into a coefficient table in data.frame format. Currently, outreg supports the following model fit objects:

  • lm : linear regression
  • glm : logistic regression, poisson regression, etc
  • survreg : survival regression, tobit regression, etc
  • ivreg : instrument variable regression

Usage

outreg takes a list of model fit objects as the main input, and returns a data.frame object where a model is represented in a column.

library(outreg)
fitlist <- list(lm(mpg ~ cyl, data = mtcars),
                lm(mpg ~ cyl + wt + hp, data = mtcars),
                lm(mpg ~ cyl + wt + hp + drat, data = mtcars))
outreg(fitlist)
#>      .variable    .stat   Model 1   Model 2   Model 3
#> 1  (Intercept) Estimate 37.885*** 38.752*** 34.496***
#> 2               Std Err   [2.074]   [1.787]   [7.441]
#> 5          cyl Estimate -2.876***   -0.942*    -0.762
#> 6               Std Err   [0.322]   [0.551]   [0.635]
#> 9           wt Estimate           -3.167*** -2.973***
#> 10              Std Err             [0.741]   [0.818]
#> 13          hp Estimate              -0.018    -0.021
#> 14              Std Err             [0.012]   [0.013]
#> 17        drat Estimate                         0.818
#> 18              Std Err                       [1.387]
#> 21                    N        32        32        32
#> 22                   R2     0.726     0.843     0.845
#> 23               adj R2     0.717     0.826     0.822
#> 24                  AIC   169.306   155.477   157.067

Installation

This package is not on CRAN (yet). Please install it from the github repository.

devtools::install_github('kota7/outreg')

Examples

Basic usage

library(outreg)
fitlist <- list(lm(mpg ~ cyl, data = mtcars),
                lm(mpg ~ cyl + wt + hp, data = mtcars),
                lm(mpg ~ cyl + wt + hp + drat, data = mtcars))
outreg(fitlist)
#>      .variable    .stat   Model 1   Model 2   Model 3
#> 1  (Intercept) Estimate 37.885*** 38.752*** 34.496***
#> 2               Std Err   [2.074]   [1.787]   [7.441]
#> 5          cyl Estimate -2.876***   -0.942*    -0.762
#> 6               Std Err   [0.322]   [0.551]   [0.635]
#> 9           wt Estimate           -3.167*** -2.973***
#> 10              Std Err             [0.741]   [0.818]
#> 13          hp Estimate              -0.018    -0.021
#> 14              Std Err             [0.012]   [0.013]
#> 17        drat Estimate                         0.818
#> 18              Std Err                       [1.387]
#> 21                    N        32        32        32
#> 22                   R2     0.726     0.843     0.845
#> 23               adj R2     0.717     0.826     0.822
#> 24                  AIC   169.306   155.477   157.067

Custom regression names

If regression list is named, the names are used as column names.

outreg(setNames(fitlist, c('small', 'medium', 'large')))
#>      .variable    .stat     small    medium     large
#> 1  (Intercept) Estimate 37.885*** 38.752*** 34.496***
#> 2               Std Err   [2.074]   [1.787]   [7.441]
#> 5          cyl Estimate -2.876***   -0.942*    -0.762
#> 6               Std Err   [0.322]   [0.551]   [0.635]
#> 9           wt Estimate           -3.167*** -2.973***
#> 10              Std Err             [0.741]   [0.818]
#> 13          hp Estimate              -0.018    -0.021
#> 14              Std Err             [0.012]   [0.013]
#> 17        drat Estimate                         0.818
#> 18              Std Err                       [1.387]
#> 21                    N        32        32        32
#> 22                   R2     0.726     0.843     0.845
#> 23               adj R2     0.717     0.826     0.822
#> 24                  AIC   169.306   155.477   157.067

Custom stats and stars

You may choose statistics to display and which stats to put "stars" on, and significance level.

outreg(fitlist, pv = TRUE, se = FALSE, 
       starred = 'pv', alpha = c(0.05, 0.01, 0.001))
#>      .variable    .stat  Model 1  Model 2  Model 3
#> 1  (Intercept) Estimate   37.885   38.752   34.496
#> 4               p Value 0.000*** 0.000*** 0.000***
#> 5          cyl Estimate   -2.876   -0.942   -0.762
#> 8               p Value 0.000***    0.098    0.240
#> 9           wt Estimate            -3.167   -2.973
#> 12              p Value          0.000***  0.001**
#> 13          hp Estimate            -0.018   -0.021
#> 16              p Value             0.140    0.118
#> 17        drat Estimate                      0.818
#> 20              p Value                      0.560
#> 21                    N       32       32       32
#> 22                   R2    0.726    0.843    0.845
#> 23               adj R2    0.717    0.826    0.822
#> 24                  AIC  169.306  155.477  157.067

Constant term at the bottom

outreg(fitlist, constlast = TRUE)
#>      .variable    .stat   Model 1   Model 2   Model 3
#> 1          cyl Estimate -2.876***   -0.942*    -0.762
#> 2               Std Err   [0.322]   [0.551]   [0.635]
#> 5           wt Estimate           -3.167*** -2.973***
#> 6               Std Err             [0.741]   [0.818]
#> 9           hp Estimate              -0.018    -0.021
#> 10              Std Err             [0.012]   [0.013]
#> 13        drat Estimate                         0.818
#> 14              Std Err                       [1.387]
#> 17 (Intercept) Estimate 37.885*** 38.752*** 34.496***
#> 18              Std Err   [2.074]   [1.787]   [7.441]
#> 21                    N        32        32        32
#> 22                   R2     0.726     0.843     0.845
#> 23               adj R2     0.717     0.826     0.822
#> 24                  AIC   169.306   155.477   157.067

Heteroskedacity robust standard errors

outreg(fitlist, robust = TRUE)
#>      .variable    .stat   Model 1   Model 2   Model 3
#> 1  (Intercept) Estimate 37.885*** 38.752*** 34.496***
#> 2               Std Err   [2.528]   [2.017]   [6.085]
#> 5          cyl Estimate -2.876***   -0.942*    -0.762
#> 6               Std Err   [0.359]   [0.481]   [0.527]
#> 9           wt Estimate           -3.167*** -2.973***
#> 10              Std Err             [0.664]   [0.756]
#> 13          hp Estimate            -0.018**  -0.021**
#> 14              Std Err             [0.008]   [0.009]
#> 17        drat Estimate                         0.818
#> 18              Std Err                       [1.014]
#> 21                    N        32        32        32
#> 22                   R2     0.726     0.843     0.845
#> 23               adj R2     0.717     0.826     0.822
#> 24                  AIC   169.306   155.477   157.067

Poisson regression

counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
fitlist2 <- list(glm(counts ~ outcome, family = poisson()),
                 glm(counts ~ outcome + treatment, family = poisson()))
outreg(fitlist2)
#>      .variable    .stat  Model 1  Model 2
#> 1  (Intercept) Estimate 3.045*** 3.045***
#> 2               Std Err  [0.126]  [0.171]
#> 6     outcome2 Estimate -0.454** -0.454**
#> 7               Std Err  [0.202]  [0.202]
#> 11    outcome3 Estimate   -0.293   -0.293
#> 12              Std Err  [0.193]  [0.193]
#> 16  treatment2 Estimate             0.000
#> 17              Std Err           [0.200]
#> 21  treatment3 Estimate             0.000
#> 22              Std Err           [0.200]
#> 26                    N        9        9
#> 27                  AIC   52.761   56.761

Logistic regression

fitlist3 <- list(glm(cbind(ncases, ncontrols) ~ agegp,
                     data = esoph, family = binomial()),
                 glm(cbind(ncases, ncontrols) ~ agegp + tobgp + alcgp,
                     data = esoph, family = binomial()),
                 glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp,
                     data = esoph, family = binomial()))
outreg(fitlist3)
#>           .variable    .stat   Model 1   Model 2   Model 3
#> 1       (Intercept) Estimate -2.139*** -1.780*** -1.760***
#> 2                    Std Err   [0.189]   [0.198]   [0.198]
#> 6           agegp.L Estimate  2.882***  3.005***  2.996***
#> 7                    Std Err   [0.644]   [0.652]   [0.654]
#> 11          agegp.Q Estimate -1.629***  -1.338**  -1.350**
#> 12                   Std Err   [0.583]   [0.591]   [0.592]
#> 16          agegp.C Estimate     0.151     0.153     0.134
#> 17                   Std Err   [0.443]   [0.449]   [0.451]
#> 21          agegp^4 Estimate     0.218     0.064     0.071
#> 22                   Std Err   [0.302]   [0.309]   [0.310]
#> 26          agegp^5 Estimate    -0.178    -0.194    -0.213
#> 27                   Std Err   [0.189]   [0.195]   [0.196]
#> 31          tobgp.L Estimate            0.594***  0.638***
#> 32                   Std Err             [0.194]   [0.197]
#> 36          tobgp.Q Estimate               0.065     0.029
#> 37                   Std Err             [0.188]   [0.196]
#> 41          tobgp.C Estimate               0.157     0.156
#> 42                   Std Err             [0.187]   [0.198]
#> 46          alcgp.L Estimate            1.492***  1.371***
#> 47                   Std Err             [0.199]   [0.211]
#> 51          alcgp.Q Estimate              -0.227    -0.149
#> 52                   Std Err             [0.180]   [0.196]
#> 56          alcgp.C Estimate               0.255     0.228
#> 57                   Std Err             [0.159]   [0.182]
#> 61  tobgp.L:alcgp.L Estimate                       -0.704*
#> 62                   Std Err                       [0.411]
#> 66  tobgp.Q:alcgp.L Estimate                         0.122
#> 67                   Std Err                       [0.420]
#> 71  tobgp.C:alcgp.L Estimate                        -0.292
#> 72                   Std Err                       [0.429]
#> 76  tobgp.L:alcgp.Q Estimate                         0.129
#> 77                   Std Err                       [0.389]
#> 81  tobgp.Q:alcgp.Q Estimate                        -0.445
#> 82                   Std Err                       [0.392]
#> 86  tobgp.C:alcgp.Q Estimate                        -0.052
#> 87                   Std Err                       [0.395]
#> 91  tobgp.L:alcgp.C Estimate                        -0.161
#> 92                   Std Err                       [0.367]
#> 96  tobgp.Q:alcgp.C Estimate                         0.048
#> 97                   Std Err                       [0.362]
#> 101 tobgp.C:alcgp.C Estimate                        -0.139
#> 102                  Std Err                       [0.358]
#> 106                        N        88        88        88
#> 107                      AIC   298.593   225.454   236.964

Survival regression

library(survival)
fitlist4 <- list(survreg(Surv(time, status) ~ ph.ecog + age,
                         data = lung),
                 survreg(Surv(time, status) ~ ph.ecog + age + strata(sex),
                         data = lung))
outreg(fitlist4)
#>           .variable    .stat   Model 1   Model 2
#> 1       (Intercept) Estimate  6.831***  6.732***
#> 2                    Std Err   [0.429]   [0.424]
#> 6           ph.ecog Estimate -0.326*** -0.324***
#> 7                    Std Err   [0.086]   [0.086]
#> 11              age Estimate    -0.008    -0.006
#> 12                   Std Err   [0.007]   [0.007]
#> 16       Log(scale) Estimate -0.304***          
#> 17                   Std Err   [0.062]          
#> 21 Log(scale) sex=1 Estimate           -0.244***
#> 22                   Std Err             [0.079]
#> 26 Log(scale) sex=2 Estimate           -0.423***
#> 27                   Std Err             [0.107]
#> 31                         N       227       227
#> 32                       AIC  2284.215  2284.504

Tobit regression

fitlist5 <- list(survreg(Surv(durable, durable>0, type='left') ~ 1,
                 data=tobin, dist='gaussian'),
                 survreg(Surv(durable, durable>0, type='left') ~ age + quant,
                 data=tobin, dist='gaussian'))
outreg(fitlist5)
#>      .variable    .stat  Model 1  Model 2
#> 1  (Intercept) Estimate   -2.227   15.145
#> 2               Std Err  [2.060] [16.079]
#> 6          age Estimate            -0.129
#> 7               Std Err           [0.219]
#> 11       quant Estimate            -0.046
#> 12              Std Err           [0.058]
#> 16  Log(scale) Estimate 1.783*** 1.718***
#> 17              Std Err  [0.309]  [0.310]
#> 21                    N       20       20
#> 22                  AIC   62.984   65.880

Mix of OLS and instrument variable regression

library(AER)
data("CigarettesSW", package = "AER")
CigarettesSW$rprice <- with(CigarettesSW, price/cpi)
CigarettesSW$rincome <- with(CigarettesSW, income/population/cpi)
CigarettesSW$tdiff <- with(CigarettesSW, (taxs - tax)/cpi)

fitlist6 <- list(OLS = lm(log(packs) ~ log(rprice) + log(rincome),
                          data = CigarettesSW, subset = year == "1995"),
                 IV1 = ivreg(log(packs) ~ log(rprice) + log(rincome) |
                             log(rincome) + tdiff + I(tax/cpi),
                             data = CigarettesSW, subset = year == "1995"),
                 IV2 = ivreg(log(packs) ~ log(rprice) + log(rincome) |
                             log(population) + tdiff + I(tax/cpi),
                             data = CigarettesSW, subset = year == "1995"))
outreg(fitlist6)
#>       .variable              .stat       OLS       IV1       IV2
#> 1   (Intercept)           Estimate 10.342***  9.895*** 10.116***
#> 2                          Std Err   [1.023]   [1.059]   [1.210]
#> 5   log(rprice)           Estimate -1.407*** -1.277***  -0.892**
#> 6                          Std Err   [0.251]   [0.263]   [0.397]
#> 9  log(rincome)           Estimate     0.344     0.280    -0.489
#> 10                         Std Err   [0.235]   [0.239]   [0.608]
#> 13                               N        48        48        48
#> 14                              R2     0.433     0.429     0.274
#> 15                          adj R2     0.408     0.404     0.241
#> 16                             AIC   -19.680                    
#> 17                 Wu-Hasuman stat               3.068     3.553
#> 18                    WuHausman_pv               0.087     0.037
#> 19                     Sargan stat               0.333     0.076
#> 20                       Sargan_pv               0.564     0.783
#> 21  log(rprice)    Weak instr stat             244.734   195.613
#> 22              Weak instr p-value               0.000     0.000
#> 23 log(rincome)    Weak instr stat                         7.767
#> 24              Weak instr p-value                         0.000
Metadata

Version

0.2.2

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows