Dummy Coding

Dummy Coding タブでは、カテゴリ変数(名義尺度・順序尺度)を数値のダミー変数(0/1)に変換します。回帰分析や GLM にカテゴリ変数を組み込むための前処理です。

基本的な使い方

Dummy Coding を開く

メニューバーから Data > Dummy Coding... を選択すると、新しい Dummy Coding タブが開きます。

変換を設定する

  1. Dataset ドロップダウンで変換対象のデータセットを選択
  2. 列の設定テーブルで各列の ScaleAction、必要に応じて Reference(参照カテゴリ)を設定
  3. Encoding Preview セクションで、各列の参照カテゴリと生成されるダミー変数の数を確認
  4. Create Dataset をクリック
  5. データセット名を入力して OK をクリック

Encoding Preview では、ユニーク値の数が想定どおりか、表記ゆれやタイプミスで増えていないか、参照カテゴリが意図したものかを確認します。ユニーク値が1つしかない列は変換できず、エラーが表示されます。

このページで使用するデータ

この説明では、5人のアンケートデータ(survey.csv)を使用します。blood_typeeducation がカテゴリ変数です。

nameageblood_typeeducation
Alice28Acollege
Bob35Bgraduate
Carol42Ocollege
Dave31Ahigh_school
Eve26ABgraduate

列の設定

Scale(測定尺度)

尺度説明ダミー変数への変換
nominal名義尺度可能
ordinal順序尺度可能
interval間隔尺度不可(数値としてそのまま使用)
ratio比率尺度不可(数値としてそのまま使用)

順序尺度(ordinal)に設定した列でも、その順序(low → mid → high など)はダミーコーディングに使われません。ダミー変数の生成順も参照カテゴリの初期値もカテゴリ名のアルファベット順で決まります。特定のカテゴリを基準にしたい場合は Reference で選びます。

Scale の初期値は列に設定されている測定尺度です。尺度が未設定の列はデータ型から推論され、string と boolean は nominal、数値と日時は interval になります。詳細は データ型と測定尺度 を参照してください。Scale はドロップダウンで変更できます。設備番号やライン番号のように数値で記録した区分は interval と推論されますが、Scale を nominal に変更するとダミーコーディングできます。

Action(アクション)

アクション説明
Not included出力データセットから除外する
Include as-is列をそのまま出力に含める
Dummy codeダミー変数に変換する(元の列は除外)
Dummy code (keep original)ダミー変数に変換し、元の列も保持する。出力データセットでグラフやクロス集計に元のカテゴリ列を使う場合に選ぶ

Dummy code / Dummy code (keep original) はカテゴリ変数(nominal / ordinal)にのみ選択可能です。boolean 型の列は対象外です1

Reference(参照カテゴリ)

参照カテゴリは、ダミー変数の係数を解釈するときの基準になるグループです。対照群や標準条件、ベースラインなど比較の基準にしたいグループを選ぶと、係数を解釈しやすくなります。

Action で Dummy code または Dummy code (keep original) を選択した列では、Reference ドロップダウンで参照カテゴリを選択できます。初期値はアルファベット順で最初のカテゴリです。

変換の仕組み

k 個のカテゴリから k-1 個のダミー変数を生成し、1つのカテゴリを参照カテゴリ(reference category)として省略します2。この方式は treatment coding(参照カテゴリを基準にした符号化)と呼ばれます。

  1. カテゴリのユニーク値を抽出します3
  2. アルファベット順にソートします
  3. 参照カテゴリを除外します。初期値はアルファベット順で最初のカテゴリで、Reference ドロップダウンで変更できます
  4. 残りの k-1 個のカテゴリに対してダミー変数を生成します
  5. 該当するカテゴリの行は1、それ以外は0になります

変換例

blood_type 列(ユニーク値: A, AB, B, O)を変換する場合:

  • 参照カテゴリ: A(初期値。アルファベット順で最初)
  • 生成されるダミー変数: blood_type_ABblood_type_Bblood_type_O
blood_typeblood_type_ABblood_type_Bblood_type_O
A000
B010
O001
A000
AB100

参照カテゴリ A の行はすべてのダミー変数が0になります。

回帰モデルにダミー変数を投入すると、各ダミー変数の係数は参照カテゴリとの差の推定値です。この例では blood_type_B の係数は、B 型と参照カテゴリ A 型との応答変数の差を推定します。ほかの予測変数を含むモデルでは、それらを一定とした場合の差です。

出力データセット

上のサンプルデータで name を Not included、age を Include as-is、blood_typeeducation を Dummy code に設定した場合の出力です。

ageblood_type_ABblood_type_Bblood_type_Oeducation_graduateeducation_high_school
2800000
3501010
4200100
3100001
2610010

blood_type(4カテゴリ)から3つ、education(3カテゴリ: college, graduate, high_school、参照: college)から2つのダミー変数が生成されています。列名は {元の列名}_{カテゴリ名} の形式で、データ型は int64(0または1)、測定尺度は比率尺度です。回帰や GLM の予測変数にそのまま投入でき、再度ダミーコーディングされることはありません。行数は元のデータセットと同じです。元のデータセットは変更されず、新しい 派生データセット として保存されます。

Next steps

See also

脚注

  1. boolean 型の列は既に 0/1 に相当するため、Include as-is を選択してそのまま使用できます。

  2. k 個すべてのダミー変数を作ると、どの行でもダミー変数の合計が1になります。切片項もすべての行で1なので、両者は線形従属になり、回帰係数を一意に推定できなくなります。1つ省略して k-1 個にすることで、この問題を回避します。

  3. 欠損値はユニーク値のカウントに含まれません。元の列が欠損値の行は、生成されるすべてのダミー変数も欠損値になり、後続の回帰や GLM などで リストワイズ除去 されます。ユニーク値が1つしかない列はダミー変数に変換できません。