メインコンテンツ

designMatrix

固定効果と変量効果の計画行列

説明

D = designMatrix(lme) または D = designMatrix(lme,'Fixed') は、線形混合効果モデル lme の固定効果計画行列を返します。

D = designMatrix(lme,'Random') は、線形混合効果モデル lme の変量効果計画行列を返します。

Dsub = designMatrix(lme,'Random',gnumbers) は、gnumbers の整数で示されているグループ化変数に対応する線形混合効果モデル lme の変量効果計画行列のサブセットを返します。

[Dsub,gnames] = designMatrix(lme,'Random',gnumbers) は、gnumbers の整数に対応するグループ化変数の名前も返します。

すべて折りたたむ

標本データを読み込みます。

load('shift.mat');

このデータは 5 人の作業者が朝、夕方、夜の 3 つのシフトの間に製造した製品から計測された品質目標の特性の偏差を示します。これは作業者をブロックとする乱塊法です。この実験は、シフトの時間によるパフォーマンスへの影響の調査を意図しています。パフォーマンスの測定基準は、目標値からの品質特性の偏差です。このデータは、シミュレーションされたものです。

Shift および Operator はノミナル変数です。

shift.Shift = nominal(shift.Shift);
shift.Operator = nominal(shift.Operator);

シフトの時間によってパフォーマンスに有意差があるかどうかを評価するために、作業者別のランダムな切片をもつ線形混合効果モデルを当てはめます。

lme = fitlme(shift,'QCDev ~ Shift + (1|Operator)');

固定効果の計画行列を表示します。

designMatrix(lme)
ans = 15×3

     1     1     0
     1     0     0
     1     0     1
     1     1     0
     1     0     0
     1     0     1
     1     1     0
     1     0     0
     1     0     1
     1     1     0
     1     0     0
     1     0     1
     1     1     0
     1     0     0
     1     0     1
      ⋮

1 の列は、モデルの定数項を表します。fitlme は参照グループとして夕方シフトを取得し、それぞれが朝シフトと夜シフトを表すように 2 つのダミー変数を作成します。

変量効果の計画行列を表示します。

designMatrix(lme,'random')
ans = 15×5 sparse double matrix (15 nonzeros)
   (1,1)        1
   (2,1)        1
   (3,1)        1
   (4,2)        1
   (5,2)        1
   (6,2)        1
   (7,3)        1
   (8,3)        1
   (9,3)        1
  (10,4)        1
  (11,4)        1
  (12,4)        1
  (13,5)        1
  (14,5)        1
  (15,5)        1

(i,|j|) というインデックスの最初の値 i は観測番号に対応し、|j| はグループ化変数 Operator の水準、つまり作業者番号に対応します。

変量効果の計画行列の完全な表示を示します。

full(designMatrix(lme,'random'))
ans = 15×5

     1     0     0     0     0
     1     0     0     0     0
     1     0     0     0     0
     0     1     0     0     0
     0     1     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     1     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     1     0
     0     0     0     1     0
     0     0     0     0     1
     0     0     0     0     1
     0     0     0     0     1
      ⋮

各列は、グループ化変数 Operator の水準に対応します。

標本データを読み込んで表示します。

load fertilizer.mat;
tbl
tbl=60×4 table
      Soil          Tomato       Fertilizer    Yield
    _________    ____________    __________    _____

    {'Sandy'}    {'Plum'    }        1          104 
    {'Sandy'}    {'Plum'    }        2          136 
    {'Sandy'}    {'Plum'    }        3          158 
    {'Sandy'}    {'Plum'    }        4          174 
    {'Sandy'}    {'Cherry'  }        1           57 
    {'Sandy'}    {'Cherry'  }        2           86 
    {'Sandy'}    {'Cherry'  }        3           89 
    {'Sandy'}    {'Cherry'  }        4           98 
    {'Sandy'}    {'Heirloom'}        1           65 
    {'Sandy'}    {'Heirloom'}        2           62 
    {'Sandy'}    {'Heirloom'}        3          113 
    {'Sandy'}    {'Heirloom'}        4           84 
    {'Sandy'}    {'Grape'   }        1           54 
    {'Sandy'}    {'Grape'   }        2           86 
    {'Sandy'}    {'Grape'   }        3           89 
    {'Sandy'}    {'Grape'   }        4          115 
      ⋮

table tbl には土壌の種類に基づいて土壌が 3 つのブロックに分けられている分割プロット試験のデータが含まれています。土壌の種類は砂質、シルト、および粘土質です。各ブロックは 5 つのプロットに分割され、5 種類のトマトの苗木 (チェリー、エアルーム、グレープ、枝付き、プラム) がランダムにこれらのプロットに割り当てられます。その後、プロット内のトマトの苗木はサブプロットに分割され、それぞれのサブプロットが 4 つの肥料の中の 1 つにより処置されます。このデータは、シミュレーションされたものです。

実用目的でこのデータを ds という名前のデータセット配列に保存し、TomatoSoil および Fertilizer をカテゴリカル変数として定義します。

tbl.Tomato = categorical(tbl.Tomato);
tbl.Soil = categorical(tbl.Soil);
tbl.Fertilizer = categorical(tbl.Fertilizer);

線形混合効果モデルを当てはめます。Fertilizer および Tomato は固定効果変数であり、平均収穫量はブロック (土壌の種類) とブロック内のプロット (土壌の種類の中のトマトの種類) によって独立して変化します。

lme = fitlme(tbl,"Yield ~ Fertilizer * Tomato + (1|Soil) + (1|Soil:Tomato)");

完全な変量効果計画行列を格納して調べます。

D = full(designMatrix(lme,"random"));

行列 D の最初の 3 列には、1 番目のグループ化変数 Soil の 3 つの水準 (LoamySiltySandy) について fitlme が作成した指標変数が含まれています。次の 15 列には、Soil の下で入れ子にされている 2 番目のグループ化変数 Tomato について作成された指標変数が含まれています。これらは、基本的に、Soil の水準を表すダミー変数 (LoamySiltySandy) と Tomato の水準 (CherryGrapeHeirloomPlumVine) の要素ごとの積です。

標本データを読み込んで表示します。

load fertilizer.mat;
tbl
tbl=60×4 table
      Soil          Tomato       Fertilizer    Yield
    _________    ____________    __________    _____

    {'Sandy'}    {'Plum'    }        1          104 
    {'Sandy'}    {'Plum'    }        2          136 
    {'Sandy'}    {'Plum'    }        3          158 
    {'Sandy'}    {'Plum'    }        4          174 
    {'Sandy'}    {'Cherry'  }        1           57 
    {'Sandy'}    {'Cherry'  }        2           86 
    {'Sandy'}    {'Cherry'  }        3           89 
    {'Sandy'}    {'Cherry'  }        4           98 
    {'Sandy'}    {'Heirloom'}        1           65 
    {'Sandy'}    {'Heirloom'}        2           62 
    {'Sandy'}    {'Heirloom'}        3          113 
    {'Sandy'}    {'Heirloom'}        4           84 
    {'Sandy'}    {'Grape'   }        1           54 
    {'Sandy'}    {'Grape'   }        2           86 
    {'Sandy'}    {'Grape'   }        3           89 
    {'Sandy'}    {'Grape'   }        4          115 
      ⋮

table tbl には土壌の種類に基づいて土壌が 3 つのブロックに分けられている分割プロット試験のデータが含まれています。土壌の種類は砂質、シルト、および粘土質です。各ブロックは 5 つのプロットに分割され、5 種類のトマトの苗木 (チェリー、エアルーム、グレープ、枝付き、プラム) がランダムにこれらのプロットに割り当てられます。その後、プロット内のトマトの苗木はサブプロットに分割され、それぞれのサブプロットが 4 つの肥料の中の 1 つにより処置されます。このデータは、シミュレーションされたものです。

TomatoSoil、および Fertilizer をカテゴリカル変数に変換します。

tbl.Tomato = categorical(tbl.Tomato);
tbl.Soil = categorical(tbl.Soil);
tbl.Fertilizer = categorical(tbl.Fertilizer);

線形混合効果モデルを当てはめます。Fertilizer および Tomato は固定効果変数であり、平均収穫量はブロック (土壌の種類) とブロック内のプロット (土壌の種類の中のトマトの種類) によって独立して変化します。

lme = fitlme(tbl,"Yield ~ Fertilizer * Tomato + (1|Soil) + (1|Soil:Tomato)");

2 番目のグループ化変数の変量効果計画行列を計算し、最初の 12 行を表示します。

[Dsub,gname]  = designMatrix(lme,"random",2);
full(Dsub(1:12,:))
ans = 12×15

     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
      ⋮

Dsub には、2 番目のグループ化変数に対して作成されたダミー変数 (つまり土壌に入れ子になったトマト) が含まれます。これらは、Soil の水準を表すダミー変数 (LoamySiltySandy) と Tomato の水準 (CherryGrapeHeirloomPlumVine) の要素ごとの積です。

グループ化変数の名前を表示します。

gname
gname = 1×1 cell array
    {'Soil:Tomato'}

入力引数

すべて折りたたむ

線形混合効果モデル。fitlme または fitlmematrix を使用して構築した LinearMixedModel オブジェクトとして指定します。

グループ化変数の数。整数配列として指定されます。R は、線形混合効果モデル lme のグループ化変数を含む cell 配列の長さです。

たとえば、グループ化変数 g1、g3、gr は次のように指定できます。

例: [1,3,r]

データ型: double | single

出力引数

すべて折りたたむ

線形混合効果モデル lme の計画行列。次のいずれかとして返されます。

  • 固定効果の計画行列 — lme の固定効果計画で構成される np 列の行列。n は観察値の数、p は固定効果の項の数です。D 内の固定効果項の次数は、LinearMixedModel オブジェクト lmeCoefficientNames プロパティにおける項の次数と一致します。

  • 変量効果の計画行列 ― lme の変量効果計画行列で構成される nk 列の行列。klength(B) に等しく、B は線形混合効果モデル lme の変量効果の係数ベクトルです。

    lme には R 個のグループ化変数 g1、g2、...、gR (水準はそれぞれ m1m2、...、mR) が含まれ、q1q2、...、qR はそれぞれ g1、g2、...、gR と関連付けられる変量効果ベクトルの長さである場合、B は長さが q1*m1 + q2*m2 + ... + qR*mR の列ベクトルです。

    B は、各グループ化変数の各水準に対応する変量効果ベクトルの最良線形不偏予測量を連結することにより作成され、[g1level1; g1level2; ...; g1levelm1; g2level1; g2level2; ...; g2levelm2; ...; gRlevel1; gRlevel2; ...; gRlevelmR]' となります。

データ型: single | double

gnumbers の整数で示されるグループ化変数に対応する変量効果計画行列の部分行列。nk 列の行列として返されます。k は列ベクトル Bsub の長さです。

Bsub には、gnumbers によって指定されたグループ化変数の各水準に対応して変量効果ベクトルが連結された、最良線形不偏予測量 (BLUP) が含まれます。

たとえば、gnumbers[1,3,r] である場合、これはグループ化変数 g1、g3、gr に対応します。このとき、Bsub には、グループ化変数 g1、g3、gr の各水準に対応する変量効果ベクトルが連結された BLUP が含まれ、次のようになります。

[g1level1; g1level2; ...; g1levelm1; g3level1; g3level2; ...; g3levelm3; grlevel1; grlevel2; ...; grlevelmr]'.

したがって、Dsub*Bsub は、グループ化変数 g1、g3、gr に対応するすべての変量効果の、lme の応答に対する寄与を表します。

gnumbers が空の場合は、Dsub は完全な変量効果計画行列になります。

データ型: single | double

設計タイプが 'Random' の場合は、gnumbers の整数に対応するグループ化変数の名前。k 行 1 列の cell 配列として返されます。設計タイプが 'Fixed' の場合は、gnames は空の行列 [] です。

データ型: cell

バージョン履歴

R2013b で導入