我在Stata中使用tabstat
,并使用estpost
和esttab
将其输出发送到LaTeX。我有
tabstat
按组显示统计信息。例如,
tabstat assets, by(industry) missing statistics(count mean sd p25 p50 p75)
我的问题是tabstat
(或其他Stata命令)是否有办法显示按平均值排序的输出,以便那些具有更高平均值的类别将位于顶部。默认情况下,当我使用industry
时,Stata会按字母顺序显示tabstat
。
答案 0 :(得分:5)
tabstat
没有提供这样的钩子,但是有一种方法可以解决这样的问题,这种问题很普遍且很容易理解。
您没有提供可重现的示例,因此我们需要一个:
. sysuse auto, clear
(1978 Automobile Data)
. gen Make = word(make, 1)
. tab Make if foreign
Make | Freq. Percent Cum.
------------+-----------------------------------
Audi | 2 9.09 9.09
BMW | 1 4.55 13.64
Datsun | 4 18.18 31.82
Fiat | 1 4.55 36.36
Honda | 2 9.09 45.45
Mazda | 1 4.55 50.00
Peugeot | 1 4.55 54.55
Renault | 1 4.55 59.09
Subaru | 1 4.55 63.64
Toyota | 3 13.64 77.27
VW | 4 18.18 95.45
Volvo | 1 4.55 100.00
------------+-----------------------------------
Total | 22 100.00
Make
这里就像你的变量industry
:它是一个字符串变量,因此在表格中,Stata会倾向于按字母(字母数字)顺序显示它。
解决方法有几个简单的步骤,一些是可选的。
计算要对其进行排序的变量。 egen
在这里通常很有用。
. egen mean_mpg = mean(mpg), by(Make)
将这些值映射到具有不同整数值的变量。由于两个组可能具有相同的均值(或其他汇总统计量),因此请确保断开原始字符串变量的关系。
. egen group = group(mean_mpg Make)
创建此变量,使其具有值1,具有最低平均值(或其他汇总统计量),2表示下一个最低值,依此类推。如果需要相反的顺序,就像在这个问题中一样,翻转分组变量。
. replace group = -group
(74 real changes made)
这个新变量存在问题:原始字符串变量的值(此处为Make
)无处可见。 labmask
(在search labmask
之后从 Stata Journal 网站安装)是这里的帮手。 我们使用原始字符串变量的值作为新变量的值标签。(想法是值标签成为整数变量所穿的“掩码”。)
. labmask group, values(Make)
(可选)在新整数变量的变量标签处工作。
. label var group "Make"
现在我们可以使用新变量的类别进行制表。
. tabstat mpg if foreign, s(mean) by(group) format(%2.1f)
Summary for variables: mpg
by categories of: group (Make)
group | mean
--------+----------
Subaru | 35.0
Mazda | 30.0
VW | 28.5
Honda | 26.5
Renault | 26.0
Datsun | 25.8
BMW | 25.0
Toyota | 22.3
Fiat | 21.0
Audi | 20.0
Volvo | 17.0
Peugeot | 14.0
--------+----------
Total | 24.8
-------------------
注意:其他策略有时候会更好或更好。
如果您将数据collapse
发送到新数据集,则可以sort
随意使用。
graph bar
和graph dot
擅长在群组上显示摘要统计信息,并且可以直接调整排序顺序。
答案 1 :(得分:4)
我会查看SSC上的egenmore
包。您可以通过键入Stata ssc install egenmore
来获取该包。特别是,我会在axis()
的帮助文件中查看egenmore
的条目。这包含一个完全符合您要求的示例。