如何在Stata的estout汇总表中显示各子组样本量?
最近我在Stata里用estout命令按子组做汇总统计表,想在表格里显示每个子组的样本量,可是折腾了半天发现用noobs参数只会去掉总观测数,没法展示各子组的counts。下面是我目前的操作和结果:
第一步:用estpost生成统计量
我先运行了以下命令:
. sysuse auto (1978 Automobile Data) . estpost tabstat price mpg rep78, by(foreign) statistics(mean sd) /// columns(statistics) listwise
得到的统计结果是:
Summary statistics: mean sd
for variables: price mpg rep78
by categories of: foreignforeign | e(mean) e(sd)-------------+----------------------
Domestic |
price | 6179.25 3188.969
mpg | 19.54167 4.753312
rep78 | 3.020833 .837666
-------------+----------------------
Foreign |
price | 6070.143 2220.984
mpg | 25.28571 6.309856
rep78 | 4.285714 .7171372
-------------+----------------------
Total |
price | 6146.043 2912.44
mpg | 21.28986 5.866408
rep78 | 3.405797 .9899323
第二步:用esttab生成表格
接着我用esttab输出表格,命令如下:
. esttab, main(mean) aux(sd) nostar unstack noobs nonote nomtitle nonumber
得到的表格里没有各子组的样本量,只有结果:
Domestic Foreign Totalprice 6179.2 6070.1 6146.0
(3189.0) (2221.0) (2912.4)
mpg 19.54 25.29 21.29
(4.753) (6.310) (5.866)
rep78 3.021 4.286 3.406
(0.838) (0.717) (0.990)
解决方案:添加子组样本量
要解决这个问题,其实只需要两步调整:
修改estpost命令,加入count统计量
在statistics()参数里加上count,这样estpost会计算每个子组的样本量:estpost tabstat price mpg rep78, by(foreign) statistics(mean sd count) /// columns(statistics) listwise用esttab展示count统计量
在esttab命令里通过stats()参数指定要展示count,还可以给它加个友好的标签(比如“N”):esttab, main(mean) aux(sd) stats(count, label("N")) nostar unstack nonote nomtitle nonumber
这样生成的表格就会在最后一行显示每个子组的样本量了,示例输出如下:
Domestic Foreign Totalprice 6179.2 6070.1 6146.0
(3189.0) (2221.0) (2912.4)
mpg 19.54 25.29 21.29
(4.753) (6.310) (5.866)
rep78 3.021 4.286 3.406
(0.838) (0.717) (0.990)
N 48 22 70
如果想把样本量放在更显眼的位置(比如子组名称下方),还可以通过esttab的prehead()或posthead()参数来调整,但上面的方法是最直接高效的。
内容的提问来源于stack exchange,提问作者cpage

