Main Content

ロバスト近似法の比較

この例では、二重平方重み法、最小絶対残差 (LAR) 法、線形最小二乗法を使用して、多項式モデルをデータに当てはめる方法を説明します。

関数randnを使用して、ノイズを含むデータのベクトルを作成します。

rng("default")  % Set the seed for reproducibility
noise = randn([200,1]);

関数linspaceを使用して、0 と 2π の間の等間隔ポイントのベクトルを作成します。ノイズを含むデータを 1 つの正弦波サイクルに追加することによって、サンプル データのベクトルを作成します。

theta = linspace(0,2*pi,200)';
data = sin(theta) + noise;

データの 10 番目ごとの値を正規分布からのランダムな値で置き換えることによって、データに外れ値を追加します。ランダムな値として、平均 5 と標準偏差 1 を指定します。

for i=10:10:200
    data(i) = randn+5;
end

サンプル データの箱ひげ図を表示します。

boxchart(data)

箱ひげ図上にカーソルを置くと、その箱ひげ図の統計が表示されます。

get_statistics.png

以下の図は、外れ値が 4.288 より大きい値をもつデータ点であることを示しています。

関数fitでさまざまな近似法を使い、4 つの 3 次多項式モデルをデータに当てはめます。2 つのロバスト最小二乗近似法を使用します。最初のモデルの係数を二重平方重み法で計算し、3 番目のモデルの係数を LAR 法で計算します。線形最小二乗法を使用して 2 番目と 4 番目のモデルの係数を計算します。4 番目のモデルの近似内のデータから外れ値を取り除くため、4.288 より大きいデータ点を除外します。

bisquarepolyfit = fit(theta,data,"poly3",'Robust',"Bisquare");
linearpolyfit = fit(theta,data,"poly3");
larpolyfit = fit(theta,data,"poly3",Robust="LAR");
excludeoutlierspolyfit = fit(theta,data,"poly3",...
    Exclude=data>4.288);

二重平方重み近似と線形最小二乗近似を同じプロットにデータと一緒にプロットして比較します。

plot(bisquarepolyfit,theta,data)
hold on
plot(linearpolyfit,"g")
legend("data","bisquare weights fit","linear least-squares fit")
xlabel("theta")
ylabel("data")
hold off

プロットが示すように、線形最小二乗近似の曲線は、二重平方重み近似の曲線より高く、外れ値に近くなります。二重平方重み近似の曲線の方が、データの大部分の中心に寄っています。これらの曲線の相対位置は、線形最小二乗近似の方が外れ値による影響が大きいことを示しています。

二重平方重み近似と LAR 近似を比較します。

plot(bisquarepolyfit,theta,data)
hold on
plot(larpolyfit,"g")
legend("data","bisquare weights fit","LAR fit")
xlabel("theta")
ylabel("data")
hold off

LAR 近似の曲線は、二重平方重み近似の曲線に密接に追従し、線形最小二乗近似と比較すると、外れ値の影響を受けていません。プロットにズームインをして確認すると、LAR 近似の曲線が、ほとんどの theta 値で二重平方重み近似の曲線より、わずかに高くなっていることがわかります。

二重平方重み近似と、外れ値なしの線形最小二乗近似を比較します。

plot(bisquarepolyfit,theta,data)
hold on
plot(excludeoutlierspolyfit,"g")
legend("data","bisquare weights fit","linear least-squares fit (without outliers)")
xlabel("theta")
ylabel("data")
hold off

この線形最小二乗近似には、外れ値による大きな影響は表れていません。しかし、この近似は、二重平方重み近似に比べると、データの大部分の中心に寄っていません。これらのプロットをまとめて考えると、4 つのモデルの中で、データの大部分の中心に最も寄っているのは、二重平方重み法によるモデル近似であることがわかります。

参考

関数

関連するトピック