ドキュメンテーション

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

predict

一般化線形回帰モデルの応答予測

構文

ypred = predict(mdl,Xnew)
[ypred,yci] = predict(mdl,Xnew)
[ypred,yci] = predict(mdl,Xnew,Name,Value)

説明

ypred = predict(mdl,Xnew) は一般化線形回帰モデル mdl の予測応答を Xnew 内の点に返します。

[ypred,yci] = predict(mdl,Xnew) は、真の平均応答の信頼区間を返します。

[ypred,yci] = predict(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 のように、複数の名前と値のペアの引数を任意の順序で指定できます。

'Alpha'

0 から 1 までの正のスカラー値。yci の信頼度は 100(1 – alpha)% です。

既定値: 0.05、つまり 95% 信頼区間を意味します。

'BinomialSize'

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

既定値: 1

'Offset'

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

link(ypred) = Offset + Xnew * b

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

'Simultaneous'

信頼限界がすべての予測値を同時に対象としているか (true) または個別の予測子を保持しているか (false) を指定する論理値。1 つの予測値における曲線が範囲内であればよいのではなく、曲線全体が範囲内であることが厳密に要求されるため、同時の限界は個別の限界より広くなります。

詳細は、polyconf を参照してください。

既定値: false

出力引数

ypred

Xnew における予測された平均値のベクトル。

yci

信頼区間、各行が 1 つの区間を指定する 2 列の行列。信頼区間の意味は、 名前と値のペアの設定によって異なります。

すべて展開する

一般化線形モデルを作成し、新しいデータに対する応答を予測します。

元となる 2 つの予測子 X(1) および X(2) のポアソン乱数を使ってモデルのための人為的なデータを生成します。

rng('default') % For reproducibility
rndvars = randn(100,2);
X = [2+rndvars(:,1),rndvars(:,2)];
mu = exp(1 + X*[1;2]);
y = poissrnd(mu);

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

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

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

[Xtest1 Xtest2] = meshgrid(-1:.5:3,-2:.5:2);
Xnew = [Xtest1(:),Xtest2(:)];

新しい点で応答を予測します。

ypred = predict(mdl,Xnew);

予測をプロットします。

surf(Xtest1,Xtest2,reshape(ypred,9,9))

予測上に信頼区間を作成します。

[ypred yci] = predict(mdl,Xnew);

一般化線形モデルに学習をさせ、モデルに基づいて新しい観測値を分類する関数からコードを生成します。この例は一般化線形モデルの予測の例に基づいています。

人為的なデータを生成します。

rng('default') % For reproducibility
rndvars = randn(100,2);
X = [2+rndvars(:,1),rndvars(:,2)];
mu = exp(1 + X*[1;2]);
y = poissrnd(mu);

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

mdl = fitglm(X,y,'y ~ x1 + x2','Distribution','poisson');

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

[Xtest1 Xtest2] = meshgrid(-1:.5:3,-2:.5:2);
Xnew = [Xtest1(:),Xtest2(:)];

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

saveCompactModel(mdl,'GLMMdl');

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

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

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

  • 予測と信頼区間限界の返却

function [yhat,ci] = mypredictGLM(x,varargin) %#codegen
%MYPREDICTGLM Predict response using GLM model 
%   MYPREDICTGLM predicts responses for the n observations in the n-by-1
%   vector x using using the GLM model stored in the MAT-file GLMMdl.mat,
%   and then returns the predictions in the n-by-1 vector yhat.
%   MYPREDICTGLM also returns confidence interval bounds for the
%   predictions in the n-by-2 vector ci.
CompactMdl = loadCompactModel('GLMMdl');
narginchk(1,Inf);
[yhat,ci] = predict(CompactMdl,x,varargin{:});
end

mypredictGLM.m から MEX 関数を生成します。予測に対する 90% の同時信頼区間を返すように指定します。C では静的なデータ型が使用されるため、codegen は MATLAB® ファイル内のすべての変数のプロパティをコンパイル時に決定しなければなりません。引数をコンパイル時の定数として指定するため、coder.Constant を使用します。

codegen -config:mex mypredictGLM -args {Xnew,coder.Constant('Alpha'),0.1,coder.Constant('Simultaneous'),true}

MEX ファイル mypredictGLM_mex.mexw64 が現在の作業ディレクトリに生成されます。ファイルの拡張子はプラットフォームによって異なります。

predictmypredictGLM_mex を使用して予測を比較します。codegen を呼び出したときの引数 -args と同じ順序で名前と値のペアの引数を指定します。

[yhat1,ci1] = predict(mdl,Xnew,'Alpha',0.1,'Simultaneous',true);
[yhat2,ci2] = mypredictGLM_mex(Xnew,'Alpha',0.1,'Simultaneous',true);

comp1 = (yhat1 - yhat2)'*(yhat1 - yhat2);
comp2 = diag((ci1 - ci2)'*(ci1 - ci2));
agree1 = comp1 < eps
agree2 = comp2 < eps
agree1 =

  logical

   1


agree2 =

  2x1 logical array

   1
   1

生成される MEX ファイルは、predict と同じ結果を出力します。

ヒント

  • ノイズが追加された予測では、random を使用します。

  • データセット配列から作成されたモデルで使いやすい構文に対しては、feval を試みてください。

代替方法

feval でも同じ予測ができますが、すべての予測子を含む 1 つの入力配列ではなく、予測子ごとに別個の入力配列を使用します。

random は追加されたノイズ付きで予測します。

拡張機能

R2012a で導入