ドキュメンテーション

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

NonLinearModel.fit

クラス: NonLinearModel

非線形回帰モデルの近似

NonLinearModel.fit は将来のリリースでは削除される予定です。代わりに fitnlm を使用してください。

構文

mdl = NonLinearModel.fit(tbl,modelfun,beta0)
mdl = NonLinearModel.fit(X,y,modelfun,beta0)
mdl = NonLinearModel.fit(...,modelfun,beta0,Name,Value)

説明

mdl = NonLinearModel.fit(tbl,modelfun,beta0) は、modelfun で指定されたモデルをテーブルまたはデータセット配列 tbl 内の変数に近似し、非線形モデル mdl を返します。NonLinearModel.fitbeta0 の初期値から開始される反復手順を使用して、モデル係数を推定します。

mdl = NonLinearModel.fit(X,y,modelfun,beta0) は、列ベクトル y を応答変数として、行列 X の列を予測子変数として使用して、非線形回帰モデルをあてはめます。

mdl = NonLinearModel.fit(...,modelfun,beta0,Name,Value) では、1 つまたは複数の Name,Value の引数のペアで指定された追加オプションを使用して、非線形回帰モデルをあてはめます。

入力引数

すべて展開する

入力データ。テーブルまたはデータセット配列として指定します。予測子変数と応答変数を指定しない場合、既定では、最後の変数が応答変数で、その他の変数が予測子変数になります。

予測子変数と応答変数は数値でなければなりません。

応答変数として異なる列を設定するには、名前と値のペア引数 ResponseVar を使用します。列のサブセットを予測子として使用するには、名前と値のペア引数 PredictorVars を使用します。

データ型: single | double | logical

n 行 p 列の行列として指定される予測子変数。ここで、n は観測値の数、p は予測子変数の数です。X の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。

既定では、明示的に削除しない限り、モデルには定数項があるので、1 の列を X に含めないでください。

データ型: single | double | logical

n 行 1 列のベクトルとして指定される応答変数。ここで、n は観測値の数です。y の各エントリは X の対応する行に対する応答です。

データ型: single | double | logical

モデルの関数形式。以下のいずれかとして指定します。

  • 関数ハンドル @modelfun または @(b,x)modelfun、ここで

    • bbeta0 と同じ要素数の係数ベクトルです。

    • x は、X と同じ列数または tbl の予測子変数の列数がある行列です。

    modelfun(b,x) は、x と同じ行数の列ベクトルを返します。ベクトルの各行は、x の対応する行の modelfun の評価結果です。つまり、modelfun はベクトル化された関数であり、1 回の関数呼び出しですべてのデータ行で動作しすべての評価を返します。有意な係数を得るには、modelfun は実数を返さなければなりません。

  • 'y ~ f(b1,b2,...,bj,x1,x2,...,xk)' という形式の文字ベクトルまたは string スカラー。f は、スカラー係数変数 b1,...,bj とスカラー データ変数 x1,...,xk のスカラー関数を表します。

データ型: 関数ハンドル | char | string

数値ベクトルとして指定される、非線形モデルの係数。NonLinearModel は、beta0 から最適な係数の検索を開始します。

データ型: single | double

名前と値のペアの引数

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

モデル係数の名前。文字ベクトル、string 配列、または文字ベクトルの cell 配列を指定します。

データ型: char | string | cell

誤差分散モデルの形式。以下のいずれかとして指定します。各モデルは、標準平均 0 と単位分散変数 e を、独立成分と併用して誤差を定義します。使用される独立成分は、関数値 f と、1 つまたは 2 つのパラメーター a および b です。

'constant' (既定の設定)y=f+ae
'proportional'y=f+bfe
'combined'y=f+(a+b|f|)e

Weights を使用しているときに使用できる誤差モデルは 'constant' だけです。

メモ

'constant' 以外の誤差モデルを使用している場合、options.RobustWgtFun に値 [] を指定しなければなりません。

例: 'ErrorModel','proportional'

選択された ErrorModel の誤差モデル パラメーターの初期推定。数値配列として指定します。

誤差モデルパラメーター既定値
'constant' a1
'proportional'b1
'combined'a、b[1,1]

Weights を使用しているときに使用できる誤差モデルは 'constant' だけです。

メモ

'constant' 以外の誤差モデルを使用している場合、options.RobustWgtFun に値 [] を指定しなければなりません。

たとえば、'ErrorModel' の値が 'combined' である場合は、次のように a に対して開始値 1 を指定し、b に対して開始値 2 を指定できます。

例: 'ErrorParameters',[1,2]

近似から除外する観測値。'Exclude' と、近似から除外する観測値を示す論理インデックス ベクトルまたは数値インデックス ベクトルで構成されるコンマ区切りのペアとして指定します。

たとえば、以下のいずれかの例を使用して、6 つの観測値のうち観測値 2 および 3 を除外できます。

例: 'Exclude',[2,3]

例: 'Exclude',logical([0 1 1 0 0 0])

データ型: single | double | logical

反復的なあてはめ手順を制御するオプション。statset で作成した構造体を指定します。関連するフィールドは、statset('nlinfit') という呼び出しによって返される構造体に含まれている空でないフィールドです。

オプション意味既定の設定
DerivStep有限差分導関数計算で使用する相対差分。正のスカラーまたはオプション構造体を使用して関数 Statistics and Machine Learning Toolbox™ で推定されるパラメーターのベクトルと同じサイズの正のスカラーのベクトル。eps^(1/3)
Display

近似アルゴリズムで表示される情報量。

  • 'off' — 何の情報も表示しません。

  • 'final' — 最終出力を表示します。

  • 'iter' — 反復出力をコマンド ウィンドウに表示します。

'off'
FunValCheckモデル関数の無効な値 (NaNInf など) をチェックすることを示す文字ベクトルまたは string スカラー。'on'
MaxIter反復の最大許容回数。正の整数。200
RobustWgtFunロバスト近似用の重み関数。入力として正規化された残差を受け取り、出力としてロバストな重みを返す、関数ハンドルとしても使用できます。関数ハンドルを使用する場合、定数 Tune を使用します。ロバスト オプションを参照してください。[]
Tuneロバスト近似に使用する調整定数で、重み関数を適用する前に残差を正規化するため使用します。正のスカラー。重み関数が関数ハンドルとして指定されている場合は必須です。既定の設定は、RobustWgtFun により異なります。詳細は、ロバスト オプションを参照してください。
TolFun目的関数値の終了許容誤差。正のスカラー。1e-8
TolXパラメーターの終了許容誤差。正のスカラー。1e-8

データ型: 構造体

あてはめで使用する予測子変数。'PredictorVars' と、テーブルまたはデータセット配列 tbl に格納されている変数の名前を表す文字ベクトルの cell 配列または string 配列、またはどの列が予測子変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。

string 値または文字ベクトルは、tbl に含まれている名前、または名前と値のペアの引数 'VarNames' を使用して指定した名前でなければなりません。

既定の設定は、X 内のすべての変数、または ResponseVar を除く、tbl 内のすべての変数です。

たとえば、以下のいずれかの例を使用して、2 番目と 3 番目の変数を予測子変数として指定できます。

例: 'PredictorVars',[2,3]

例: 'PredictorVars',logical([0 1 1 0 0 0])

データ型: single | double | logical | string | cell

あてはめで使用する応答変数。'ResponseVar' と、テーブルまたはデータセット配列 tbl 内の変数名が格納されている文字ベクトルまたは string 配列、またはどの列が応答変数であるかを示す論理インデックス ベクトルまたは数値インデックス ベクトルから構成されるコンマ区切りのペアとして指定します。通常、テーブルまたはデータセット配列 tbl を近似させる場合に 'ResponseVar' を使用する必要があります。

たとえば、以下のいずれかの方法を使用して、6 つの変数のうち 4 番目の変数、つまり yield を応答変数として指定できます。

例: 'ResponseVar','yield'

例: 'ResponseVar',[4]

例: 'ResponseVar',logical([0 0 0 1 0 0])

データ型: single | double | logical | char | string

変数の名前。'VarNames' と、X の列名が最初に、応答変数 y の名前が最後に含まれている文字ベクトルの cell 配列または string 配列から構成されるコンマ区切りのペアとして指定します。

テーブルまたはデータセット配列の変数には既に名前が設定されているため、'VarNames' はこれらの配列には適用されません。

たとえば、データ内で、自動車の馬力、加速度、モデル年度が予測子変数であり、ガロンあたりの走行マイル数 (MPG) が応答変数である場合は、以下のように変数に名前を付けることができます。

例: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

データ型: string | cell

観測値の重み。非負のスカラー値のベクトルまたは関数ハンドルとして指定します。

  • ベクトルを指定する場合、n 個の要素をもたなければならないので、n は tbl または y の行数になります。

  • 関数ハンドルを指定する場合、関数は予測される応答値のベクトルを入力として受け入れ、正の実数重みのベクトルを出力として返さなければなりません。

重み W に対して NonLinearModel は観測 i における誤差分散を MSE*(1/W(i)) により推定します。MSE は平均二乗誤差です。

データ型: single | double | 関数ハンドル

出力引数

すべて展開する

データに対する応答の最小二乗近似を表す非線形モデル。NonLinearModel オブジェクトとして返されます。

構造体 Options に空でないフィールド RobustWgtFun が含まれる場合、このモデルは最小二乗近似ではありませんが、ロバスト近似関数 RobustWgtFun を使用します。

非線形モデル オブジェクト mdl のプロパティとメソッドについては、NonLinearModel クラスのページを参照してください。

すべて展開する

carbig データに基づいて自動車の燃費のための非線形モデルを作成します。

データを読み込んで非線形モデルを作成します。

load carbig
tbl = table(Horsepower,Weight,MPG);
modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) + ...
    b(4)*x(:,2).^b(5);
beta0 = [-50 500 -1 500 -1];
mdl = NonLinearModel.fit(tbl,modelfun,beta0)
mdl = 
Nonlinear regression model:
    MPG ~ b1 + b2*Horsepower^b3 + b4*Weight^b5

Estimated Coefficients:
          Estimate      SE        tStat       pValue 
          ________    _______    ________    ________

    b1     -49.383     119.97    -0.41164     0.68083
    b2      376.43     567.05     0.66384     0.50719
    b3    -0.78193    0.47168     -1.6578    0.098177
    b4      422.37     776.02     0.54428     0.58656
    b5    -0.24127    0.48325    -0.49926     0.61788


Number of observations: 392, Error degrees of freedom: 387
Root Mean Squared Error: 3.96
R-Squared: 0.745,  Adjusted R-Squared 0.743
F-statistic vs. constant model: 283, p-value = 1.79e-113

carbig データに基づいて自動車の燃費のための非線形モデルを作成します。

データを読み込んで非線形モデルを作成します。

load carbig
X = [Horsepower,Weight];
y = MPG;
modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) + ...
    b(4)*x(:,2).^b(5);
beta0 = [-50 500 -1 500 -1];
mdl = NonLinearModel.fit(X,y,modelfun,beta0)
mdl = 
Nonlinear regression model:
    y ~ b1 + b2*x1^b3 + b4*x2^b5

Estimated Coefficients:
          Estimate      SE        tStat       pValue 
          ________    _______    ________    ________

    b1     -49.383     119.97    -0.41164     0.68083
    b2      376.43     567.05     0.66384     0.50719
    b3    -0.78193    0.47168     -1.6578    0.098177
    b4      422.37     776.02     0.54428     0.58656
    b5    -0.24127    0.48325    -0.49926     0.61788


Number of observations: 392, Error degrees of freedom: 387
Root Mean Squared Error: 3.96
R-Squared: 0.745,  Adjusted R-Squared 0.743
F-statistic vs. constant model: 283, p-value = 1.79e-113

carbig データに基づいて自動車の燃費のための非線形モデルを作成します。精度を高めるためにオプション TolFun の値を小さくし、オプション Display を設定して反復を観測します。

データを読み込んで非線形モデルを作成します。

load carbig
X = [Horsepower,Weight];
y = MPG;
modelfun = @(b,x)b(1) + b(2)*x(:,1).^b(3) + ...
    b(4)*x(:,2).^b(5);
beta0 = [-50 500 -1 500 -1];

TolFun の値を小さくするオプションと反復表示を報告するオプションを作成し、これらを使用してモデルを作成します。

opts = statset('Display','iter','TolFun',1e-10);
mdl = NonLinearModel.fit(X,y,modelfun,beta0,'Options',opts);
 
                                     Norm of         Norm of
   Iteration             SSE        Gradient           Step 
  -----------------------------------------------------------
           0     1.82248e+06
           1          678600          788810         1691.07
           2          616716     6.12739e+06         45.4738
           3          249831      3.9532e+06         293.557
           4           17675          361544         369.284
           5         11746.6         69670.5         169.079
           6         7242.22          343738         394.822
           7         6250.32          159719         452.941
           8         6172.87         91622.9         268.674
           9            6077         6957.44         100.208
          10         6076.34         6370.39         88.1905
          11         6075.75         5199.08         77.9694
          12          6075.3         4646.61          69.764
          13         6074.91         4235.96         62.9114
          14         6074.55         3885.28         57.0647
          15         6074.23          3571.1         52.0036
          16         6073.93         3286.48         47.5795
          17         6073.66         3028.34         43.6844
          18          6073.4         2794.31         40.2352
          19         6073.17         2582.15         37.1663
          20         6072.95         2389.68         34.4243
          21         6072.74         2214.84          31.965
          22         6072.55         2055.78         29.7516
          23         6072.37         1910.83          27.753
          24         6072.21         1778.51         25.9428
          25         6072.05          1657.5         24.2986
          26          6071.9         1546.65         22.8011
          27         6071.76         1444.93         21.4338
          28         6071.63         1351.44         20.1822
          29         6071.51         1265.39         19.0339
          30         6071.39         1186.06          17.978
          31         6071.28         1112.83         17.0052
          32         6071.17         1045.13          16.107
          33         6071.07         982.465         15.2762
          34         6070.98         924.389         14.5063
          35         6070.89         870.498         13.7916
          36          6070.8         820.434          13.127
          37         6070.72         773.872         12.5081
          38         6070.64         730.521         11.9307
          39         6070.57         690.117         11.3914
          40          6070.5         652.422          10.887
          41         6070.43         617.219         10.4144
          42         6070.37         584.315         9.97115
          43         6070.31          553.53         9.55489
          44         6070.25         524.703          9.1635
          45         6070.19         497.686         8.79506
          46         6070.14         472.345         8.44785
          47         6070.08         448.557         8.12028
          48         6070.03          426.21         7.81091
          49         6069.99         405.201         7.51845
          50         6069.94         385.435          7.2417
          51          6069.9         366.825         6.97956
          52         6069.85         349.293         6.73104
          53         6069.81         332.764         6.49523
          54         6069.77         317.171         6.27127
          55         6069.74         302.452          6.0584
          56          6069.7          288.55         5.85591
          57         6069.66         275.411         5.66315
          58         6069.63         262.986         5.47949
          59          6069.6          251.23          5.3044
          60         6069.57           240.1         5.13734
          61         6069.54         229.558         4.97784
          62         6069.51         219.567         4.82545
          63         6069.48         210.094         4.67977
          64         6069.45         201.108          4.5404
          65         6069.43         192.578           4.407
          66          6069.4         184.479         4.27923
          67         6069.38         176.785         4.15677
          68         6069.35         169.472         4.03935
          69         6069.33         162.518          3.9267
          70         6069.31         155.903         3.81855
          71         6069.29         149.608         3.71468
          72         6069.26         143.615         3.61486
          73         6069.24         137.907          3.5189
          74         6069.22         132.468         3.42658
          75         6069.21         127.283         3.33774
          76         6069.19         122.339         3.25221
          77         6069.17         117.623         3.16981
          78         6069.15         113.123         3.09041
          79         6069.14         108.827         3.01386
          80         6069.12         104.725         2.94002
          81          6069.1         100.806         2.86877
          82         6069.09         97.0611             2.8
          83         6069.07         93.4814         2.73358
          84         6069.06         90.0584         2.66942
          85         6069.05         86.7841         2.60741
          86         6069.03         83.6513         2.54745
          87         6069.02         80.6528         2.48947
          88         6069.01         77.7821         2.43338
          89         6068.99         75.0327         2.37908
          90         6068.98          72.399         2.32652
          91         6068.97         69.8752         2.27561
          92         6068.96         67.4561         2.22629
          93         6068.95         65.1366         2.17849
          94         6068.94         62.9123         2.13216
          95         6068.93         60.7784         2.08723
          96         6068.92         58.7308         2.04364
          97         6068.91         56.7655         2.00135
          98          6068.9         54.8787          1.9603
          99         6068.89         4349.28         18.1917
         100         6068.77         2416.27         14.4439
         101         6068.71         1721.26         12.1305
         102         6068.66         1228.78          10.289
         103         6068.63         884.002         8.82019
         104          6068.6         639.615         7.62744
         105         6068.58          464.84         6.64627
         106         6068.56         338.878         5.82964
         107         6068.55         247.508         5.14296
         108         6068.54         180.878         4.56032
         109         6068.53         132.084         4.06194
         110         6068.52         96.2341         3.63255
         111         6068.51         69.8362         3.26019
         112         6068.51         50.3735         2.93541
         113          6068.5         36.0205         2.65062
         114          6068.5         25.4452         2.39969
         115         6068.49         17.6693         2.17764
         116         6068.49         1027.39         14.0164
         117         6068.48         544.039          5.3137
         118         6068.48         94.0576         2.86664
         119         6068.48         113.636         3.73502
         120         6068.48        0.518567          1.3705
         121         6068.48          4.5944         0.91284
         122         6068.48         1.56389        0.629322
         123         6068.48         1.13809        0.432547
         124         6068.48        0.295936        0.297509
Iterations terminated: relative change in SSE less than OPTIONS.TolFun

関数ハンドルまたは文字ベクトルを使用して、推定用の非線形回帰モデルを指定します。

標本データを読み込みます。

S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;

関数ハンドルを使用してレート データの Hougen-Watson モデルを指定します。

mdl = NonLinearModel.fit(X,y,@hougen,beta0)
mdl = 
Nonlinear regression model:
    y ~ hougen(b,X)

Estimated Coefficients:
          Estimate       SE       tStat     pValue 
          ________    ________    ______    _______

    b1      1.2526     0.86701    1.4447    0.18654
    b2    0.062776    0.043561    1.4411    0.18753
    b3    0.040048    0.030885    1.2967    0.23089
    b4     0.11242    0.075157    1.4957    0.17309
    b5      1.1914     0.83671    1.4239     0.1923


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 0.193
R-Squared: 0.999,  Adjusted R-Squared 0.998
F-statistic vs. zero model: 3.91e+03, p-value = 2.54e-13

または、文字ベクトルを使用してレート データの Hougen-Watson モデルを指定することもできます。

myfun = 'y~(b1*x2-x3/b5)/(1+b2*x1+b3*x2+b4*x3)';
mdl2 = NonLinearModel.fit(X,y,myfun,beta0)
mdl2 = 
Nonlinear regression model:
    y ~ (b1*x2 - x3/b5)/(1 + b2*x1 + b3*x2 + b4*x3)

Estimated Coefficients:
          Estimate       SE       tStat     pValue 
          ________    ________    ______    _______

    b1      1.2526     0.86701    1.4447    0.18654
    b2    0.062776    0.043561    1.4411    0.18753
    b3    0.040048    0.030885    1.2967    0.23089
    b4     0.11242    0.075157    1.4957    0.17309
    b5      1.1914     0.83671    1.4239     0.1923


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 0.193
R-Squared: 0.999,  Adjusted R-Squared 0.998
F-statistic vs. zero model: 3.91e+03, p-value = 2.54e-13

次の非線形回帰モデルから標本データを生成します。

ここで、 および は係数です。誤差項は平均 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];
modelstr = 'y ~ b1 + b2*exp(-b3*x)';

mdl = NonLinearModel.fit(x,y,modelstr,b0,'Options',opts)
mdl = 
Nonlinear regression model (robust fit):
    y ~ b1 + b2*exp( - b3*x)

Estimated Coefficients:
          Estimate      SE       tStat       pValue  
          ________    _______    ______    __________

    b1     1.0218     0.07202    14.188    2.1344e-25
    b2     3.6619     0.25429    14.401     7.974e-26
    b3     2.9732     0.38496    7.7232    1.0346e-11


Number of observations: 100, Error degrees of freedom: 97
Root Mean Squared Error: 0.501
R-Squared: 0.807,  Adjusted R-Squared 0.803
F-statistic vs. constant model: 203, p-value = 2.34e-35

標本データを読み込みます。

S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;

観測値を重み付けするための関数ハンドルを指定します。この関数はモデル近似値を入力として受け入れ、重みのベクトルを返します。

 a = 1; b = 1;
 weights = @(yhat) 1./((a + b*abs(yhat)).^2);

指定した観測の重み関数を使用して、レート データに Hougen-Watson モデルを近似します。

mdl = NonLinearModel.fit(X,y,@hougen,beta0,'Weights',weights)
mdl = 
Nonlinear regression model:
    y ~ hougen(b,X)

Estimated Coefficients:
          Estimate       SE       tStat     pValue 
          ________    ________    ______    _______

    b1     0.83085     0.58224     1.427    0.19142
    b2     0.04095    0.029663    1.3805    0.20477
    b3    0.025063    0.019673     1.274    0.23842
    b4    0.080053    0.057812    1.3847    0.20353
    b5      1.8261       1.281    1.4256    0.19183


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 0.037
R-Squared: 0.998,  Adjusted R-Squared 0.998
F-statistic vs. zero model: 1.14e+03, p-value = 3.49e-11

標本データを読み込みます。

S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;

組み合わせた誤差分散モデルを使用して、レート データに Hougen-Watson モデルを近似します。

mdl = NonLinearModel.fit(X,y,@hougen,beta0,'ErrorModel','combined')
mdl = 
Nonlinear regression model:
    y ~ hougen(b,X)

Estimated Coefficients:
          Estimate       SE       tStat     pValue 
          ________    ________    ______    _______

    b1      1.2526     0.86702    1.4447    0.18654
    b2    0.062776    0.043561    1.4411    0.18753
    b3    0.040048    0.030885    1.2967    0.23089
    b4     0.11242    0.075158    1.4957    0.17309
    b5      1.1914     0.83671    1.4239     0.1923


Number of observations: 13, Error degrees of freedom: 8
Root Mean Squared Error: 1.27
R-Squared: 0.999,  Adjusted R-Squared 0.998
F-statistic vs. zero model: 3.91e+03, p-value = 2.54e-13

詳細

すべて展開する

アルゴリズム

NonLinearModel.fit は関数 nlinfit と同じ近似アルゴリズムを使用します。

代替方法

fitnlm を使用して非線形モデルを構築することもできます。

参照

[1] Seber, G. A. F., and C. J. Wild. Nonlinear Regression. Hoboken, NJ: Wiley-Interscience, 2003.

[2] 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.

[3] 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.