Stata:egen rowpctile是一系列值而不是单个百分位值

时间:2017-01-21 18:35:18

标签: stata missing-data percentile

我有一个变量var,其中有许多缺失值,我想要计算第95个百分位,然后使用此值来删除高于第95个百分位数的观察值(对于那些没有遗漏变量的观察值)。

由于缺少很多值,我使用egenrowpctile来计算p(#)百分位,忽略缺失值。但是,当我查看p95值时,它们是一系列不同的值,而不是单个第95百分位值,如下所示:

. egen p95 = rowpctile(var), p(95)

. list p95

     +-----------+
     |       p95 |
     |-----------|
  1. |         . |
  2. |  65.71429 |
  3. |  14.28571 |
  4. |         . |
  5. |         . |
...

我是否错误地使用了该功能,还是有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

rowpctile命令的egen函数为每个观察分别计算变量列表值的百分位数。这里有一些技巧可以让你走上正确的道路。

. sysuse auto, clear
(1978 Automobile Data)

. replace price = . in 1/5
(5 real changes made, 5 to missing)

. summarize price, detail

                            Price
-------------------------------------------------------------
      Percentiles      Smallest
 1%         3291           3291
 5%         3748           3299
10%         3895           3667       Obs                  69
25%         4296           3748       Sum of Wgt.          69

50%         5104                      Mean           6245.493
                        Largest       Std. Dev.      3015.072
75%         6342          13466
90%        11497          13594       Variance        9090661
95%        13466          14500       Skewness       1.594391
99%        15906          15906       Kurtosis       4.555704

. display r(p95)
13466

. generate toobig = price>r(p95)

. list make price if toobig | price==.

     +---------------------------+
     | make                price |
     |---------------------------|
  1. | AMC Concord             . |
  2. | AMC Pacer               . |
  3. | AMC Spirit              . |
  4. | Buick Century           . |
  5. | Buick Electra           . |
     |---------------------------|
 12. | Cad. Eldorado      14,500 |
 13. | Cad. Seville       15,906 |
 27. | Linc. Mark V       13,594 |
     +---------------------------+