
統計解析や機械学習でよく耳にする「ダミー変数」。
このダミー変数の意味や使い方を正しく理解することは、データ分析や予測モデルの構築において非常に重要です。
この記事では、初心者の方にもわかりやすいように、ダミー変数とは何か、なぜ必要なのか、を具体例豊富に解説していきます!
ダミー変数ってそもそも何?
ダミー変数とは、「カテゴリー(質的データ)を数値に変換したもの」です。
- 「カテゴリー(質的データ)」=数字で表せない属性や種類のこと。たとえば、性別、地域、職業など。
- 「数値に変換」=コンピュータが計算できるように、0と1などの数字で表現すること
具体例:性別で考える
例えば、顧客データに「性別」という項目があったとします。
- 元のデータ:「男性」「女性」
- ダミー変数に変換:男性=1、女性=0(または逆でもOK)
このように、文字や言葉で表されているカテゴリーを、0と1の数値に置き換えたものがダミー変数なんです。
ダミー変数は、主に回帰分析や機械学習で使われ、カテゴリー情報を数値として扱えるようにする手法として活用されます。
なぜダミー変数が必要なの?
コンピュータは基本的に数字しか計算できません。
例えば「東京」「大阪」「福岡」という地域名をそのまま分析に使おうとしても、コンピュータは「東京って何?」となってしまいます。
そこで、これらを数値に変換する必要があるのですが、単純に「東京=1、大阪=2、福岡=3」としてしまうと問題が起きます。
単純な数値化の問題点
「東京=1、大阪=2、福岡=3」と番号をつけると、コンピュータは「福岡は東京の3倍」のように、存在しない大小関係を勝手に解釈してしまいます。
でも実際は、地域に大小関係はありませんよね?
ダミー変数なら大小関係が生まれない
ダミー変数では、各カテゴリーを0と1だけで表現します。
- 東京=1、それ以外=0
- 大阪=1、それ以外=0
- 福岡=1、それ以外=0
こうすることで、カテゴリー間に順序や大小関係を持たせずに、数値として扱えるようになります。
ダミー変数の作り方
ダミー変数の作成方法は「カテゴリー→複数の列→0と1」というシンプルな流れで行います。
ここでは地域別の売上を分析する例を使って、ステップごとにみていきましょう。
例:地域情報をダミー変数化する場合
ステップ1:元のデータを確認する
まずは分析したいカテゴリーデータを確認します。
| 顧客ID | 地域 | 売上 |
|---|---|---|
| 001 | 東京 | 50万円 |
| 002 | 大阪 | 35万円 |
| 003 | 福岡 | 40万円 |
| 004 | 東京 | 55万円 |
ステップ2:カテゴリーの数だけ列を作る
「地域」には3つのカテゴリー(東京、大阪、福岡)があるので、基本的には3つの列を作ります。
ただし、実際にはダミー変数の罠(後述)を避けるため、「カテゴリー数−1個の列」を作るのが一般的です。
ステップ3:該当するカテゴリーに1、それ以外に0を入れる
各行について、該当する地域の列に1を、それ以外に0を入れます。
| 顧客ID | 地域_東京 | 地域_大阪 | 売上 |
|---|---|---|---|
| 001 | 1 | 0 | 50万円 |
| 002 | 0 | 1 | 35万円 |
| 003 | 0 | 0 | 40万円 |
| 004 | 1 | 0 | 55万円 |
この例では「福岡」の列を作らず、東京=0かつ大阪=0の時は福岡とわかるようにしています。
ステップ4:実際の作成方法
ダミー変数は手作業でも作れますが、普通はExcelやPython、Rなどのツールを使います。
- Excelの場合:IF関数を使って「=IF(B2="東京",1,0)」のように記述
- Pythonの場合:pandasライブラリの「pd.get_dummies()」関数を使えば一発で作成できます
- Rの場合:「model.matrix()」関数や「fastDummies」パッケージが便利
ダミー変数の罠:多重共線性に注意
ダミー変数を作る時、実はすべてのカテゴリーに対して列を作ってはいけません。
これを「ダミー変数の罠(Dummy Variable Trap)」といいます。
何が問題なのか?
例えば、性別で「男性」「女性」の2つのカテゴリーがあるとします。
もし両方の列を作ると――
| 顧客ID | 性別_男性 | 性別_女性 |
|---|---|---|
| 001 | 1 | 0 |
| 002 | 0 | 1 |
| 003 | 1 | 0 |
一見問題なさそうですが、実は「性別_男性」と「性別_女性」の合計は必ず1になることにお気づきでしょうか?
これは「性別_女性=1−性別_男性」という関係が常に成り立つことを意味します。
なぜこれが問題?
この状態を多重共線性(たじゅうきょうせんせい)といい、統計モデルが正しく計算できなくなる原因になります。
複数の変数が完全に関連しあっていると、「どの変数が本当に影響しているのか」が判断できなくなるのです。
解決方法:1つ減らす
解決方法は簡単で、カテゴリー数−1個のダミー変数を作るだけです。
| 顧客ID | 性別_男性 |
|---|---|
| 001 | 1 |
| 002 | 0 |
| 003 | 1 |
この場合、「性別_男性=0」の時は自動的に女性だとわかります。
この省略されたカテゴリー(ここでは女性)を基準カテゴリーまたは参照カテゴリーと呼びます。
ビジネスや日常でのダミー変数活用例
ダミー変数は、ビジネスや研究の様々な場面で役立っています。
ここでは、代表的な活用シーンを具体的にご紹介します。
売上予測モデル
商品の売上を予測する際、地域や季節、曜日などのカテゴリー情報をダミー変数化して使います。
たとえば「東京」「大阪」「福岡」という地域情報をダミー変数にすることで、地域ごとの売上傾向の違いを数値モデルに組み込むことができます。
これにより、精度の高い売上予測が可能になります。
不動産価格の分析
不動産の価格分析では、「駅からの距離」「築年数」といった数値データに加えて、「学区」や「建物タイプ(マンション、一戸建て)」などのカテゴリー情報も重要です。
これらをダミー変数化することで、「このエリアだと価格が○○万円高くなる」といった分析が可能になります。
顧客の購買行動分析
顧客の「職業」「年齢層」「居住地域」などをダミー変数化し、購買行動との関係を分析します。
例えば「会社員」「自営業」「学生」という職業カテゴリーをダミー変数にすることで、職業ごとの購買傾向の違いを定量的に把握できます。
マーケティング効果測定
広告キャンペーンの効果を測定する際、「実施前」「実施後」という時期をダミー変数化したり、「A広告」「B広告」「C広告」という種類をダミー変数化します。
これにより、どの施策がどれだけ効果があったかを統計的に評価できます。
医療研究
医療分野では、患者の「性別」「喫煙習慣の有無」「既往歴の有無」などをダミー変数化し、治療効果や病気のリスク要因を分析します。
例えば「喫煙あり=1、なし=0」とすることで、喫煙が健康にどの程度影響するかを数値的に評価できます。
ダミー変数の注意点
ダミー変数は便利な手法ですが、使い方を誤ると誤解や間違った分析につながることがあります。
ここでは、特に注意すべきポイントをまとめます。
カテゴリー数−1個作るのが基本
前述の通り、多重共線性を避けるため、カテゴリー数より1つ少ないダミー変数を作るのが基本です。
ただし、機械学習の一部の手法(決定木系など)では全てのカテゴリーを使っても問題ない場合もあります。
順序がある場合は順序変数として扱う
「低い」「中程度」「高い」のように、カテゴリーに明確な順序がある場合は、ダミー変数ではなく順序変数(1、2、3など)として扱う方が適切な場合があります。
ダミー変数にすると順序情報が失われてしまうためです。
基準カテゴリーの選び方で解釈が変わる
どのカテゴリーを基準(省略するカテゴリー)にするかで、分析結果の解釈が変わります。
一般的には、最も一般的なカテゴリーや効果がないと想定されるカテゴリー(例:プラセボ群)を基準にすることが多いです。
カテゴリーが多すぎる場合の対処
カテゴリーが何十個もある場合、ダミー変数も何十個も必要になり、モデルが複雑になりすぎます。
この場合は、似たカテゴリーをまとめる、出現頻度の低いカテゴリーを「その他」にまとめるなどの工夫が必要です。
欠損値がある場合の扱い
元データにカテゴリー情報が欠けている場合、どう扱うか事前に決めておく必要があります。
「欠損」という新しいカテゴリーを作る、その行を除外する、最頻値で埋めるなど、状況に応じた対処が求められます。
まとめ
ダミー変数はデータ分析における重要な手法で、正しく理解することでカテゴリーデータを効果的に活用できます。
以下にポイントをまとめます。
- ダミー変数は「カテゴリー情報を0と1の数値に変換したもの」
- コンピュータが文字情報を計算できるようにするために必要
- カテゴリー間に存在しない大小関係を生まないための工夫
- 作成時はカテゴリー数−1個のダミー変数を作るのが基本(多重共線性を避けるため)
- 売上予測、不動産分析、マーケティングなど幅広い分野で活用されている
- 順序のあるカテゴリーや、カテゴリー数が多い場合は別の対処法も検討する
ダミー変数の理解は、統計を使ったデータ分析や機械学習モデル構築の第一歩です。
ぜひ今回の内容を参考に、実際のビジネスや研究で活用してくださいね!













