---
title: Dummy Coding
description: カテゴリ変数（名義尺度・順序尺度）を0/1のダミー変数に変換して、回帰分析や GLM で使用できるようにします。切片との線形従属を避ける k-1 方式を使用します。
priority: 0.6
---

# Dummy Coding {#dummy-coding}

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

## 基本的な使い方 {#basic-usage}

### Dummy Coding を開く {#opening-dummy-coding}

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

### 変換を設定する {#configuring-the-transformation}

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

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

## このページで使用するデータ {#sample-data-used-in-this-page}

この説明では、5人のアンケートデータ（[survey.csv](../shared/files/dummy-coding-survey.csv)）を使用します。`blood_type` と `education` がカテゴリ変数です。

| name  | age | blood_type | education   |
|-------|-----|------------|-------------|
| Alice | 28  | A          | college     |
| Bob   | 35  | B          | graduate    |
| Carol | 42  | O          | college     |
| Dave  | 31  | A          | high_school |
| Eve   | 26  | AB         | graduate    |

## 列の設定 {#column-configuration}

### Scale（測定尺度） {#scale}

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

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

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

### Action（アクション） {#action}

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

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

### Reference（参照カテゴリ） {#reference}

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

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

## 変換の仕組み {#how-it-works}

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

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

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

### 変換例 {#example}

`blood_type` 列（ユニーク値: A, AB, B, O）を変換する場合：

- 参照カテゴリ: `A`（初期値。アルファベット順で最初）
- 生成されるダミー変数: `blood_type_AB`、`blood_type_B`、`blood_type_O`

| blood_type | blood_type_AB | blood_type_B | blood_type_O |
|------------|---------------|--------------|--------------|
| A          | 0             | 0            | 0            |
| B          | 0             | 1            | 0            |
| O          | 0             | 0            | 1            |
| A          | 0             | 0            | 0            |
| AB         | 1             | 0            | 0            |

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

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

[^2]: boolean 型の列は既に 0/1 に相当するため、Include as-is を選択してそのまま使用できます。
[^4]: 欠損値はユニーク値のカウントに含まれません。元の列が欠損値の行は、生成されるすべてのダミー変数も欠損値になり、後続の回帰や GLM などで [リストワイズ除去](concepts-missing-data) されます。ユニーク値が1つしかない列はダミー変数に変換できません。

## 出力データセット {#output-dataset}

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

| age | blood_type_AB | blood_type_B | blood_type_O | education_graduate | education_high_school |
|-----|---------------|--------------|--------------|--------------------|-----------------------|
| 28  | 0             | 0            | 0            | 0                  | 0                     |
| 35  | 0             | 1            | 0            | 1                  | 0                     |
| 42  | 0             | 0            | 1            | 0                  | 0                     |
| 31  | 0             | 0            | 0            | 0                  | 1                     |
| 26  | 1             | 0            | 0            | 1                  | 0                     |

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

## Next steps {#next-steps}

- **[線形回帰分析](linear-regression)** - ダミー変数を使用した回帰分析
- **[一般化線形モデル（GLM）](glm)** - ダミー変数を使用した GLM

## See also {#see-also}

- **[列の型変換](column-type-conversion)** - データ型の変換
