predict
非線形回帰モデルの応答予測
構文
説明
例
応答予測
自動車の燃費の非線形モデルを重量の関数として作成し、応答を予測します。
carsmall
データから、重量の関数として自動車の燃費の指数モデルを作成します。すべての変数がほぼ同じサイズになるように、1000 のファクタで重み付けをスケーリングします。
load carsmall X = Weight; y = MPG; modelfun = 'y ~ b1 + b2*exp(-b3*x/1000)'; beta0 = [1 1 1]; mdl = fitnlm(X,y,modelfun,beta0);
データに対する予測された応答を作成します。
Xnew = X; ypred = predict(mdl,Xnew);
元の応答と予測された応答をプロットして、相違点を確認します。
plot(X,y,'o',X,ypred,'x') legend('Data','Predicted')
予測の信頼区間
自動車の燃費の非線形モデルを重量の関数として作成し、いくつかの応答の信頼区間を調べます。
carsmall
データから、重量の関数として自動車の燃費の指数モデルを作成します。すべての変数がほぼ同じサイズになるように、1000 のファクタで重み付けをスケーリングします。
load carsmall X = Weight; y = MPG; modelfun = 'y ~ b1 + b2*exp(-b3*x/1000)'; beta0 = [1 1 1]; mdl = fitnlm(X,y,modelfun,beta0);
最小、平均および最大のデータ点の予測応答を作成します。
Xnew = [min(X);mean(X);max(X)]; [ypred,yci] = predict(mdl,Xnew)
ypred = 3×1
34.9469
22.6868
10.0617
yci = 3×2
32.5212 37.3726
21.4061 23.9674
7.0148 13.1086
ロバスト近似曲線の同時信頼区間
次の非線形回帰モデルから標本データを生成します。
ここで、、 および は係数です。誤差項 は平均 0 および標準偏差 0.5 の正規分布に従います。
modelfun = @(b,x)(b(1)+b(2)*exp(-b(3)*x)); rng('default') % For reproducibility b = [1;3;2]; x = exprnd(2,100,1); y = modelfun(b,x) + normrnd(0,0.5,100,1);
ロバスト近似オプションを使用して非線形モデルを当てはめます。
opts = statset('nlinfit'); opts.RobustWgtFun = 'bisquare'; b0 = [2;2;2]; mdl = fitnlm(x,y,modelfun,b0,'Options',opts);
近似した回帰モデルと 95% の同時信頼限界をプロットします。
xrange = [min(x):.01:max(x)]'; [ypred,yci] = predict(mdl,xrange,'Simultaneous',true); figure() plot(x,y,'ko') % observed data hold on plot(xrange,ypred,'k','LineWidth',2) plot(xrange,yci','r--','LineWidth',1.5)
観測の重みを使用した信頼区間
標本データを読み込みます。
S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;
観測の重みの関数ハンドルを指定した後、指定した観測の重み関数を使用してレート データに Hougen-Watson モデルを当てはめます。
a = 1; b = 1;
weights = @(yhat) 1./((a + b*abs(yhat)).^2);
mdl = fitnlm(X,y,@hougen,beta0,'Weights',weights);
観測値の重みの関数を使用して、反応物レベル [100,100,100] で新しい観測値について 95% の予測区間を計算します。
[ypred,yci] = predict(mdl,[100,100,100],'Prediction','observation', ... 'Weights',weights)
ypred = 1.8149
yci = 1×2
1.5264 2.1033
入力引数
mdl
— 非線形回帰モデル オブジェクト
NonLinearModel
オブジェクト
非線形回帰モデル オブジェクト。fitnlm
を使用して作成される NonLinearModel
オブジェクトとして指定します。
Xnew
— 新しい予測子の入力値
テーブル | データセット配列 | 行列
新しい予測子の入力値。table、データセット配列または行列を指定します。Xnew
の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
Xnew
が table またはデータセット配列である場合、mdl
のPredictorNames
プロパティと同じ予測子名をもつ予測子が含まれていなければなりません。Xnew
が行列である場合、mdl
の作成に使用した予測子入力と同じ個数の変数 (列) が同じ順序で含まれていなければなりません。当てはめたモデルで予測子としては使用しなかった予測子変数もXnew
に含めなければならないことに注意してください。また、mdl
の作成に使用する変数は、すべて数値でなければなりません。数値予測子をカテゴリカルとして扱うには、mdl
を作成するときに名前と値のペアの引数'CategoricalVars'
を使用して予測子を指定します。
データ型: single
| double
| table
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: [ypred,yci] = predict(Mdl,Xnew,'Alpha',0.01,'Simultaneous',true)
は、すべての予測子の値について同時に計算した、信頼水準が 99% である信頼区間 yci
を返します。
Alpha
— 有意水準
0.05 (既定値) | 範囲 [0,1] の数値
信頼区間の有意水準。'Alpha'
と範囲 [0,1] の数値から構成されるコンマ区切りのペアとして指定します。yci
の信頼水準は 100(1 – Alpha
)% に等しい値です。Alpha
は、真の値が信頼区間に含まれない確率です。
例: 'Alpha',0.01
データ型: single
| double
Prediction
— 予測タイプ
'curve'
(既定値) | 'observation'
予測タイプ。'Prediction'
と 'curve'
または 'observation'
から構成されるコンマ区切りのペアとして指定します。
予測子変数 X と応答変数 y に対する回帰モデルは、次の形式になります。
y = f(X) + ε,
ここで、f は当てはめた回帰関数、ε はランダムなノイズ項です。
'Prediction'
が'curve'
である場合、predict
はXnew
で当てはめた応答 f(Xnew) に対する信頼限界を予測します。'Prediction'
が'observation'
である場合、predict
はXnew
における応答観測値 y に対する信頼限界を予測します。
ノイズ項により変動性が追加されるので、y の範囲は f(X) の範囲より広くなります。
例: 'Prediction','observation'
Simultaneous
— 同時信頼限界を計算するためのフラグ
false
(既定値) | true
同時信頼限界を計算するためのフラグ。'Simultaneous'
と true または false から構成されるコンマ区切りのペアとして指定します。
true
—predict
は、シェッフェの方法を使用して、Xnew
内のすべての予測子の値に対応する応答値の曲線に対して信頼限界を計算します。上限と下限の間の範囲には、真の応答値から構成される曲線が 100(1 – α)% の信頼度で含まれます。false
—predict
は、Xnew
内の各観測値における応答値に対して信頼限界を計算します。特定の予測子の値における応答値の信頼区間には、真の応答値が 100(1 – α)% の信頼度で含まれます。
応答値の曲線全体を範囲内に含める方が、単一の予測子の値における応答値を範囲内に含める場合より条件が厳しいので、同時区間は個別の区間より広くなります。
例: 'Simultaneous',true
W
— 重み
重みなし (既定値) | ベクトル | 関数ハンドル
正の実数値の重みのベクトルまたは関数ハンドル。
ベクトルを指定する場合、
Xnew
にある観測値 (行) の数と同じ数の要素を指定しなければなりません。関数ハンドルを指定する場合、関数は予測される応答値のベクトルを入力として受け入れ、出力として正の実数重みを返さなければなりません。
重み W
に対して predict
は観測 i
における誤差分散を MSE*(1/W(i))
により推定します。MSE は平均二乗誤差です。
出力引数
ypred
— 予測した応答の値
数値ベクトル
Xnew
で予測した応答の値。数値ベクトルとして返されます。
yci
— 応答の信頼区間
2 列の数値行列
応答の信頼区間。各行が 1 つの区間に対応する 2 列の行列として返されます。信頼区間の意味は、名前と値のペアの引数 'Alpha'
、'Prediction'
および 'Simultaneous'
の設定によって異なります。
参照
[1] Lane, T. P. and W. H. DuMouchel. “Simultaneous Confidence Intervals in Multiple Regression.” The American Statistician. Vol. 48, No. 4, 1994, pp. 315–321. Available at https://doi.org/10.1080/00031305.1994.10476090
[2] Seber, G. A. F., and C. J. Wild. Nonlinear Regression. Hoboken, NJ: Wiley-Interscience, 2003.
バージョン履歴
R2012a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)