我正在尝试使用不同的分位数水平创建指标变量。我正在创建一个包含与分数对应的类别的变量。对于一个变量,我使用的代码是
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
命令执行此操作。任何其他可以解决这个问题的方法都是受欢迎的。
答案 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的指标变量,但两种原则都是相同的。