Main Content

dummyvar

説明

D = dummyvar(group) は、0 と 1 が含まれている行列 D を返します。この行列の列は、groupグループ化変数に対するダミー変数です。group の各列は単一のグループ化変数であり、値はカテゴリ水準を示します。group の行は、すべての変数に対する観測値を表します。

すべて折りたたむ

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

Colors = {'Red';'Blue';'Green';'Red';'Green';'Blue'};
Colors = categorical(Colors);

色の種類のそれぞれについてダミー変数を作成します。

D = dummyvar(Colors)
D = 6×3

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

D の列は、Colors の水準に対応します。たとえば、dummyvar の 1 列目は Colors の 1 番目の水準 'Blue' に対応します。

Colors のカテゴリ水準を表示します。

categories(Colors)
ans = 3x1 cell
    {'Blue' }
    {'Green'}
    {'Red'  }

あるプロセスにおける 2 台の機械と 3 人の操縦者の影響が格納されているデータの行列 group を作成します。

machine = [1 1 1 1 2 2 2 2]';
operator = [1 2 3 1 2 3 1 2]';
group = [machine operator]
group = 8×2

     1     1
     1     2
     1     3
     1     1
     2     2
     2     3
     2     1
     2     2

group 内のデータのダミー変数を作成します。

D = dummyvar(group)
D = 8×5

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

D の最初の 2 列は、それぞれ機械 1 および機械 2 の観測値を表します。残りの列は、3 人の操縦者の観測値を表します。

電話の種類の cell 配列と地域コードの数値ベクトルを作成します。

phone = {'mobile';'landline';'mobile';'mobile';'mobile';'landline';'landline'};
codes = [802 802 603 603 802 603 802]';

地域コード データの水準数は (整数 1:802 に対応する 802 ではなく) 2 なので、codes を categorical ベクトルに変換します。

newcodes = categorical(codes);

グループ化変数 phone および newcodes を結合して cell 配列 group を作成します。

group = {phone,newcodes};

group のグループについてダミー変数を作成します。

D = dummyvar(group)
D = 7×4

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

D の最初の 2 列は電話の種類に対応し、最後の 2 列は地域コードに対応します。

ダミー変数を作成し、元のデータに復号化します。

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

colorsOriginal = ["red";"blue";"red";"green";"yellow";"blue"];
colorsOriginal = categorical(colorsOriginal)
colorsOriginal = 6x1 categorical
     red 
     blue 
     red 
     green 
     yellow 
     blue 

categorical ベクトルのクラスを調べます。

classes = categories(colorsOriginal);

関数 dummyvar を使用して、色の種類のそれぞれにダミー変数を作成します。

dummyColors = dummyvar(colorsOriginal)
dummyColors = 6×4

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

関数 onehotdecode を使用して、2 番目の次元のダミー変数を復号化します。

colorsDecoded = onehotdecode(dummyColors,classes,2)
colorsDecoded = 6x1 categorical
     red 
     blue 
     red 
     green 
     yellow 
     blue 

復号化された変数は、元の色の種類と一致します。

入力引数

すべて折りたたむ

グループ化変数。単一の変数内の水準を表す正の整数ベクトルまたは categorical 列ベクトル、1 つ以上のグループ化変数が格納されている cell 配列、または複数の変数内の水準を表す正の整数の行列を指定します。

group が categorical ベクトルである場合、グループおよびその順序は group に適用した関数 categories の出力と一致します。group が数値ベクトルである場合、dummyvar はグループおよびその順序は 1:max(group) であると仮定します。この点において、dummyvar は数値グループ化変数を grp2idx と異なる方法で扱います。グループ化変数内のグループの順序の詳細については、グループ化変数を参照してください。

例: [2 1 1 1 2 3 3 2]'

例: {Origin,Cylinders}

データ型: single | double | categorical | cell

出力引数

すべて折りたたむ

ダミー変数。n 行 s 列の数値行列として返されます。n は group の行数、s は group の各列の水準数の合計です。D の列は左から右に、group の 1 番目の列から作成されたダミー変数、group の 2 番目の列から作成されたダミー変数 (以下同様) となります。

データ型: single | double

ヒント

  • ダミー変数は、回帰分析および ANOVA でカテゴリカル予測子の値を示すために使用されます。

  • dummyvar は、groupNaN 値および未定義のカテゴリカル水準を欠損データとして扱い、DNaN 値を返します。

  • 1 の列が行列 D に作成される場合、生成される行列 X = [ones(size(D,1),1) D] はランク落ちとなります。group に複数の列がある場合、group の任意の列から生成されるダミー変数の合計は必ず 1 の列になるので、行列 D 自体はランク落ちになります。通常、回帰および ANOVA 計算は、group の列により生成されたダミー変数の各グループから 1 つのダミー変数を削除する (削除された列の係数をゼロに暗示的に設定する) ことにより、この問題に対応します。

  • group が数値ベクトルであり、水準が整数 1:max(group) に厳密には対応しない場合、はじめに categorical を使用してデータを categorical ベクトルに変換します。その後、結果を dummyvar に渡すことができます。たとえば、複数のグループ化変数からのダミー変数の作成を参照してください。

代替機能

あるいは onehotencode を使用して、データ ラベルを符号化します。以下の場合、dummyvar の代わりに、onehotencode を使用することを検討してください。

  • categorical データ ラベルの table を符号化

  • データ ラベルの符号化のために拡張する次元を指定

拡張機能

バージョン履歴

R2006a より前に導入