最小二乗近似
はじめに
曲线拟合工具箱™ソフトウェアでは,データを近似するときに最小二乗法を使用します。近似では1つ以上の係数を使用して応答データを予測子データと関連付けるパラメトリックモデルが必要です。近似プロセスで得られる結果はモデル係数の推定値です。
最小二乗法では,係数推定値を得るために残差平方和を最小化します。I番目のデタ点r<年代ub>我年代ub>の残差は,観測応答値y<年代ub>我年代ub>と近似応答値<年代ub>我年代ub>の差として定義され,デ,タに関連する誤差として認識されます。
残差平方和は次で与えられます
ここで,nは近似に含まれるデ,タ点の数,Sは誤差の二乗和の推定値です。以下のタ▪▪プの最小二乗近似がサポ▪▪トされています。
線形最小二乗法
重み付き線形最小二乗法
ロバスト最小二乗法
非線形最小二乗法
誤差分布
ランダムな変動を含むデータを近似する場合,誤差に関して通常適用される重要な仮定として次の2つがあります。
誤差は応答デ,タのみに存在し,予測子デ,タには存在しない。
誤差はランダムであり,平均がゼロで分散σ<年代up>2年代up>が一定の正規(ガウス)分布に従う。
2番目の仮定は多くの場合,次のように表現されます。
正規分布は通常多くの測定量の分布に対して適切な近似となるため,誤差は正規分布すると仮定します。最小二乗近似法は、パラメーター推定値を計算するときに誤差が正規分布していることを仮定しませんが、極端な値の確率的誤差が大量に含まれていないデータに対しては最も効果的な方法です。正規分布は極端な確率的誤差が少ない確率分布の 1 つです。ただし、信頼限界や予測限界などの統計結果では、妥当性を確保するために誤差が正規分布している必要があります。
誤差の平均値がゼロの場合,誤差は純粋にランダムです。平均値がゼロでない場合,データに対するモデルの選択が適切でないか,誤差が純粋にランダムではなく系統的誤差を含んでいる可能性があります。
デ,タの分散が一定であるのは,誤差の“広がり”が一定であることを意味します。分散が同じデ,タは,"等質"と呼ばれる場合があります。
重み付き最小二乗回帰では,確率的誤差の分散が一定であることを暗黙的に仮定しません。その代わりに,近似手順で指定される重みによってデータの品質レベルの違いが正しく示されることを仮定します。この重みは,近似係数の推定値に対する各データ点の影響の大きさを適切なレベルに調整するために使用されます。
線形最小二乗法
曲线拟合工具箱ソフトウェアでは,線形最小二乗法を使用して線形モデルをデータに当てはめます。"線形"<年代p一个nclass="emphasis">モデルは,係数にいて線形である方程式として定義されます。たとえば,多項式は線形ですが,ガウス関数は線形ではありません。線形最小二乗近似のプロセスを説明するために,1次多項式でモデル化できるn個のデータ点があるとします。
未知の係数p<年代ub>1年代ub>とp<年代ub>2年代ub>についてこの方程式を解くために,年代を未知数が2つのn個の方程式から成る連立線形方程式系とします。Nが未知数の数より大きい場合,この方程式系は“過決定”<年代p一个nclass="emphasis">です。
最小二乗近似プロセスでは残差平方和を最小化するため,年代を各パラメーターで微分し,その結果をゼロとすることにより係数を決定します。
真のパラメ,タ,の推定値は通常,bで表されます。b<年代ub>1年代ub>およびb<年代ub>2年代ub>をp<年代ub>1年代ub>およびp<年代ub>2年代ub>に代入すると,前の方程式は次のようになります。
ここで,和の範囲はI = 1からnまでです。<年代p一个nclass="emphasis">"正規方程式"は次のように定義されます
b<年代ub>1年代ub>にいて解きます
b<年代ub>1年代ub>の値を使用してb<年代ub>2年代ub>にいて解きます
このように,係数p<年代ub>1年代ub>およびp<年代ub>2年代ub>の推定に必要なのは,数回の簡単な計算だけです。この例をより次数の高い多項式に拡張するのは簡単ですが,多少手間がかかります。必要なのは,モデルに追加した各線形項に対する正規方程式を追加することだけです。
行列形式では,線形モデルは次の式で与えられます
y = Xβ + ε
ここで,
Yはn行1列の応答ベクトルです。
βはm行1列の係数ベクトルです。
Xはこのモデルのn行m列の計画行列です。
εはn行1列の誤差ベクトルです。
1次多項式の場合,未知数が2つのn個の方程式はy, Xおよびβにより次のように表されます。
この問題の最小二乗解をベクトルbとします。これにより未知の係数ベクトルβが推定されます。正規方程式は次で与えられます
(X<年代up>T年代up>X)b = X<年代up>T年代up>y
ここで,x<年代up>T年代up>は計画行列xの転置行列です。Bにいて解きます
b = (X)<年代up>T年代up>X)<年代up>1年代up>X<年代up>T年代up>y
MATLAB<年代up>®年代up>のバックスラッシュ演算子(<一个href="//www.tatmou.com/jp/jp/jp/jp/help/matlab/ref/mldivide.html">mldivide
)を使用して,未知の係数にいて連立線形方程式系を解きます。X<年代up>T年代up>Xの逆行列を計算すると許容できない丸め誤差が発生する場合があるため,バックスラッシュ演算子ではピボットによるQR分解が使用されます。この分解は数値的に非常に安定なアルゴリズムです。バックスラッシュ演算子とqr分解の詳細にいては,<一个href="//www.tatmou.com/jp/jp/jp/jp/help/matlab/arithmetic.html" class="a">算術演算一个>を参照してください。
Bをモデルの式に戻すと予測された応答値が得られます。
= Xb = Hy
H = x (x<年代up>T年代up>X)<年代up>1年代up>X<年代up>T年代up>
文字の上にあるハット記号(曲折アクセント符号)はパラメーターの推定値またはモデルの予測値を示します。射影行列Hはyにハット記号を付けるためハット行列と呼ばれます。
残差は次で与えられます
r = y - (1-H)y
重み付き最小二乗法
通常,応答デ,タは等質,まり分散が一定であると仮定します。この仮定を満たしていない場合,近似は低品質のデ,タの影響を過度に受ける可能性があります。この近似を改良するために重み付き最小二乗回帰を使用できます。この場合,追加のスケ,ル係数(重み)が近似プロセスに含まれます。重み付き最小二乗回帰は次の誤差の推定値を最小化します
ここで,w<年代ub>我年代ub>は重みです。この重みは,各応答値が最終的なパラメ,タ,推定値にどの程度影響するかを決定します。品質の高いデ,タ点が,品質の低いデ,タ点よりも近似に大きく影響するようにします。重みが既知の場合またはそれらが特定の形式に従う正当な理由がある場合は,データに重みを付けることを推奨します。
重みを付けると,パラメ,タ,推定値bの式は次のように変わります。
ここでWは重み行列Wの対角要素で与えられます。
多くの場合,分散が一定かどうかはデ,タを近似して残差をプロットすることで判断できます。以下に示すプロットでは,データにさまざまな品質の複製データが含まれていて,近似は正しいと考えられます。残差のプロットからデ,タの品質が低いことがわかります。このプロットは“漏斗”状であり,大きい予測子値よりも小さい予測子値の方で応答値が大きく散在しています。
重みは,応答の分散が定数値になるように指定する必要があります。デ,タに含まれる測定誤差の分散が既知の場合,重みは次で与えられます
また,各データ点の誤差変数の推定値しかわからない場合は,真の分散の代わりにこれらの推定値を使用することで通常は間に合います。分散が不明な場合,相対スケ,ルの重みを指定すれば十分です。重みを指定しても全体の分散項を推定できることに注意してください。この場合,重みは近似の各点の相対的な重みを定義しますが,それぞれの点の正確な分散を指定するものとは見なされません。
たとえば,各データ点が複数の独立した測定値の平均値である場合,測定回数を重みとして使用するのが理にかなっていることがあります。
ロバスト最小二乗法
通常,応答誤差は正規分布に従い,極端な値はまれであると仮定します。ただし,“外れ値”<年代p一个nclass="emphasis">と呼ばれる極端な値が発生します。
最小二乗近似の主な欠点は外れ値の影響を受けやすいことです。残差を2乗すると極端なデ,タ点の効果が拡大するため,外れ値は近似に大きく影響します。外れ値の影響を最小限に抑えるには,ロバスト最小二乗回帰を使用してデ,タに当てはめます。2。
最小絶対残差(政治)——守护神法は,残差の二乗ではなく残差の絶対値を最小化する曲線を求めます。そのため,極端な値による近似への影響が小さくなります。
二重平方重み-この方法は,重み付き二乗和を最小化します。各デ,タ点に与えられる重みはその点の近似直線からの距離によって決まります。直線に近い点は最大限の重み付けがなされます。直線から遠い点ほど重みが減少します。直線からの距離が偶然に起因すると考えられる距離を超えている点はゼロに重み付けされます。
二重平方重みは通常の最小二乗法を使用してデータの大部分に当てはめる曲線を求めると同時に外れ値の影響を最小化するため,多くの場合,守护神よりも二重平方重み法の方が好まれます。
二重平方重みによるロバスト近似は,反復重み付き最小二乗アルゴリズムを使用し,次の手順に従います。
重み付き最小二乗法によるモデルで近似します。
“調整済み残差”<年代p一个nclass="emphasis">を計算し,それらを標準化します。調整済み残差は次で与えられます
r<年代ub>我年代ub>は通常の最小二乗残差,h<年代ub>我年代ub>は"てこ比"<年代p一个nclass="emphasis">であり,最小二乗近似に大きな影響を与えるてこ比の大きいデータ点の重みを減らすことにより残差を調整します。標準化された調整済み残差は次で与えられます
Kは調整定数4.685,sはMAD/0.6745で与えられるロバスト標準偏差です。ここでmadは残差の中央絶対偏差です。
ロバスト重みをuの関数として計算します。二重平方重みは次で与えられます
独自の回帰重みベクトルを指定する場合,最終的な重みはロバスト重みと回帰重みの積であることに注意してください。
近似が収束した場合,これで完了です。そうでない場合は,最初の手順に戻り,近似手順の次の反復を実行します。
次に示すプロットは二重平方重みを使用するロバスト近似を通常の線形近似と比較しています。ロバスト近似は大部分のデータに従い、外れ値の影響をあまり受けていないことに注意してください。
ロバスト回帰を使用して外れ値の影響を最小化する代わりに,近似から排除するデータ点をマークすることができます。詳細にいては,<一个href="//www.tatmou.com/jp/jp/jp/jp/help/curvefit/removing-outliers.html" class="a">外れ値の削除一个>を参照してください。
非線形最小二乗法
曲线拟合工具箱ソフトウェアでは,非線形最小二乗法を使用して非線形モデルをデータに当てはめます。非線形モデルは,係数について非線形な方程式,または係数について線形と非線形の組み合わせである方程式として定義されます。たとえば,ガウス関数,多項式の比,べき関数はすべて非線形です
行列形式では,非線形モデルは次の式で与えられます
y = f(X,β) + ε
ここで,
Yはn行1列の応答ベクトルです。
fはβとXの関数です。
βはm行1列の係数ベクトルです。
Xはこのモデルのn行m列の計画行列です。
εはn行1列の誤差ベクトルです。
非線形モデルでは,単純な行列手法を使用した係数推定ができないため,線形モデルよりも近似が困難です。その代わりに,次の手順に従う反復法が必要になります。
各係数の初期推定から始めます。一部の非線形モデルでは,妥当な開始値を生成するヒュ,リスティックな方法が用意されています。その他のモデルでは,区間[0,1]でランダムな値が提供されます。
現在の一連の係数にいて近似曲線を生成します。近似応答値は次で与えられます
f(X,b)
ここでf(X,b)の“ヤコビアン”<年代p一个nclass="emphasis">を計算する必要があります。これは,係数にいての偏導関数の行列として定義されます。
係数を調整し,近似を改良できるかどうかを判断します。調整の方向と大きさは近似アルゴリズムにより異なります。ルボックスには次のアルゴリズムが用意されています。
信赖域——これは既定のアルゴリズムであり,係数制約を指定する場合は使用しなければなりません。難しい非線形問題を他のアルゴリズムよりも効率的に解くことができ,一般に普及しているレーベンバーグ・マルカートアルゴリズムよりも改善が見られます。
レーベンバーグ・マルカート——このアルゴリズムは長年にわたって使用されており,さまざまな非線形モデルと開始値に対して大体の場合は機能することが実証されています。信頼領域アルゴリズムで適切な近似が生成されず,係数制約がない場合は,レーベンバーグ・マルカートアルゴリズムを試してください。
指定された収束条件を近似が満たすまで,手順2に戻りこのプロセスを繰り返します。
非線形モデルに重みおよびロバスト近似を使用できますが,近似プロセスはそれに応じて変更されます。
この近似プロセスの性質上,すべての非線形モデル,データセット,開始点に対応する絶対確実なアルゴリズムはありません。そのため,既定の開始点,アルゴリズム,収束条件を使用して妥当な近似を実現できない場合は,別のオプションを試してください。既定のオプションを変更する方法にいては,<一个href="//www.tatmou.com/jp/jp/jp/jp/help/curvefit/parametric-fitting.html" class="a">近似オプションと最適化された開始点の指定一个>を参照してください。非線形モデルは開始点の影響を特に受けやすい場合があるため,近似オプションの中でも開始点を最初に変更してください。
ロバスト近似
この例では,外れ値の排除による効果とロバスト近似の効果を比較する方法を示します。この例は,モデルからの距離が標準偏差の1.5倍を超える任意の外れ値を排除する方法を示します。さらに,その手順において,外れ値を削除する場合と外れ値に小さい重みを設定するロバスト近似を指定する場合を比較します。
ベスランの正弦波信号を作成します。
Xdata = (0:0.1:2*pi)';Y0 = sin(xdata);
分散が一定ではないノ@ @ズを信号に追加します。
%响应相关的高斯噪声年代p一个n>Gnoise = y0.*randn(size(y0));<年代p一个n年代tyle="color:#228B22">椒盐味的噪音年代p一个n>Spnoise = 0 (size(y0));P = randperm(length(y0));点= p(1:圆(长度(p)/5));Spnoise (sppoints) = 5*符号(y0(sppoints));Ydata = y0 + gnoise + spnoise;
ノイズを含むデータにベースラインの正弦波モデルを当てはめ,3つの出力引数を指定して残差を含む近似情報を取得します。
F = fittype(<年代p一个n年代tyle="color:#A020F0">“* sin (b * x)”年代p一个n>);[fit1,gof,fitinfo] = fit(xdata,ydata,f,<年代p一个n年代tyle="color:#A020F0">曾经繁荣的年代p一个n>[1]);
Fitinfo構造体の情報を確認します。
fitinfo
fitinfo =<年代p一个nclass="emphasis">带字段的结构:numobs: 63 numparam: 2 residuals: [63x1 double] Jacobian: [63x2 double] exitflag: 3 firstorderopt: 0.0883 iterations: 5 funcCount: 18 cgiterations: 0 algorithm: 'trust- area -reflective' stepsize: 4.1539e-04 message: '成功,但拟合停止,因为残差的变化小于公差(TolFun)。'
Fitinfo構造体から残差を取得します。
残差= fitinfo.residuals;
ベースラインモデルからの距離が標準偏差の1.5倍を超える任意の点を”外れ値”と特定し,外れ値を排除したデータを再近似します。
I = abs(残差)> 1.5 * std(残差);异常值= excludedata(xdata,ydata,<年代p一个n年代tyle="color:#A020F0">“指标”年代p一个n>,我);Fit2 = fit(xdata,ydata,f,<年代p一个n年代tyle="color:#A020F0">曾经繁荣的年代p一个n>[1],<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“排除”年代p一个n>、异常值);
外れ値を排除する効果とロバスト近似で外れ値に小さい二重平方重みを設定する効果を比較します。
Fit3 = fit(xdata,ydata,f,<年代p一个n年代tyle="color:#A020F0">曾经繁荣的年代p一个n>[1],<年代p一个n年代tyle="color:#A020F0">“稳健”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“上”年代p一个n>);
デ,タ,外れ値,近似の結果をプロットします。内容を説明する凡例を指定します。
情节(fit1<年代p一个n年代tyle="color:#A020F0">的r -年代p一个n>xdata ydata,<年代p一个n年代tyle="color:#A020F0">“k”。年代p一个n>离群值,<年代p一个n年代tyle="color:#A020F0">“m *”年代p一个n>)举行<年代p一个n年代tyle="color:#A020F0">在年代p一个n>情节(fit2<年代p一个n年代tyle="color:#A020F0">“c——”年代p一个n>)情节(fit3<年代p一个n年代tyle="color:#A020F0">”乙:“年代p一个n>xlim([0 2*pi])<年代p一个n年代tyle="color:#A020F0">“数据”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“第二次合身数据排除”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“原来适合”年代p一个n>,<年代p一个n年代tyle="color:#0000FF">...年代p一个n>“符合分数排除”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">健壮的适合的年代p一个n>)举行<年代p一个n年代tyle="color:#A020F0">从年代p一个n>
外れ値を考慮した2の近似の残差をプロットします。
图绘制(fit2 xdata ydata,<年代p一个n年代tyle="color:#A020F0">“有限公司”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“残差”年代p一个n>)举行<年代p一个n年代tyle="color:#A020F0">在年代p一个n>情节(fit3 xdata ydata,<年代p一个n年代tyle="color:#A020F0">“软”年代p一个n>,<年代p一个n年代tyle="color:#A020F0">“残差”年代p一个n>)举行<年代p一个n年代tyle="color:#A020F0">从年代p一个n>