Stata 如何创建一个包含普通和稳健标准错误的表?
我经常在出版物中看到回归表,其中普通标准误差报告在括号中,稳健标准误差报告在普通标准误差下面的括号中。这些表格还包括括号/方括号旁的星号,表示统计意义 创建这样的回归报告最明智的方法是什么 到目前为止,我一直在Stata中使用estout包。对于一个给定的模型,我可以有一列带有普通标准误差,另一列带有稳健误差 例如,使用estout,我可以执行以下操作:Stata 如何创建一个包含普通和稳健标准错误的表?,stata,Stata,我经常在出版物中看到回归表,其中普通标准误差报告在括号中,稳健标准误差报告在普通标准误差下面的括号中。这些表格还包括括号/方括号旁的星号,表示统计意义 创建这样的回归报告最明智的方法是什么 到目前为止,我一直在Stata中使用estout包。对于一个给定的模型,我可以有一列带有普通标准误差,另一列带有稳健误差 例如,使用estout,我可以执行以下操作: eststo: qui reg ROE duality eststo: qui reg ROE duality, vce(cluster fi
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)
上述代码段生成:
--------------------------------------------
(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处的统计显著性指示仅用于此处的说明,当然不反映惯例。您只需手动添加稳健标准误差:
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
您只需手动添加鲁棒标准错误:
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
请注意,通过将稳健p值包括在估计集中,然后使用单元格内的PVValue子选项选择它们,可以分别为常规标准误差和稳健标准误差显示适当的显著性指示。以下是一个例子:
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
请注意,通过将稳健p值包括在估计集中,然后使用单元格内的PVValue子选项选择它们,可以分别为常规标准误差和稳健标准误差显示适当的显著性指示。以下是一个例子:
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
谢谢珍珠!这与我的想法非常接近,但由于SEs也决定了统计显著性的水平,是否有可能在SEs处显示显著性而不是点估计值?我注意到第6行和第7行可以通过使用矩阵rbse=regtab[2,1…]更简洁,但我明白,对于像我这样的新手来说,原始代码可能更容易解码。是的,第6行和第7行可以合并为一行。关于恒星,你可以通过改变星选项,即BFMTA3和SEFMTA2 PAR星来得到你喜欢的地方。我尝试过,使用CelsBFMTA3 SEFMTA2星RbSefMtA2 PA[]星星* 0.05 ** 0.01,但是意义的指示似乎遵循最后一次RAND回归之一。也就是说,普通SE和健壮SE都有两颗星,而普通SE应该有两颗星,健壮SE应该有一颗星。我不确定你是否可以绕过这个问题。这就是estout的编码方式,所以我建议您联系它的作者。谢谢Pearly!这与我的想法非常接近,但由于SEs也决定了统计显著性的水平,是否有可能在SEs处显示显著性而不是点估计值?我注意到第6行和第7行可以通过使用矩阵rbse=regtab[2,1…]更简洁,但我明白,对于像我这样的新手来说,原始代码可能更容易解码。是的,第6行和第7行可以合并为一行。关于恒星,你可以通过改变星选项,即BFMTA3和SEFMTA2 PAR星来得到你喜欢的地方。我尝试过,使用CelsBFMTA3 SEFMTA2星RbSefMtA2 PA[]星星* 0.05 ** 0.01,但是意义的指示似乎遵循最后一次RAND回归之一。也就是说,普通SE和健壮SE都有两颗星,而普通SE应该有两颗星,健壮SE应该有一颗星。我不确定你是否可以绕过这个问题。这就是estout的编码方式,因此我建议您联系其作者。