ドキュメンテーション

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

robustfit

構文

b = robustfit(X,y)
b = robustfit(X,y,wfun,tune)
b = robustfit(X,y,wfun,tune,const)
[b,stats] = robustfit(...)

説明

b = robustfit(X,y) は、X 内の予測子に対する y 内の応答のロバスト多重線形回帰について、係数推定が格納されている (p + 1) 行 1 列のベクトル b を返します。Xnp 列の行列であり、n 個の観測値のそれぞれに対して p 個の予測子があります。y は、観測された応答が格納されている n 行 1 列のベクトルです。既定の設定では、アルゴリズムは、二重平方重み関数に付属している再度重み付けされた最小二乗を繰り返して使用します。

メモ

既定の設定では、robustfit は、モデルの定数項に対応する最初の複数の 1 の列を X に追加します。X に数値 1 だけを続けた列を直接入力しないでください。以下の入力 const を使用して、robustfit の既定の設定の動作を変更できます。

robustfit は、X または yNaN を欠損値として認識し、削除します。

b = robustfit(X,y,wfun,tune) は、重み関数 wfun を指定します。tune は、重みを計算する前に残差ベクトルに分割される調整定数です。

重み関数 wfun には、以下のいずれかを設定できます。

重み関数既定の設定の調整定数
'andrews'w = (abs(r)<pi) .* sin(r) ./ r1.339
'bisquare' (既定の設定)w = (abs(r)<1) .* (1 - r.^2).^24.685
'cauchy'w = 1 ./ (1 + r.^2)2.385
'fair'w = 1 ./ (1 + abs(r))1.400
'huber'w = 1 ./ max(1, abs(r))1.345
'logistic'w = tanh(r) ./ r1.205
'ols'通常最小二乗 (重み関数なし)なし
'talwar'w = 1 * (abs(r)<1)2.795
'welsch'w = exp(-(r.^2))2.985

tune が指定されない場合は、テーブル内の既定値が使用されます。応答が外れ値のない正規分布をもつ場合、既定の設定の調整定数は、通常最小二乗推定のように統計的に効率の良い約 95% の係数推定を出力します。調整定数を小さくすると、大きな残差に割り当てられる重みの削減量が増え、調整定数を大きくすると、大きな残差に割り当てられる重みの削減量が減ります。

重み関数の値 r は次のようになります。

r = resid/(tune*s*sqrt(1-h))

resid は、以前の反復の残差のベクトル、h は最小二乗近似のてこ比値のベクトル、s は以下によって与えられる誤差項目の標準偏差の推定です。

s = MAD/0.6745

ここで、MAD は、それらの中央値からの残差の中央絶対偏差です。定数 0.6745 は、推定を正規分布に対して不偏にします。Xp 個の列がある場合、中央値を計算する際に小さいほうから p 個の絶対偏差は除外されます。

独自の重み関数を作成できます。関数は、スケールされた残差のベクトルを入力し、重みベクトルを出力する必要があります。この場合、wfun は、関数ハンドル @ を使用して (たとえば @myfun のように) 指定されています。また、入力 tune が必要です。

b = robustfit(X,y,wfun,tune,const) は、モデルに定数項を含めるかどうかを制御します。const は、定数項を含める場合 (既定値) には 'on'、定数項を含めない場合には 'off' となります。const'on' の場合、robustfit は列 1 の最初の列を X に追加し、b は (p + 1) 行 1 列のベクトルになります。const'off' で、robustfitX を変更しない場合、b は p 行 1 列のベクトルになります。

[b,stats] = robustfit(...) は、フィールドが回帰の診断統計量を含む stats 構造体を返します。stats のフィールドは、以下のとおりです。

  • ols_s — 通常最小二乗からのシグマ推定 (RMSE)

  • robust_s — シグマのロバスト推定

  • mad_s — 中央値からの残差の中央絶対偏差を使用して計算されたシグマの推定。反復近似中の残差のスケーリングに使用されます。

  • s — シグマの最終推定。ols_srobust_s の重み平均と robust_s のうち大きい方。

  • resid — 残差

  • rstud — スチューデント化残差 (詳細は regress を参照してください)。

  • se — 係数の推定の標準誤差

  • covb — 係数推定のための推定共分散行列

  • coeffcorr — 係数の推定の推定相関

  • tbse に対する比率

  • ptp

  • w — ロバスト近似の重みベクトル

  • RXQR 分解の R 因子

  • dfe — 誤差に対する自由度

  • h — 最小二乗近似のてこ比値のベクトル

関数 robustfit は、inv(X'*X)*stats.s^2 を使用して、係数推定の分散共分散行列を推定します。標準誤差と相関は、この推定から派生します。

すべて折りたたむ

傾向 y = 10 - 2* x でデータを生成し、1 つの値を変更して外れ値をシミュレートします。

x = (1:10)';
rng default; % For reproducibility
y = 10 - 2*x + randn(10,1);
y(10) = 0;

通常の最小二乗回帰を使用して直線を近似します。

bls = regress(y,[ones(10,1) x])
bls = 2×1

    7.8518
   -1.3644

次に、ロバスト回帰を使用して直線の近似を推定します。

brob = robustfit(x,y)
brob = 2×1

    8.4504
   -1.5278

データの散布図を近似とあわせて作成します。

scatter(x,y,'filled'); grid on; hold on
plot(x,bls(1)+bls(2)*x,'r','LineWidth',2);
plot(x,brob(1)+brob(2)*x,'g','LineWidth',2)
legend('Data','Ordinary Least Squares','Robust Regression')

ロバスト近似に対する外れ値の影響は、最小二乗近似の場合と比べて小さくなります。

参照

[1] DuMouchel, W. H., and F. L. O'Brien. “Integrating a Robust Option into a Multiple Regression Computing Environment.” Computer Science and Statistics: Proceedings of the 21st Symposium on the Interface. Alexandria, VA: American Statistical Association, 1989.

[2] Holland, P. W., and R. E. Welsch. “Robust Regression Using Iteratively Reweighted Least-Squares.” Communications in Statistics: Theory and Methods, A6, 1977, pp. 813–827.

[3] Huber, P. J. Robust Statistics. Hoboken, NJ: John Wiley & Sons, Inc., 1981.

[4] Street, J. O., R. J. Carroll, and D. Ruppert. “A Note on Computing Robust Regression Estimates via Iteratively Reweighted Least Squares.” The American Statistician. Vol. 42, 1988, pp. 152–154.

R2006a より前に導入