Main Content

ダミー変数

このトピックでは、ダミー変数を紹介します。分類および回帰問題でソフトウェアによってダミー変数が作成される方法と、関数 dummyvar を使用してダミー変数を作成する方法を説明します。

ダミー変数とは

分類と回帰解析を実行するとき、連続的 (定量的) 予測子変数とカテゴリカル (定性的) 予測子変数の両方が必要になることがよくあります。カテゴリカル変数は、数値配列として含めてはなりません。数値配列には順序と大きさがあります。カテゴリカル変数は順序は持つことができますが (順序変数などの場合)、大きさはありません。数値配列を使用すると、カテゴリ間に既知の "距離" があると想定されてしまいます。カテゴリカル予測子は、ダミー変数として使用するのが適切です。ダミー変数を定義するには、0 と 1 の値を持つ指標変数を使用します。

以降のセクションで説明するように、解析のタイプに基づいて 4 つのスキームのうち 1 つがソフトウェアによって選択され、ダミー変数が定義されます。たとえば、CoolCoolerCoolest という 3 つのカテゴリを持つカテゴリカル変数を考えてみます。

完全なダミー変数

カテゴリごとに 1 つずつ、3 つのダミー変数を使用して、3 つのカテゴリを持つカテゴリカル変数を表します。

X0 は、Cool に対しては値が 1、それ以外については値が 0 のダミー変数です。X1 は、Cooler に対しては値が 1、それ以外については値が 0 のダミー変数です。X2 は、Coolest に対しては値が 1、それ以外については値が 0 のダミー変数です。

基準グループを使用したダミー変数

3 つのカテゴリを持つカテゴリカル変数を、基準グループを持つ 2 つのダミー変数を使用して表します。

X0 を使用せずに、X1 と X2 だけで CoolCoolerCoolest を区別することができます。Cool の観測値は、どちらのダミー変数も 0 になっています。すべての変数の値が 0 で表されるカテゴリは "基準グループ" と呼ばれています。

順序付けされたカテゴリカル変数のダミー変数

カテゴリの数学的順序が Cool < Cooler < Coolest であると仮定します。この符号化方式は、1 および –1 の値を使用します。上位のカテゴリにはより多くの 1 を使用して、順序を示します。

X1 は、CoolerCoolest に対しては値が 1、Cool に対しては値が –1 のダミー変数です。X2 は、Coolest に対しては値が 1、それ以外については値が –1 のダミー変数です。

カテゴリカル変数に数学的順序があることを示すには、関数 categorical の名前と値のペアの引数 'Ordinal' を使用します。

エフェクト コーディングで作成されたダミー変数

エフェクト コーディングでは、1、0、および –1 を使用してダミー変数を作成します。エフェクト コーディングでは、基準グループを使用したダミー変数のように値 0 を使用して基準グループを表すのではなく、–1 を使用して最後のカテゴリを表します。

ダミー変数の作成

ダミー変数の自動作成

Statistics and Machine Learning Toolbox™ には、カテゴリカル予測子を受け入れる分類および回帰近似関数が複数あります。いくつかの近似関数は、カテゴリカル予測子を処理するためのダミー変数を作成します。

カテゴリカル予測子の特定について、近似関数の既定の動作は以下のとおりです。

  • 予測子データがテーブル内にある場合、関数は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列または文字ベクトルの cell 配列のいずれかである場合に、変数を categorical であると見なします。決定木を使用する近似関数は、順序付けされた categorical ベクトルを連続変数と仮定します。

  • 予測子データが行列の場合、すべての予測子が連続的であると見なされます。

他の予測子をカテゴリカル予測子として指定するには、名前と値のペアの引数 'CategoricalPredictors' または 'CategoricalVars' を使用してそれらを指定します。

近似関数は、特定されたカテゴリカル予測子を次のように処理します。

ダミー変数の手動作成

この例では、関数dummyvarを使用して独自のダミー変数計画行列を作成する方法を説明します。この関数はグループ化変数を受け入れ、0 と 1 が含まれている行列を返します。この行列の列は、グループ化変数に対するダミー変数です。

性別を指定して、カテゴリカル データの列ベクトルを作成します。

gender = categorical({'Male';'Female';'Female';'Male';'Female'});

gender についてダミー変数を作成します。

dv = dummyvar(gender)
dv = 5×2

     0     1
     1     0
     1     0
     0     1
     1     0

dv の行数は gender の行数と同じ 5 行です。また、列数は、一意のグループ FemaleMale に対応して 2 列です。列の順序は gender のレベルの順序に対応しています。categorical 配列の場合、既定の順序はアルファベットの昇順です。順序をチェックするには、関数categoriesを使用します。

categories(gender)
ans = 2x1 cell
    {'Female'}
    {'Male'  }

ダミー変数を回帰モデルで使用するには、いずれかの列を削除する (基準グループを作成する) か、切片の項を使用せずに回帰モデルを近似しなければなりません。この例では、2 つの性別を表すのに必要なダミー変数は 1 つだけです。完成している計画行列 dv に切片の項を追加するとどうなるか見てみましょう。

X = [ones(5,1) dv]
X = 5×3

     1     0     1
     1     1     0
     1     1     0
     1     0     1
     1     1     0

rank(X)
ans = 2

切片の項がある計画行列はフル ランクではなく、可逆になりません。このような線形依存性が存在するため、切片の項がある回帰モデルで c 個のカテゴリがある場合、カテゴリカル変数は c – 1 個の指標変数で表します。

参考

|

関連するトピック