使用Stata中定义的切割点创建分位数类别变量

时间:2015-02-23 22:31:49

标签: categories stata quantile

我正在尝试使用不同的分位数水平创建指标变量。我正在创建一个包含与分数对应的类别的变量。对于一个变量,我使用的代码是

xtile PH_scale = PH, nq(4)
tab PH_scale, gen(PH_scale_)

另外,我知道如果我想使用自己的切割点而不是默认值(例如nq(4)),我可以使用

来定义自己的切割点
input class
xtile PH_scale = PH, cutpoint(class)

但是有几个变量我想以不同的方式定义切点。

通常,切点的工作方式如下:

(−∞, x[25] ], (x[25], x[50] ], (x[50], x[75] ], (x[75], +∞)
where x[25], x[50], and x[75] are, respectively, the 25th, 50th (median), and 75th percentiles

和Stata将自动为每个间隔分配数字(例如,1到(-∞,x [25]],2到(x [25],x [50]]等等)

然而,我想要的是

 Assign category 1 to values located in (−∞, x[25] ] AND (x[75], +∞)
 Assign category 2 to values located in (x[25], x[50] ] AND (x[50], x[75] ]

我希望我能够清楚地解释我的问题。我不确定是否可以使用xtile命令执行此操作。任何其他可以解决这个问题的方法都是受欢迎的。

1 个答案:

答案 0 :(得分:1)

之后

xtile PH_scale = PH, nq(4)

这很简单replace

replace PH_scale = cond(inlist(PH_scale, 1, 4), 1, 2) 

或者,直接创建百分位数

_pctile PH, nq(4) 
gen PH_scale = cond(PH < r(r1) | PH > r(r3), 1, 2) if PH < . 

请注意,指标变量被广泛定义为值为1和0的指标变量,但两种原则都是相同的。