ドキュメンテーション

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

ロバスト回帰 — 外れ値の影響の低減

ロバスト回帰とは

線形回帰モデルとは で説明したモデルは、観測された応答において誤差が正規分布するというような、ある仮定に基づきます。誤差の分布が非対称または外れ値になる傾向がある場合、モデルの仮定は無効になり、パラメーターの推定、信頼区間、その他の計算された統計量が信頼できなくなります。外れ値にあまり影響されないモデルを作成するには、fitlmRobustOpts 名前と値のペアとともに使用します。ロバスト近似メソッドは、狭い部分のデータでの大きな変化に対して通常の最小二乗法よりも感度が低くなります。

ロバスト回帰は、各データ点に重みを割り当てることによって機能します。重み付けは、"反復重み付け最小二乗法" と呼ばれる過程を使用して自動的かつ反復的に行われます。最初の反復において、各点は同じ重みを割り当てられ、モデル係数は通常の最小二乗法を使って推定されます。それに続く反復では、重みは、前の反復におけるモデル予測から遠い点には、より小さな重みが与えられるように再び計算されます。その後、重み付けされた最小二乗法を使ってモデル係数が再び計算されます。この過程は、係数推定の値が指定した許容誤差内に収束するまで続きます。

ロバスト回帰と標準の最小二乗近似の比較

次の例は、ロバスト回帰の使用方法を示します。ロバスト近似と標準の最小二乗近似の結果を比較します。

手順 1. データを準備する。

moore データを読み込みます。先頭の 5 列にデータがあり、6 列目に応答が含まれています。

load moore
X = [moore(:,1:5)];
y = moore(:,6);

手順 2. ロバスト モデルと非ロバスト モデルを近似する。

2 つの線形モデルをデータにあてはめます。このときに 1 つのモデルではロバスト近似を使用し、もう 1 つのモデルでは使用しません。

mdl = fitlm(X,y); % not robust
mdlr = fitlm(X,y,'RobustOpts','on');

手順 3. モデルの残差を調べる。

2 つのモデルの残差を調べます。

subplot(1,2,1)
plotResiduals(mdl,'probability')
subplot(1,2,2)
plotResiduals(mdlr,'probability')

ロバスト近似の残差 (プロットの右半分) はすべてほぼ直線に近く、顕著な外れ値が 1 つのみあります。

手順 4. 外れ値を標準モデルから削除する。

外れ値のインデックスを見つけます。ロバスト近似で外れ値の重みを調べます。

[~,outlier] = max(mdlr.Residuals.Raw);
mdlr.Robust.Weights(outlier)
ans = 0.0246

中央値の重みを確認します。

median(mdlr.Robust.Weights)
ans = 0.9718

ロバスト近似の外れ値のこの重みは、通常の観測値の重みよりはるかに小さい値です。