リンク
意外に知らなかった。上記リンクを参照に。
ダミー変数とは
ダミー変数とは、\(1\)と\(0\)の値をとる変数のことで、\(1\)は何かが当てはまることを意味する。例えば、年齢が\(25\)歳未満、性別が男性、「非常に多い」のカテゴリーなど。
ダミー変数は、指標変数とも呼ばれる。Stataでは因子変数表記(i.変数のこと)を使えば、ほとんどの場合、ダミー変数を作る必要はない。因子変数を用いることができない場合は、generateでダミー変数を\(1\)つずつ作り、tabulateでダミーのセットを一度に確認することができる。
ダミー変数を作らず因子変数表記を用いる場合
これは簡単で、変数にi.をつければ良い。
i.var
Likert尺度で測られた幸福の基準の変数がhappyだとして(1: 幸せでない、2: あまり幸せでない、3: 普通、4: まあまあ幸せ、5: とても幸せ)、これを解析に代入したい場合、
regress outcome exposure i.happy ...
とする。i.をつけないとhappyは連続値として扱われる。この場合、referenceとなるのはhappy = 1である「1: 幸せでない」になる。これを「3:普通」をreferenceにしたいなら、
regress outcome exposure ib3.happy ...
とする。また、happy = 2の人だけを解析したい場合は、
reg outcome exposure 2.happy ...
とすると良い。i.やこの表記も付けた変数はもちろんoutcomeやexposureとして扱える。interaction 交互作用も用いることができる。
reg outcome exposure i.happy##c.var
c.は連続値 (continuous)であることを表す。i.もc.も付けない場合、Stataはデフォルトで変数を連続値(c.)として扱う。
ダミー変数の作成方法
解析の種類によっては、i.が使えないことがある。例えばコマンドparamedではi.を付けた変数を投入できない。
次のようにダミー変数を作成することもできる。
gen(erate) young = 0
replace young = 1 if age < 25
replace young = . if missing(age)
Stataは欠損値を正の無限大として扱うので、”age<25″という式は年齢が欠損している場合、欠損値ではなく\(0\)と評価される(式が”age>25″であれば、年齢が欠落しているとき式は\(1\)と評価される)。あるいは
gen(erate) young = (age<25)
ともできる。この場合、
gen(erate) young = age<25 if !missing(age)
とする必要はない。
ダミー変数生成のいくつかの例
いくつか例が挙げられていた。
generate male = sex==1
generate top = answer=="very much"
generate eligible = sex=="male" & (age>55 | (age>40 & enrolled)) if !missing(age)
上の行では、enrolledはそれ自体がダミー変数で、\(0\)と\(1\)の値をとる変数である。”enrolled==1″と入力することもできるが、”& enrolled”と入力すれば十分である。\(1\)を真、\(0\)を偽と返すように、Stataは\(1\)が真、\(0\)が偽を意味すると仮定している。
tab(ulate)を用いてダミー変数を作成する方法
generate()オプションを付けてtabulateを実行すると、ダミー変数の全セットが生成される。例えば変数groupが\(1, 2, 3\)という値をとるとする。
tabulate group
と入力すると、groupがこれらの値のそれぞれを何回取るかの頻度表が表示される。もし
tabulate group, generate(g)
とすると、表が表示され、かつtabulateが変数名g1, g2, g3を作成し、その値が\(1\)と\(0\)であることを示す。ここではダミー変数の名前を”g”としたが、好きな名前をつけて大丈夫。このコマンドは元となる変数が連続値や文字変数でも用いることができる。
関連リンク
データ操作の基本
変数の確認方法(one/twoway-tabulate)
tabstatの使い方、カテゴリーごとの要約量について
カテゴリー変数の作成
コメント