使用 memisc 包中的 mtable() 在回归 table 中更改自变量的出现顺序

Change order of appearance of independent variables in regression table using mtable() from the memisc package

我使用包 memisc 将我的回归表导出到 LaTeX。我现在有一个三个模型,每个模型都有不同的自变量 (IV) 和各种控制变量 (CV)。

正在使用

mtable("Modell 1"=lm(DV ~ IV1 + CV1 + CV2),
       "Modell 2"=lm(DV ~ IV2 + CV1 + CV2),
       "Modell 3"=lm(DV ~ IV3 + CV1 + CV2))

,我得到这样的输出:

===========================================================================
                            Modell 1    Modell 2    Modell 3    Modell 4   
---------------------------------------------------------------------------
  (Intercept)               -0.122      -0.112      -0.122      -0.097     
                            (0.116)     (0.115)     (0.116)     (0.116)    
  IV1                        0.026                              -0.083     
                            (0.030)                             (0.064)    
  CV1                        0.017       0.015       0.018       0.012     
                            (0.019)     (0.019)     (0.019)     (0.019)    
  CV2                        0.064***    0.063***    0.066***    0.063***  
                            (0.016)     (0.015)     (0.016)     (0.016)     
  IV3                        0.076                   0.196*    
                                        (0.045)                 (0.099)    
  IV4                                               -0.016      -0.047     
                                                    (0.076)     (0.078)    
---------------------------------------------------------------------------

(我截断了汇总统计信息)。我希望 IV1、IV2 和 IV3 先出现,然后是所有控制变量。是否有任何可自动化的解决方案?

这是一个中间问题。请考虑以下示例。

library(memisc)
# independent variables (IV) are dpi, ddpi, log(dpi) and log(ddpi)
# control variables (CV) are pop15 and pop75
mtable("Model 1" = lm(sr ~ dpi + pop15 + pop75, LifeCycleSavings),
       "Model 2" = lm(sr ~ ddpi + pop15 + pop75, LifeCycleSavings),
       "Model 3" = lm(sr ~ log(dpi) + pop15 + pop75, LifeCycleSavings),
       "Model 4" = lm(sr ~ log(ddpi) + pop15 + pop75, LifeCycleSavings))
# looks like mtable appends new coefficients to the list of coefficients defined in the first model
# output
Calls:
Model 1: lm(formula = sr ~ dpi + pop15 + pop75, data = LifeCycleSavings)
Model 2: lm(formula = sr ~ ddpi + pop15 + pop75, data = LifeCycleSavings)
Model 3: lm(formula = sr ~ log(dpi) + pop15 + pop75, data = LifeCycleSavings)
Model 4: lm(formula = sr ~ log(ddpi) + pop15 + pop75, data = LifeCycleSavings)

=====================================================================
                    Model 1      Model 2     Model 3      Model 4    
---------------------------------------------------------------------
  (Intercept)       31.457***    28.125***    36.304**    26.118***  
                    (7.482)      (7.184)     (10.511)     (7.416)    
  dpi               -0.001                                           
                    (0.001)                                          
  pop15             -0.492**     -0.452**     -0.506**    -0.408**   
                    (0.149)      (0.141)      (0.154)     (0.144)    
  pop75             -1.568       -1.835       -1.649      -1.663     
                    (1.121)      (0.998)      (1.110)     (1.009)    
  ddpi                            0.428*                             
                                 (0.188)                             
  log(dpi)                                    -0.779                 
                                              (1.018)                
  log(ddpi)                                                1.584*    
                                                          (0.722)    
---------------------------------------------------------------------
  R-squared          0.274        0.337        0.271       0.332     
  adj. R-squared     0.227        0.293        0.223       0.288     
  sigma              3.939        3.767        3.948       3.780     
  F                  5.797        7.778        5.700       7.608     
  p                  0.002        0.000        0.002       0.000     
  Log-likelihood  -137.410     -135.171     -137.525    -135.355     
  Deviance         713.767      652.606      717.054     657.424     
  AIC              284.821      280.341      285.050     280.709     
  BIC              294.381      289.902      294.610     290.269     
  N                 50           50           50          50         
=====================================================================

我们现在希望 IV(即 dpiddpilog(dpi)log(ddpi))首先出现。

选项 1

# we will define a fake model which includes all the IVs
mtables <- mtable("Model fake" = lm(sr ~ dpi + ddpi + log(dpi) + log(ddpi), LifeCycleSavings),
                  "Model 1" = lm(sr ~ dpi + pop15 + pop75, LifeCycleSavings),
                  "Model 2" = lm(sr ~ ddpi + pop15 + pop75, LifeCycleSavings),
                  "Model 3" = lm(sr ~ log(dpi) + pop15 + pop75, LifeCycleSavings),
                  "Model 4" = lm(sr ~ log(ddpi) + pop15 + pop75, LifeCycleSavings))
# we will display mtables without the fake model
mtables[2:5]
# output
Calls:
Model 1: lm(formula = sr ~ dpi + pop15 + pop75, data = LifeCycleSavings)
Model 2: lm(formula = sr ~ ddpi + pop15 + pop75, data = LifeCycleSavings)
Model 3: lm(formula = sr ~ log(dpi) + pop15 + pop75, data = LifeCycleSavings)
Model 4: lm(formula = sr ~ log(ddpi) + pop15 + pop75, data = LifeCycleSavings)

=====================================================================
                    Model 1      Model 2     Model 3      Model 4    
---------------------------------------------------------------------
  (Intercept)       31.457***    28.125***    36.304**    26.118***  
                    (7.482)      (7.184)     (10.511)     (7.416)    
  dpi               -0.001                                           
                    (0.001)                                          
  ddpi                            0.428*                             
                                 (0.188)                             
  log(dpi)                                    -0.779                 
                                              (1.018)                
  log(ddpi)                                                1.584*    
                                                          (0.722)    
  pop15             -0.492**     -0.452**     -0.506**    -0.408**   
                    (0.149)      (0.141)      (0.154)     (0.144)    
  pop75             -1.568       -1.835       -1.649      -1.663     
                    (1.121)      (0.998)      (1.110)     (1.009)    
---------------------------------------------------------------------
  R-squared          0.274        0.337        0.271       0.332     
  adj. R-squared     0.227        0.293        0.223       0.288     
  sigma              3.939        3.767        3.948       3.780     
  F                  5.797        7.778        5.700       7.608     
  p                  0.002        0.000        0.002       0.000     
  Log-likelihood  -137.410     -135.171     -137.525    -135.355     
  Deviance         713.767      652.606      717.054     657.424     
  AIC              284.821      280.341      285.050     280.709     
  BIC              294.381      289.902      294.610     290.269     
  N                 50           50           50          50         
=====================================================================

选项 2

# stargazer can be an option
library(stargazer)
stargazer(lm(sr ~ dpi + pop15 + pop75, LifeCycleSavings),
          lm(sr ~ ddpi + pop15 + pop75, LifeCycleSavings),
          lm(sr ~ log(dpi) + pop15 + pop75, LifeCycleSavings),
          lm(sr ~ log(ddpi) + pop15 + pop75, LifeCycleSavings),
          type = "text", column.labels = c("Model 1", "Model 2", "Model 3", "Model 4"),
          model.numbers = FALSE)
# output
=====================================================================
                                        Dependent variable:          
                              ---------------------------------------
                                                sr                   
                               Model 1   Model 2   Model 3   Model 4 
---------------------------------------------------------------------
dpi                            -0.001                                
                               (0.001)                               

ddpi                                     0.428**                     
                                         (0.188)                     

log(dpi)                                           -0.779            
                                                   (1.018)           

log(ddpi)                                                    1.584** 
                                                             (0.722) 

pop15                         -0.492*** -0.452*** -0.506*** -0.408***
                               (0.149)   (0.141)   (0.154)   (0.144) 

pop75                          -1.568    -1.835*   -1.649    -1.663  
                               (1.121)   (0.998)   (1.110)   (1.009) 

Constant                      31.457*** 28.125*** 36.304*** 26.118***
                               (7.482)   (7.184)  (10.511)   (7.416) 

---------------------------------------------------------------------
Observations                     50        50        50        50    
R2                              0.274     0.337     0.271     0.332  
Adjusted R2                     0.227     0.293     0.223     0.288  
Residual Std. Error (df = 46)   3.939     3.767     3.948     3.780  
F Statistic (df = 3; 46)      5.797***  7.778***  5.700***  7.608*** 
=====================================================================
Note:                                     *p<0.1; **p<0.05; ***p<0.01

根据您的数据得出的解决方案

mtables <- mtable("Modell 0"=lm(DV ~ IV1 + IV2 + IV3),
                  "Modell 1"=lm(DV ~ IV1 + CV1 + CV2),
                  "Modell 2"=lm(DV ~ IV2 + CV1 + CV2),
                  "Modell 3"=lm(DV ~ IV3 + CV1 + CV2))
mtables[2:4]
# or use stargazer() as above