分位数やパーセントタイルで変数を作成
pctileやxtileを用いる。リンクはこちら。
https://www.stata.com/manuals/dpctile.pdf
pctileについて
pctileコマンドは以下の様に用いる。
pctile qrt1 = myvar, nq(n)
\(n\)には整数を入れる。このコマンドを実行すると”qrt1″という\(n-1\)つの値を有する変数が生成される(変数名は自分で好きなように付けて良い)。この\(n-1\)つはそれぞれ順に既存の変数”myvar”の\(1, 2, \cdots, n-1\)分位を取る値が入る(したがって、”qrt1″の取り得る値は\(n-1\)個である)。以下のようなオプションをつけると、”percent”という変数も同時に生成され、この変数にはそれぞれの分位数が何パーセントになるかが配置されている。
pctile qrt1 = myvar, nq(n) genp(percent)
この”percent”の部分にも好きな変数名を名付けて良い。
xtileについて
上のpctileが分かればそれほど難しくない。これは、連続変数をカテゴリー変数に変換してくれる。例えば、
xtile myvarcat3 = myvar, nq(3)
とすると、”myvar”という変数を三分位に区切ってくれる。
xtileの実例
以下でデータを用いて実例を考える。まずはデータのロード。
use https://www.stata-press.com/data/r17/bp1, clear
これは変数bpだけのシンプルなデータセットである。
これを四分位でカテゴリー変数にするには、
xtile quart = bp, nq(4)
で良い。データを見ると以下のようになる。
list bp quart, sepby(quart)
cutpointsの用い方
引き続き上のデータセットを用いる。xtileコマンドは分位でなく、自分の指定する任意のカットポイントで変数を区切る事ができる。例えば、$$(-\infty, 100], (100, 110], (110, 120], (120, 130], (130, +\infty]$$で変数を区切りたいとする。これを行うには、新しい変数を作り、xtileのcutpointsオプションを使う。
input class
1. 100
2. 110
3. 120
4. 130
5. end
まずinputを入力し、コマンドに順に100, 110, 120, 130, endと入力していく。するとclassという変数が作成される。この上で以下のように入力する。
xtile category = bp, cutpoints(class)
以下で確認。
list bp class category, sepby(category)
xtile cutpointsオプションの応用
このクラス変数は、自分で自由に設定してよい。他の変数の分位数や変数のサブグループから持ってきても良い。例えば、次の新しいデータセットでは血圧”bp”に加えて”case”変数が追加されている。
use https://www.stata-press.com/data/r17/bp2, clear
caseが\(0\)の人のパーセントタイルを全体に適応することができる。そのためにまず”pct”という変数を作成する。
pctile pct = bp if case == 0, nq(4)
次に、この変数をすべての”bp”に当てはめれば良い。つまり、上記のcutpointsオプションを用いれば良い。
xtile category = bp, cutpoints(pct)
gsort -case bp
list bp case category, sepby(category)
途中でgsortで並び替えを行っている。結果は以下。
caseが\(0\)の人の四分位分けを、caseが\(1\)の人だけに当てはめたいなら、ifを用いれば良い。
xtile category = bp if case == 1, cutpoints(pct)
コメント