【问题标题】:How do I create a table wth both plain and robust standard errors?如何创建一个既包含简单标准错误又包含可靠标准错误的表格?
【发布时间】:2019-12-20 22:58:25
【问题描述】:

我经常在出版物中看到回归表,其中报告了简单的标准误差(在括号中),以及稳健的标准误差(在括号中)低于简单的标准误差。这些表格还包括括号/方括号旁边的随附星号,表示统计显着性。

创建此类回归报告最明智的方法是什么?

到目前为止,我一直在 Stata 中使用estout 包。对于给定的模型,我可以有一个具有普通标准误差的列,而另一个具有稳健的标准误差的列。

例如,使用estout,我可以执行以下操作:

eststo: qui reg ROE duality
eststo: qui reg ROE duality, vce(cluster firm)

esttab b(%9.3fc) ///                     
       se(%9.3fc) ///
       star (* 0.5 ** 0.25)

上述代码 sn-p 产生:

--------------------------------------------
                (1)             (2)   
                ROE             ROE   
--------------------------------------------
duality       -8.090**        -8.090*   
              (6.585)         (7.067)   
--------------------------------------------
N               647             647   
--------------------------------------------

但是,此表会浪费列空间,因为两列的点估计值相同,唯一的区别是来自不同方差-协方差估计量的标准误差。

我更希望有一张像下面这样的表格:

 ------------------------
                (1)      
                ROE      
-------------------------
duality       -8.090     
              (6.585)** 
              [7.067]*   
-------------------------
N               647      
-------------------------

请注意,在 0.5 和 0.25 处的统计显着性指示仅用于说明,当然不反映惯例。

【问题讨论】:

    标签: stata


    【解决方案1】:

    您只需要手动添加稳健的标准错误:

    sysuse auto, clear
    eststo clear
    
    quietly regress price weight mpg, vce(robust)
    matrix regtab = r(table)
    matrix regtab = regtab[2,1...]
    matrix rbse = regtab
    
    eststo: quietly regress price weight mpg
    
    estadd matrix rbse = rbse
    esttab, cells(b se rbse)
    
    -------------------------
                          (1)
                        price
                    b/se/rbse
    -------------------------
    weight           1.746559
                     .6413538
                      .777837
    mpg             -49.51222
                     86.15604
                      95.8074
    _cons            1946.069
                      3597.05
                     4213.793
    -------------------------
    N                      74
    -------------------------
    

    将其格式化为您的规范需要使用相关选项:

    esttab , cells("b(fmt(a3) star)" "se(fmt(a2) par)" "rbse(fmt(a2) par([ ]))") ///
    star(* 0.5 ** 0.25)  addnote("Robust SE in brackets" "* p<0.5, ** p<0.25") ///
    nonumbers
    
    ---------------------------
                        price  
                    b/se/rbse  
    ---------------------------
    weight              1.747**
                       (0.64)  
                       [0.78]  
    mpg                -49.51  
                       (86.2)  
                       [95.8]  
    _cons              1946.1  
                     (3597.0)  
                     [4213.8]  
    ---------------------------
    N                      74  
    ---------------------------
    Robust SE in brackets
    * p<0.5, ** p<0.25
    

    【讨论】:

    • 谢谢珀莉!这与我的想法非常接近,但是是否有可能在 SE 处指示显着性而不是点估计,因为 SE 也决定了统计显着性的水平?
    • 我注意到第 6 行和第 7 行可以通过使用matrix rbse = regtab[2,1...] 更简洁,但我知道对于像我这样的新手来说,原始代码可能更容易解码。
    • 是的,第 6 行和第 7 行可以合并为一行。关于星星,您可以通过更改star 选项将它们放在您喜欢的位置,即b(fmt(a3))se(fmt(a2) par star)
    • 我确实尝试过,使用cells("b(fmt(a3))" "se(fmt(a2) star)" "rbse(fmt(a2) par([ ]) star)") star(* 0.05 ** 0.01) ,但重要性的指示似乎遵循最后一次运行的回归。也就是说,普通 SE 和稳健 SE 都得到 2 星,而普通 SE 应该是 2 星,稳健 SE 应该是 1 星。
    • 我不确定你是否可以绕过这个问题。这就是estout 的编码方式,因此我建议您联系其作者。
    【解决方案2】:

    请注意,通过在估计集中包含稳健 p 值,然后使用 cells() 中的 pvalue() 子选项选择它们,可以分别为常规标准误差和稳健标准误差显示适当的显着性指示。这是一个例子:

    sysuse auto
    
    regress price weight mpg
    est sto m1
    regress price weight mpg, vce(robust)
    matrix table = r(table)
    matrix r_se = table[2,1...]
    matrix r_p = table[4,1...]
    estadd matrix r_se: m1
    estadd matrix r_p: m1
    
    regress price weight mpg turn
    est sto m2
    regress price weight mpg turn, vce(robust)
    matrix table = r(table)
    matrix r_se = table[2,1...]
    matrix r_p = table[4,1...]
    estadd matrix r_se: m2
    estadd matrix r_p: m2
    
    esttab m1 m2, mtitle nonumber            ///
       cell(b(fmt(a3))                       ///
            se(par star)                     ///
            r_se(par([ ]) star pvalue(r_p))  ///
            )                                ///
        note(@starlegend)
    
    --------------------------------------------
                           m1              m2   
                    b/se/r_se       b/se/r_se   
    --------------------------------------------
    weight              1.747           3.524   
                      (0.641)**       (0.817)***
                      [0.778]*        [1.159]** 
    mpg                -49.51          -72.87   
                      (86.16)         (81.30)   
                      [95.81]         [97.07]   
    turn                               -395.2   
                                      (122.6)** 
                                      [177.4]*  
    _cons              1946.1         12744.2   
                     (3597.0)        (4760.1)** 
                     [4213.8]        [6429.0]   
    --------------------------------------------
    N                      74              74   
    --------------------------------------------
    * p<0.05, ** p<0.01, *** p<0.001
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 2011-05-19
      • 2016-08-22
      • 1970-01-01
      相关资源
      最近更新 更多