ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

random

クラス: LinearMixedModel

近似線形混合効果モデルからランダムな応答を生成します。

構文

  • ysim = random(lme)
  • ysim = random(lme,dsnew)
  • ysim = random(lme,Xnew,Znew)
  • ysim = random(lme,Xnew,Znew,Gnew)

説明

ysim = random(lme) は、lme を近似するために使用される、元の固定効果計画点と変量効果計画点における近似線形混合効果モデル lme からシミュレートされた応答 ysim のベクトルを返します。

random は、新しい変量効果ベクトルと新しい観測誤差をシミュレートします。そのため、シミュレートされた応答は次のようになります。

ここで、 は推定固定効果係数で、 は新しい変量効果、ε は新しい観測誤差です。

random では、モデルを近似するときに使用する観測の重みの効果も考慮されます。

ysim = random(lme,dsnew) は、新しいデータセット配列 dsnew の値で近似線形混合効果モデル lme からシミュレートされた応答 ysim のベクトルを返します。モデル lme の近似にデータセット配列を使用している場合は random のデータセット配列を使用します。

ysim = random(lme,Xnew,Znew) は、新しい固定効果および変量効果の計画行列 XnewZnew それぞれの値で近似線形混合効果モデル lme からシミュレートされた応答 ysim のベクトルを返します。Znew は行列のセル配列にすることもできます。モデル lme. の近似に計画行列を使用している場合、random に行列形式を使用します。

ysim = random(lme,Xnew,Znew,Gnew) は、新しい固定効果および変量効果の計画行列 XnewZnew それぞれの値およびグループ化変数 Gnew の値で近似線形混合効果モデル lme からシミュレートされた応答 ysim のベクトルを返します。

Znew および Gnew は、それぞれ行列とグループ化変数のセル配列にすることもできます。

入力引数

すべて展開する

lme - 線形混合効果モデルLinearMixedModel オブジェクト

LinearMixedModel オブジェクトとして返される線形混合効果モデル。

このオブジェクトのプロパティとメソッドについては、LinearMixedModel を参照してください。

dsnew - 新しい入力データ配列 dataset

新規入力データ。データセット配列として指定された、応答変数、予測変数およびグループ化変数を含みます。予測変数は連続変数またはグループ化変数にすることができます。dsnew は、線形混合効果モデル lme の近似に使用される元のデータセット配列と同じ変数にしなければなりません。

データ型:single | double | logical | char

Xnew - 新しい固定効果の計画行列n 行 p 列の行列

n 行 p 列の行列で指定される新しい固定効果の計画行列。ここで n は観測値の数、p は固定予測子変数の数です。X の各行は 1 つの観測値に対応し、X の各列は 1 つの変数に対応します。

データ型:single | double

Znew - 新しい変量効果の計画行列n 行 q 列の行列 | 長さ R のセル配列

n 行 q 列の行列または R 計画行列 Z{r} のセル配列として指定される新しい変量効果計画。ここで、r = 1, 2, ..., R となります。Znew がセル配列の場合、各 Z{r} は n 行 q(r) 列の行列になります。ここで n は観測値の数、q(r) は無作為な予測子変数の数です。

データ型:single | double | logical | char | cell

Gnew - 新しいグループ化変数ベクトル | 長さ R のグループ化変数のセル配列

新しいグループ化変数。線形混合効果モデル lme の近似に使用されるグループ化変数の長さ R のベクトルまたはセル配列として指定します。

random は、各グループ化変数のすべてのレベルを新しいレベルとして扱います。各グループ化変数のレベルごとに独立した変量効果ベクトルを描画します。

データ型:single | double | logical | char | cell

出力引数

すべて展開する

ysim - シミュレートされた応答値n 行 1 列のベクトル

n 行 1 列のベクトルとして返される、シミュレートされた応答値。ここで、n は観測値の数です。

すべて展開する

元の計画値での無作為な応答の生成

標本データが含まれたフォルダーに移動します。

cd(matlabroot)
cd('help/toolbox/stats/examples')

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

load fertilizer

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

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

ds = fertilizer;
ds.Tomato = nominal(ds.Tomato);
ds.Soil = nominal(ds.Soil);
ds.Fertilizer = nominal(ds.Fertilizer);

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

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

元の計画点のランダム応答値を生成します。最初の 5 つの値を表示します。

rng(123,'twister') % For reproducibility
ysim = random(lme);
ysim(1:5)
ans =

  114.8785
  134.2018
  154.2818
  169.7554
   84.6089

無作為に生成された値と観測された応答値のプロット

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

load carsmall

Weight に対する固定効果と、Model_Year でグループ化されたランダム切片で、線形混合効果モデルを近似します。最初に、データをデータセット配列に保存します。

ds = dataset(MPG,Weight,Model_Year);
lme = fitlme(ds,'MPG ~ Weight + (1|Model_Year)');

元のデータを使用して応答をランダムに生成します。

rng(123,'twister') % For reproducibility
ysim = random(lme,ds);

元の応答と無作為に生成された応答をプロットして、相違点を確認します。それらをモデル年別にグループ化します。

figure()
gscatter(Weight,MPG,Model_Year)
hold on
gscatter(Weight,ysim,Model_Year,[],'o+x')
legend('70-data','76-data','82-data','70-sim','76-sim','82-sim')
hold off

82 年に対してシミュレートされたランダムな応答値が、その年の元のデータよりも低くなっています。これは、元のデータの推定変量効果よりも、82 年のシミュレートされた変量効果が低いことが原因である可能性があります。

新しいデータセット配列を使用した応答の生成

標本データが含まれたフォルダーに移動します。

cd(matlabroot)
cd('help/toolbox/stats/examples')

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

load fertilizer

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

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

ds = fertilizer;
ds.Tomato = nominal(ds.Tomato);
ds.Soil = nominal(ds.Soil);
ds.Fertilizer = nominal(ds.Fertilizer);

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

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

設計値をもつ新しいデータセット配列を作成します。新しいデータセット配列は、モデル lme の近似に使用する元のデータセット配列と同じ変数をもたなければなりません。

dsnew = dataset();
dsnew.Soil = nominal({'Sandy';'Silty';'Silty'});
dsnew.Tomato = nominal({'Cherry';'Vine';'Plum'});
dsnew.Fertilizer = nominal([2;2;4]);

新しい点でランダムな応答を生成します。

rng(123,'twister') % For reproducibility
ysim = random(lme,dsnew)
ysim =

   99.6006
  101.9911
  161.4026

新しい計画行列を使用したランダム応答の生成

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

load carbig

ガロンあたりの走行マイル数 (MPG) の線形混合効果モデルを近似します。加速度、馬力、気筒数は固定効果で、モデル年によってグループ化される切片と加速度については相関された変量効果の可能性があります。

最初に、線形混合効果モデルを近似するための計画行列を準備します。

X = [ones(406,1) Acceleration Horsepower];
Z = [ones(406,1) Acceleration];
Model_Year = nominal(Model_Year);
G = Model_Year;

次に、定義した計画行列とグループ化変数で fitlmematrix を使用してモデルを近似します。

lme = fitlmematrix(X,MPG,Z,G,'FixedEffectPredictors',....
{'Intercept','Acceleration','Horsepower'},'RandomEffectPredictors',...
{{'Intercept','Acceleration'}},'RandomEffectGroups',{'Model_Year'});

応答値を予測する対象データを含む計画行列を作成します。XnewX のように 3 つの列をもたなければなりません。最初の列名は列 1 でなければなりません。また、最後の 2 列の値はそれぞれ AccelerationHorsepower に一致しなければなりません。Znew の 1 列目は列 1 でなければならず、2 列目には Xnew と同じ Acceleration 値が含まれなければなりません。G の元のグループ化変数はモデル年です。そのため、Gnew にはモデル年の値が含まれなければなりません。Gnew にはノミナル値が含まれていなければなりません。

Xnew = [1,13.5,185; 1,17,205; 1,21.2,193];
Znew = [1,13.5; 1,17; 1,21.2];
Gnew = nominal([73 77 82]);

新しい計画行列のデータに対するランダム応答を生成します。

rng(123,'twister') % For reproducibility
ysim = random(lme,Xnew,Znew,Gnew)
ysim =

   15.7416
   10.6085
    6.8796

次に、切片と加速度について変量効果が無相関な線形混合モデルに、同じ手順を繰り返します。最初に、元の変量効果計画と変量効果グループ化変数を変更します。次に、モデルを近似します。

Z = {ones(406,1),Acceleration};
G = {Model_Year,Model_Year};

lme = fitlmematrix(X,MPG,Z,G,'FixedEffectPredictors',....
{'Intercept','Acceleration','Horsepower'},'RandomEffectPredictors',...
{{'Intercept'},{'Acceleration'}},'RandomEffectGroups',{'Model_Year','Model_Year'});

ここで、新しい変量効果計画 Znew およびグループ化変数計画 Gnew を再作成します。これらのどちらかを使用して応答値を予測します。

Znew = {[1;1;1],[13.5;17;21.2]};
MY = nominal([73 77 82]);
Gnew = {MY,MY};

新しい計画行列を使用してランダム応答を生成します。

rng(123,'twister') % For reproducibility
ysim = random(lme,Xnew,Znew,Gnew)
ysim =

   16.8280
   10.4375
    4.1027

参考

| | |

この情報は役に立ちましたか?