ドキュメンテーション

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

random

一般化線形回帰モデルの応答のシミュレーション

構文

ysim = random(mdl,Xnew)
ysim = random(mdl,Xnew,Name,Value)

説明

ysim = random(mdl,Xnew)mdl 一般化線形モデルから Xnew のデータへの応答をシミュレーションします。

ysim = random(mdl,Xnew,Name,Value) は、1 つまたは複数の Name,Value の引数ペアで指定された追加オプションを使用して、応答をシミュレーションします。

入力引数

mdl

一般化線形モデル。fitglm または stepwiseglm を使用して構築した完全な GeneralizedLinearModel オブジェクト、または compact を使用して構築したコンパクトな CompactGeneralizedLinearModel オブジェクトを指定します。

Xnew

mdl が応答を予測する点。

  • Xnew がテーブルまたはデータセット配列の場合、mdl に予測子名が含まれていなければなりません。

  • Xnew が数値行列の場合、mdl の作成に使用されたのと同じ数の変数 (列) をもたなければなりません。さらに、mdl の作成に使用された変数は、すべて数値でなければなりません。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

'BinomialSize'

学習データの各行の二項パラメーター n の値。BinomialSizeXnew と同じ長さのベクトルまたは各行に適用されるスカラー値です。既定値 1 は、予測された比率である ysim 値を生成します。mdl が二項分布に近似される場合にのみ、BinomialSize を使用します。

既定値: 1

'Offset'

Xnew の各行のオフセットの値。Offset は、Xnew と同じ長さのベクトルまたは各行に適用されるスカラー値です。オフセットは追加の予測子変数として使用され、1 で固定した係数値をもちます。つまり、b が近似された係数ベクトルであり、link がリンク関数である場合、

link(ysim) = Offset + Xnew * b

既定値: zeros(size(Xnew,1))

出力引数

ysim

Xnew におけるシミュレートされた値のベクトル。

random は、近似モデルで求めた平均と mdl で使用される分布をもつ乱数値を使用して、ysim を生成します。ysim の値は予測子では独立した条件です。二項近似およびポアソン近似の場合、random は推定された分散に対して調整なしで、指定された分布の ysim を生成します。

すべて展開する

一般化線形モデルを作成し、新しいデータに対する応答をシミュレーションします。

元となる 1 つの予測子 X をもつポアソン乱数を、モデルの人為的なデータとして生成します。

rng('default') % reproducible
X = rand(20,1);
mu = exp(1 + 2*X);
y = poissrnd(mu);

ポアソン データの一般化線形回帰モデルを作成します。

mdl = fitglm(X,y,'y ~ x1','distr','poisson');

予測に使用する点を作成します。

Xnew = (0:.05:1)';

新しい点で応答をシミュレーションします。

ysim = random(mdl,Xnew);

元の値とともにシミュレーションされた値をプロットします。

plot(X,y,'rx',Xnew,ysim,'bo',...
    Xnew,feval(mdl,Xnew),'g-')
legend('Data','Simulated','Fitted Mean',... 
    'Location','best')

一般化線形モデルに学習をさせてから、新しい予測子データに対してモデルから応答を無作為に抽出する関数からコードを生成します。

次のような人為的なデータを生成します。

  • および

rng('default') % For reproducibility
x = 1 + randn(100,1)*0.5;
beta = -2;
p = exp(1 + x*beta)./(1 + exp(1 + x*beta)); % Inverse logit
n = 10;
y = binornd(n,p,100,1);

二項データの一般化線形回帰モデルを作成します。二項標本サイズとして 10 を指定します。

mdl = fitglm(x,y,'y ~ x1','Distribution','Binomial','BinomialSize',n);

あてはめた一般化線形モデルを GLMMdl.mat というファイルに保存します。

saveCompactModel(mdl,'GLMMdl');

現在のフォルダーで、以下を行う myrandomGLM.m という名前の関数を定義します。

  • X の列に対応する列をもつ測定値と、有効な名前と値のペアの引数を受け入れる

  • GLMMdl.mat 内のあてはめ済み一般化線形モデルの読み込み

  • 読み込んだ GLM モデルから応答をシミュレートする。

function y = myrandomGLM(x,varargin) %#codegen
%MYRANDOMGLM Simulate response using GLM model 
%   MYRANDOMGLM simulates responses for the n observations in the n-by-1
%   vector x using the GLM model stored in the MAT-file GLMMdl.mat, and
%   then returns the simulations in the n-by-1 vector y.
CompactMdl = loadCompactModel('GLMMdl');
narginchk(1,Inf);
y = random(CompactMdl,x,varargin{:});
end


myrandomGLM.m から MEX 関数を生成します。標本内予測子データとして X、二項パラメーター n として 10 を指定します。C では静的なデータ型が使用されるため、codegen は MATLAB® ファイル内のすべての変数のプロパティをコンパイル時に決定しなければなりません。引数をコンパイル時の定数として指定するため、coder.Constant を使用します。

codegen -config:mex myrandomGLM -args {x,coder.Constant('BinomialSize'),coder.Constant(n)}

codegen は MEX ファイル myrandomGLM_mex.mexw64 を現在のフォルダーに生成します。ファイルの拡張子はプラットフォームによって異なります。

MEX 関数を使用して応答をシミュレートします。

ysim = myrandomGLM_mex(x,'BinomialSize',n);

シミュレートした値とデータを同じ Figure にプロットします。

figure;
plot(x,y,'bo',x,ysim,'r*');
legend('Observed responses','Simulated responses');
xlabel('x');
ylabel('y');

観測された応答とシミュレートされた応答は、同じ分布になっているように見えます。

代替方法

ランダム ノイズのない予測では、predict または feval を使用します。

拡張機能

R2012a で導入