このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
外れ値の削除
外れ値の対話的な削除
曲線フィッター アプリで外れ値を削除するには、以下の手順に従います。
プロットの座標軸ツール バーで、[外れ値を除外] ボタン をクリックします。
マウス カーソルをプロットに移動すると、カーソルが十字に変わり、外れ値選択モードであることが示されます。
近似プロットまたは残差プロットで除外する点をクリックします。または、クリックしてドラッグすることにより四角形を指定し、囲まれたすべての点を削除します。
削除したプロットの点は、プロット内で赤い X 印になります。[曲線フィッター] タブの [近似] セクションで [自動] 近似を選択していた場合は、曲線フィッター アプリによって、点を除いた状態で曲面が再度当てはめられます。一方、[手動] 近似を選択していた場合は、[近似] をクリックして曲面の再近似を行います。
除外する必要があるすべての点について、このプロセスを繰り返します。
曲面近似から外れ値を削除するときは、外れ値を確認して削除できるため、2 次元残差プロットを表示すると便利です。プロット カーソルが回転モードの状態で、プロットを右クリックして [X-Y 表示に移動]、[X-Z 表示に移動]、または [Y-Z 表示に移動] を選択します。
近似内の除外した個々の点を元に戻すには、除外した点を外れ値選択モードで (座標軸ツール バーの [外れ値を除外] ボタンでモードをオンにする) 再度クリックします。近似内の除外したすべての点を元に戻すには、右クリックして [すべての除外をクリア] を選択します。
表面プロットで回転モードに戻るには、[外れ値を除外] ボタンを再度クリックして外れ値選択モードをオフにします。
データ範囲の除外
曲線フィッター アプリで、ある範囲内のデータを除外するには、以下の手順に従います。
[曲線フィッター] タブの [データ] セクションで [除外規則] をクリックします。
[除外規則] ダイアログ ボックスで、除外するデータを指定します。いずれかのボックスに数を入力して、X、Y または Z データについて除外する区間の開始値または終了値を定義します。
プロット上に影付きのピンク色領域が表示され、除外された範囲が示されます。除外された点は赤色になります。
外れ値のプログラムによる削除
この例では、関数 fit または fitoptions で 'Exclude' の名前と値のペアの引数を使用して、プログラムによって曲線で近似するときに外れ値を削除する方法を示します。関数 plot に Exclude または外れ値引数を指定することにより、除外したデータをプロットできます。
簡単な規則を使用したデータの除外
簡単な例として、データを読み込み、一部のデータを式で除外してガウス分布を当てはめます。その後、近似、データ、除外した点をプロットします。
[x, y] = titanium; f1 = fit(x',y','gauss2','Exclude',x<800); plot(f1,x,y,x<800)
モデルからの距離によるデータの除外
標準偏差を使用して、モデルからの距離により外れ値を除外すると有効な場合があります。次の例では、モデルからの距離が標準偏差の 1.5 倍を超えることを使用して外れ値を特定する方法を示し、外れ値に小さい重みを与えるロバスト近似と比較します。
ベースラインの正弦波信号を作成します。
xdata = (0:0.1:2*pi)'; y0 = sin(xdata);
分散が一定ではないノイズを信号に追加します。
% Response-dependent Gaussian noise gnoise = y0.*randn(size(y0)); % Salt-and-pepper noise spnoise = zeros(size(y0)); p = randperm(length(y0)); sppoints = p(1:round(length(p)/5)); spnoise(sppoints) = 5*sign(y0(sppoints)); ydata = y0 + gnoise + spnoise;
ノイズを含むデータにベースラインの正弦波モデルを当てはめます。
f = fittype('a*sin(b*x)'); fit1 = fit(xdata,ydata,f,'StartPoint',[1 1]);
ベースライン モデルからの距離が標準偏差の 1.5 倍を超える点を外れ値と見なし、外れ値を除外したデータに再度当てはめます。
fdata = feval(fit1,xdata); I = abs(fdata - ydata) > 1.5*std(ydata); outliers = excludedata(xdata,ydata,'indices',I); fit2 = fit(xdata,ydata,f,'StartPoint',[1 1],... 'Exclude',outliers);
外れ値を除外する効果とロバスト近似で外れ値に小さい二重平方重みを設定する効果を比較します。
fit3 = fit(xdata,ydata,f,'StartPoint',[1 1],'Robust','on');
データ、外れ値、近似の結果をプロットします。
plot(fit1,'r-',xdata,ydata,'k.',outliers,'m*') hold on plot(fit2,'c--') plot(fit3,'b:') xlim([0 2*pi])