Stata tabstat更改订单/排序?

raj*_*jay 4 statistics latex summary stata output

tabstat在Stata中使用,并使用estpostesttab输出到LaTeX.我有

tabstat
Run Code Online (Sandbox Code Playgroud)

按组显示统计信息.例如,

tabstat assets, by(industry) missing statistics(count mean sd p25 p50 p75) 
Run Code Online (Sandbox Code Playgroud)

我的问题是tabstat(或其他Stata命令)是否有办法显示按平均值排序的输出,以便那些具有更高平均值的类别将位于顶部.默认情况下,Stata按industry我使用时的字母顺序显示tabstat.

Maa*_*uis 5

我会看看egenmoreSSC上的包。您可以通过输入 Stata 来获取该包ssc install egenmore。特别是,我会查看axis()帮助文件中的条目egenmore。其中包含一个完全符合您要求的示例。

  • 请注意,Maarten 的答案实际上与我的相同,就“axis()”背后的主要思想而言,是根据其他一些变量的定量值对类别进行排序(以及就我所写的而言)。我更长的答案阐明了整个逻辑。 (2认同)

Nic*_*Cox 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
Run Code Online (Sandbox Code Playgroud)

Make这就像你的变量industry:它是一个字符串变量,所以在表格中,Stata倾向于按字母(字母数字)顺序显示它.

解决方法有几个简单的步骤,一些是可选的.

计算要排序的变量. egen在这里经常很有用.

 . egen mean_mpg = mean(mpg), by(Make)
Run Code Online (Sandbox Code Playgroud)

将这些值映射到具有不同整数值的变量.由于两个组可能具有相同的均值(或其他汇总统计量),因此请确保断开原始字符串变量的关系.

 . egen group = group(mean_mpg Make)
Run Code Online (Sandbox Code Playgroud)

创建此变量,使其具有值1,具有最低平均值(或其他汇总统计量),2表示下一个最低值,依此类推.如果需要相反的顺序,就像在这个问题中一样,翻转分组变量.

 . replace group = -group
 (74 real changes made)
Run Code Online (Sandbox Code Playgroud)

这个新变量存在一个问题:原始字符串变量的值在这里Make无处可见.labmask(之后从Stata Journal网站安装search labmask)是这里的帮手.我们使用原始字符串变量的值作为新变量的值标签.(这个想法是值标签成为整数变量所穿的"掩码".)

 . labmask group, values(Make)
Run Code Online (Sandbox Code Playgroud)

(可选)处理新整数变量的变量标签.

 . label var group "Make"
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用新变量的类别进行制表.

 . 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
 -------------------
Run Code Online (Sandbox Code Playgroud)

注意:其他策略有时候更好或更好.

  • 如果您collapse的数据是新数据集,那么您可以随意使用sort它.

  • graph bar并且graph dot善于在组上显示摘要统计信息,并且可以直接调整排序顺序.