将边际效应t统计量添加到estout表

时间:2018-07-10 19:04:02

标签: stata

我想将边际效应t统计量添加到estout表(ssc install estout)中。

我可以使用estadd margins添加边际效应系数和标准误差。 但是,margins不会添加t统计信息。

我认为我可以用estadd matrix添加t统计量,但是这段代码无法计算margins_t

webuse grunfeld

eststo clear

regress mvalue c.kstock##c.invest
eststo

estadd margins, dydx(kstock)
estadd matrix margins_t = margins_b :/ margins_se

我只想报告kstock(即,只有一个交互变量)的边际效应:

esttab, cells("b margins_b" "t(par) margins_se(par)")

--------------------------------------
                      (1)             
                   mvalue             
                      b/t margins_b/~e
--------------------------------------
kstock          -.0229636    -.2073908
              (-.0947377)   (.2213873)
invest           6.672997             
               (19.13787)             
c.kstock#c~t    -.0012636             
              (-4.351608)             
_cons            219.3425             
               (2.903506)             
--------------------------------------
N                     200             
--------------------------------------

标准错误版本有效,但我希望使用t统计量。

2 个答案:

答案 0 :(得分:2)

以下对我有用:

webuse grunfeld

eststo clear

eststo m1: regress mvalue c.kstock##c.invest
eststo m2: margins, dydx(kstock) post

esttab m1 m2 using output, replace

type output.txt
--------------------------------------------
                      (1)             (2)   
                   mvalue                   
--------------------------------------------
kstock            -0.0230          -0.207   
                  (-0.09)         (-0.94)   

invest              6.673***                
                  (19.14)                   

c.kstock#c~t     -0.00126***                
                  (-4.35)                   

_cons               219.3**                 
                   (2.90)                   
--------------------------------------------
N                     200             200   
--------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

针对OP评论中的关注问题的修订:

eststo clear

eststo m1: regress mvalue c.kstock##c.invest
estadd local Obs = e(N)

eststo m2: margins, dydx(kstock) post

esttab m1 m2, s(Obs) mtitles("(1)" "") nonumbers noobs


--------------------------------------------
                      (1)                   
--------------------------------------------
kstock            -0.0230          -0.207   
                  (-0.09)         (-0.94)   

invest              6.673***                
                  (19.14)                   

c.kstock#c~t     -0.00126***                
                  (-4.35)                   

_cons               219.3**                 
                   (2.90)                   
--------------------------------------------
Obs                   200                   
--------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

答案 1 :(得分:0)

我的问题中的代码(至少)存在两个问题。

  1. :/是Mata中的元素划分。将matewd用于Stata中的元素划分。 matewd来自Stata技术公告,请使用findit matewd
  2. 按元素划分将不会保留列名,estout使用该列名来正确对齐系数估计值和其他统计信息。

下面的代码解决了原始问题,但需要一些额外的步骤。手动修改表布局可能比采取其他一些步骤要容易。

webuse grunfeld

eststo clear

regress mvalue c.kstock##c.invest
eststo

estadd margins, dydx(kstock)
matrix margins_b = e(margins_b)
matrix margins_se = e(margins_se)
matewd margins_b margins_se margins_t
local colnames : colnames margins_b
matrix colnames margins_t = "`colnames'"
estadd matrix margins_t


esttab, cells("b margins_b" "t(par) margins_t(par)")


// --------------------------------------
//                       (1)             
//                    mvalue             
//                       b/t margins_b/~t
// --------------------------------------
// kstock          -.0229636    -.2073908
//               (-.0947377)  (-.9367782)
// invest           6.672997             
//                (19.13787)             
// c.kstock#c~t    -.0012636             
//               (-4.351608)             
// _cons            219.3425             
//                (2.903506)             
// --------------------------------------
// N                     200             
// --------------------------------------


esttab, cells(b t(par) margins_b margins_t(par))


// -------------------------
//                       (1)
//                    mvalue
//              b/t/margin~t
// -------------------------
// kstock          -.0229636
//               (-.0947377)
//                 -.2073908
//               (-.9367782)
// invest           6.672997
//                (19.13787)


// c.kstock#c~t    -.0012636
//               (-4.351608)


// _cons            219.3425
//                (2.903506)


// -------------------------
// N                     200
// -------------------------