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

create quantile category variables using defined cut-points in Stata

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

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 命令执行此操作。欢迎任何其他可以解决此问题的方法。

之后
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 的变量,但两种方式的原理都是相同的。