MATLAB では LSCOV 関数が提供されています。
x = lscov(A,b,w)
w が正の実数重みのベクトルの長さ m である x = lscov(A,b,w) は、線形方程式 A*x = b に対する重み付き最小二乗解を返します。つまり、x は (b - A*x)'*diag(w)*(b - A*x) を最小にします。w は一般的に回数または逆行列分散を含みます。
その他の Toolbox により提供されている関数でも解くことができます。
==================
1. Statistics Toolbox:
==================
Statistics Toolbox の ROBUSTFIT 関数を使用することができます。
B = ROBUSTFIT(X,Y,'WFUN',TUNE,'CONST')
ROBUSTFIT は、重み関数 WFUN を指定します。TUNE は、重みを計算する前に残差ベクトルに分割される調整定数です。重み関数 WFUN には、 'andrews' 'bisquare', 'cauchy', 'fair', 'huber','logistic', 'talwar', 'welsch' の文字列のいずれかを設定することができます。上記の重み関数を特定するその他の方法として、独自に重み関数を作成する方法があります(WFUN)。
ROBUSTFIT 関数の詳細は以下の URL にあります。
または以下のコマンドで MATLAB のヘルプブラウザに表示させることができます。
>> doc robustfit
なお、R14SP3 では非線形の重み付き最小二乗法には対応していません。
====================
2. Curve Fitting Toolbox
====================
Curve Fitting Toolbox では、さらに一般的な重み付き最小二乗法を解く方法が提供されています。こちらは線形、非線形ともに対応しています。重みは FITOPTIONS 関数を使用する場合のオプションを使用します。FITOPTIONS 関数の詳細は以下のURLにあります。
====================
3. Optimization Toolbox.
====================
Optimization Toolbox により提供されている LSQNONLIN および LSQCURVEFIT 関数を最小二乗法に使用することができます。LSQNONLIN 関数を重み付き最小二乗法に使用するためにはデータに Fit させるための方程式が必要です。LSQNONLIN を使用した重み付き最小二乗法の例は「重み付き最小二乗法に LSQNONLIN 関数を使用するにはどうすればよいですか?」をご覧ください。