我想使用esttab
(ssc install estout
)按组生成汇总统计信息,其中包含平均差异和显着性的列。使用estpost
,summarize
和ttest
生成这两个表非常容易,并手动组合,但我希望自动完成整个过程。
以下代码生成所需表的两个组件。
sysuse auto, clear
* summary statistics by group
eststo clear
by foreign: eststo: quietly estpost summarize ///
price mpg weight headroom trunk
esttab, cells("mean sd") label nodepvar
* difference in means
eststo: estpost ttest price mpg weight headroom trunk, ///
by(foreign) unequal
esttab ., wide label
我可以打印两张桌子并将其粘贴到一张桌子上。
* can generate similar tables and append horizontally
esttab, cells("mean sd") label
esttab, wide label
* manual, cut-and-paste solution
-------------------------------------------------------------------------------------------------------
(1) (2) (3)
mean sd mean sd
-------------------------------------------------------------------------------------------------------
Price 6072.423 3097.104 6384.682 2621.915 -312.3 (-0.44)
Mileage (mpg) 19.82692 4.743297 24.77273 6.611187 -4.946** (-3.18)
Weight (lbs.) 3317.115 695.3637 2315.909 433.0035 1001.2*** (7.50)
Headroom (in.) 3.153846 .9157578 2.613636 .4862837 0.540** (3.30)
Trunk space (.. ft.) 14.75 4.306288 11.40909 3.216906 3.341*** (3.67)
-------------------------------------------------------------------------------------------------------
Observations 52 22 74
-------------------------------------------------------------------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001
似乎我应该能够通过一次esttab
调用获得所需的表格而不需要剪切和粘贴,但我无法理解。有没有办法生成所需的表而无需手动剪切和粘贴?
我更喜欢输出一个LaTeX表,但任何消除剪切和粘贴的东西都是一大步,甚至是通过分隔的文本文件。
答案 0 :(得分:8)
如果您仍想使用esttab,可以使用单元格和模式。可以使用以下代码复制原始帖子中的表:
sysuse auto, clear
eststo domestic: quietly estpost summarize ///
price mpg weight headroom trunk if foreign == 0
eststo foreign: quietly estpost summarize ///
price mpg weight headroom trunk if foreign == 1
eststo diff: quietly estpost ttest ///
price mpg weight headroom trunk, by(foreign) unequal
esttab domestic foreign diff, ///
cells("mean(pattern(1 1 0) fmt(2)) sd(pattern(1 1 0)) b(star pattern(0 0 1) fmt(2)) t(pattern(0 0 1) par fmt(2))") ///
label
产生
-----------------------------------------------------------------------------------------------------
(1) (2) (3)
mean sd mean sd b t
-----------------------------------------------------------------------------------------------------
Price 6072.42 3097.10 6384.68 2621.92 -312.26 (-0.44)
Mileage (mpg) 19.83 4.74 24.77 6.61 -4.95** (-3.18)
Weight (lbs.) 3317.12 695.36 2315.91 433.00 1001.21*** (7.50)
Headroom (in.) 3.15 0.92 2.61 0.49 0.54** (3.30)
Trunk space (.. ft.) 14.75 4.31 11.41 3.22 3.34*** (3.67)
-----------------------------------------------------------------------------------------------------
Observations 52 22 74
-----------------------------------------------------------------------------------------------------
答案 1 :(得分:3)
我认为通过esttab
(来自estout
的{{1}}包)可以做到这一点,但我有{{1}的解决方案(还有ssc
)和listtab
。这里的表与我上面提到的表略有不同,但这种方法足够通用,你可以修改它以满足你的需要。
此解决方案还使用LaTeX的ssc
包。
postfile
这产生以下结果。
答案 2 :(得分:1)
选择的答案很好,但有点减少。只有estpost ttest才能达到相同的效果。
sysuse auto, clear
estpost ttest price mpg weight headroom trunk, by(foreign)
esttab, cells("mu_1 mu_2 b(star)"
输出如下:
mu_1 mu_2 b
c_score 43.33858 42.034 1.30458***
nc_a4_17 4.007524 3.924623 .0829008*