ドキュメンテーション

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

predict

クラス: CompactLinearModel

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

構文

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 の引数ペアで指定された追加オプションを使用して、応答を予測します。

入力引数

すべて展開する

線形モデル オブジェクト。fitlm または stepwiselm を使用して構築した完全な LinearModel オブジェクト、または compact を使用して構築したコンパクトな CompactLinearModel オブジェクトを指定します。

新しい予測子の入力値。テーブル、データセット配列または数値行列を指定します。

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

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

名前と値のペアの引数

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

信頼区間のアルファの値。'Alpha' と 範囲 [0,1] の数値から構成されるコンマ区切りのペアとして指定します。yci の信頼度は 100(1 – alpha)% に等しくなります。たとえば、Alpha として 0.05 を指定した場合、95% 信頼区間に対応します。

予測タイプ。'Prediction' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'curve'predict は、近似された平均値の信頼限界を予測します。

  • 'observation'predict は、新しい観測値の信頼限界を予測します。この場合、新しい観測値の誤差が推定平均値の誤差と等しいことに加え、真の平均からの観測値のばらつきのため、限界値の範囲は広くなります。

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

同時信頼限界を計算するためのフラグ。Simultaneous と false または true から構成されるコンマ区切りのペアとして指定します。true を指定した場合、すべての予測子の値について同時に信頼限界が計算されます。false を指定した場合、個々の予測子の値についてホールドを使用して信頼限界が計算されます。1 つの予測値における曲線が範囲内であればよいのではなく、曲線全体が範囲内であることが厳密に要求されるため、同時の限界は個別の限界より広くなります。

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

出力引数

すべて展開する

Xnewで評価した予測平均応答値。数値ベクトルとして返されます。ypred のサイズは Xnew と同じになります。

予測応答の信頼区間。各行が 1 つの区間に対応する 2 列の行列として返されます。信頼区間の意味は、 名前と値のペアの設定によって異なります。

すべて展開する

自動車の燃費のモデルを重量の関数として作成し、応答を予測します。

carsmall データから、自動車の燃費の 2 次モデルを重量とモデル年の関数として作成します。

load carsmall
X = Weight;
y = MPG;
mdl = fitlm(X,y,'quadratic');

データに対する予測された応答を作成します。

Xnew = X;
ypred = predict(mdl,Xnew);

元の応答と予測された応答をプロットして、相違点を確認します。

plot(X,y,'o',Xnew,ypred,'x')
legend('Data','Predictions')

この例は線形モデルの使用による応答値の予測をベースとしています。

carsmall データセットを読み込んで、2 次回帰モデルをあてはめます。

load carsmall
X = Weight;
y = MPG;
mdl = fitlm(X,y,'quadratic');

並べ替えられた標本内データから予測するための点を作成します。

Xnew = sort(X);

あてはめた 2 次モデルを QLMMdl.mat というファイルに保存します。

saveCompactModel(mdl,'QLMMdl');

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

  • Xnew に相応する測定値およびおそらく有効であろう名前と値のペアの引数の受け入れ

  • QLMMdl.mat 内のあてはめ済み 2 次モデルを読み込む。

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

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


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

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

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

predictmypredictQLM_mex を使用した予測および信頼区間を、これらの両方とデータをプロットすることにより比較します。codegen を呼び出したときの引数 -args と同じ順序で名前と値のペアの引数を指定します。

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

figure;
h1 = plot(X,y,'.');
hold on;
h2 = plot(Xnew,yhat1,'ro',Xnew,yhat2,'g*');
h3 = plot(Xnew,ci1,'r-','LineWidth',4);
h4 = plot(Xnew,ci2,'g--','LineWidth',2);
legend([h1; h2; h3(1); h4(1)],{'Data','predict estimates','MEX estimates',...
    'predict CIs','MEX CIs'});
xlabel('Weight');
ylabel('MPG');

生成された MEX ファイルと predict は、本質的に同じ結果を返します。

ヒント

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

代替方法

feval は同じ予測を行いますが、各入力引数に 1 つずつの成分がある複数の入力配列を使用します。テーブルまたはデータセット配列から作成したモデルでは feval を使用する方が簡単な場合がありますが、feval は予測に対する信頼区間を計算しません。

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

拡張機能

R2012a で導入