メインコンテンツ

robustcov

ロバスト多変量共分散および平均の推定

説明

sig = robustcov(x) は、x に格納されている多変量データのロバスト共分散推定値 sig を返します。

[sig,mu] = robustcov(x) は、ロバスト最小共分散行列式 (MCD) の平均 mu の推定値も返します。

[sig,mu,mah] = robustcov(x) は、平均および共分散のロバスト推定値を使用して観測値のマハラノビス距離として計算したロバスト距離 mah も返します。

[sig,mu,mah,outliers] = robustcov(x) は、標本データ内で外れ値として記録されている観測値のインデックス outliers も返します。

[sig,mu,mah,outliers,s] = robustcov(x) は、推定に関する情報が格納されている構造体 s も返します。

[___] = robustcov(x,Name,Value) は、1 つ以上の Name,Value ペア引数で指定された追加オプションを使用して、前の構文に示されている引数のいずれかを返します。たとえば、使用するロバスト推定器や、アトラクターに対して使用する開始方法を指定できます。

すべて折りたたむ

ガウス型コピュラを使用して、二変量分布からランダムなデータ点を生成します。

rng default
rho = [1,0.05;0.05,1];
u = copularnd('Gaussian',rho,50);

無作為に選択した 5 つの観測値を外れ値に変更します。

noise = randperm(50,5);
u(noise,1) = u(noise,1)*5;

使用可能な 3 つの方式を使用して、ロバスト共分散行列を計算します。つまり、高速 MCD、直交 Gnanadesikan-Kettenring (OGK) および Olive-Hawkins です。

[Sfmcd, Mfmcd, dfmcd, Outfmcd] = robustcov(u);
[Sogk, Mogk, dogk, Outogk] = robustcov(u,'Method','ogk');
[Soh, Moh, doh, Outoh] = robustcov(u,'Method','olivehawkins');

マハラノビス尺度を使用して、標本データの従来型の距離の値を計算します。

d_classical = pdist2(u, mean(u),'mahal');
p = size(u,2);
chi2quantile = sqrt(chi2inv(0.975,p));

各ロバスト共分散計算法について DD プロットを作成します。

tiledlayout(2,2)
nexttile
plot(d_classical, dfmcd, 'o')
line([chi2quantile, chi2quantile], [0, 30], 'color', 'r')
line([0, 6], [chi2quantile, chi2quantile], 'color', 'r')
hold on
plot(d_classical(Outfmcd), dfmcd(Outfmcd), 'r+')
xlabel('Mahalanobis Distance')
ylabel('Robust Distance')
title('DD Plot, FMCD method')
hold off

nexttile
plot(d_classical, dogk, 'o')
line([chi2quantile, chi2quantile], [0, 30], 'color', 'r')
line([0, 6], [chi2quantile, chi2quantile], 'color', 'r')
hold on
plot(d_classical(Outogk), dogk(Outogk), 'r+')
xlabel('Mahalanobis Distance')
ylabel('Robust Distance')
title('DD Plot, OGK method')
hold off

nexttile
plot(d_classical, doh, 'o')
line([chi2quantile, chi2quantile], [0, 30], 'color', 'r')
line([0, 6], [chi2quantile, chi2quantile], 'color', 'r')
hold on
plot(d_classical(Outoh), doh(Outoh), 'r+')
xlabel('Mahalanobis Distance')
ylabel('Robust Distance')
title('DD Plot, Olive-Hawkins method')
hold off

Figure contains 3 axes objects. Axes object 1 with title DD Plot, FMCD method, xlabel Mahalanobis Distance, ylabel Robust Distance contains 4 objects of type line. One or more of the lines displays its values using only markers Axes object 2 with title DD Plot, OGK method, xlabel Mahalanobis Distance, ylabel Robust Distance contains 4 objects of type line. One or more of the lines displays its values using only markers Axes object 3 with title DD Plot, Olive-Hawkins method, xlabel Mahalanobis Distance, ylabel Robust Distance contains 4 objects of type line. One or more of the lines displays its values using only markers

DD プロットでは、原点を通過する直線にデータ点が集まる傾向があります。この直線から離れた位置にある点は、一般に外れ値であると考えられます。前の各プロットで、赤い '+' 記号は robustcov で外れ値と見なされたデータ点を示します。

この例では、robustcov を使用して標本データが多変量正規分布または他の楕円輪郭 (EC) 分布であるかを評価する方法を示します。

多変量正規分布から、ランダムな標本データを生成します。ロバスト共分散推定用 (Olive-Hawkins 法を使用) と従来型の共分散推定用のマハラノビス距離を計算します。

rng('default')
x1 = mvnrnd(zeros(1,3),eye(3),200);
[~, ~, d1] = robustcov(x1,'Method','olivehawkins');
d_classical1 = pdist2(x1,mean(x1),'mahalanobis');

楕円輪郭 (EC) 分布から、ランダムな標本データを生成します。ロバスト共分散推定用 (Olive-Hawkins 法を使用) と従来型の共分散推定用のマハラノビス距離を計算します。

mu1 = [0 0 0];
sig1 = eye(3);
mu2 = [0 0 0];
sig2 = 25*eye(3);
x2 = [mvnrnd(mu1,sig1,120);mvnrnd(mu2,sig2,80)];
[~, ~, d2] = robustcov(x2, 'Method','olivehawkins');
d_classical2 = pdist2(x2, mean(x2), 'mahalanobis');

多変量対数正規分布から、ランダムな標本データを生成します。これは、多変量正規分布でも楕円輪郭分布でもありません。ロバスト共分散推定用 (Olive-Hawkins 法を使用) と従来型の共分散推定用のマハラノビス距離を計算します。

x3 = exp(x1);
[~, ~, d3] = robustcov(x3, 'Method','olivehawkins');
d_classical3 = pdist2(x3, mean(x3), 'mahalanobis');

比較のため、3 組の標本データのそれぞれについて D-D プロットを作成します。

figure
subplot(2,2,1)
plot(d_classical1,d1, 'o')
line([0 4.5], [0, 4.5])
xlabel('Mahalanobis Distance')
ylabel('Robust Distance')
title('DD Plot, Multivariate Normal')

subplot(2,2,2)
plot(d_classical2, d2, 'o')
line([0 18], [0, 18])
xlabel('Mahalanobis Distance')
ylabel('Robust Distance')
title('DD Plot, Elliptically-Contoured')

subplot(2,2,3)
plot(d_classical3, d3, 'o')
line([0 18], [0, 18])
xlabel('Mahalanobis Distance')
ylabel('Robust Distance')
title('DD Plot, 200 Lognormal cases')

Figure contains 3 axes objects. Axes object 1 with title DD Plot, Multivariate Normal, xlabel Mahalanobis Distance, ylabel Robust Distance contains 2 objects of type line. One or more of the lines displays its values using only markers Axes object 2 with title DD Plot, Elliptically-Contoured, xlabel Mahalanobis Distance, ylabel Robust Distance contains 2 objects of type line. One or more of the lines displays its values using only markers Axes object 3 with title DD Plot, 200 Lognormal cases, xlabel Mahalanobis Distance, ylabel Robust Distance contains 2 objects of type line. One or more of the lines displays its values using only markers

多変量正規分布のデータ (左上) では、プロットされた点は原点から伸びる 45°の直線に従っています。楕円輪郭分布のデータ (右上) では、プロットされた点は直線に従っていますが、角度は 45°ではありません。対数正規分布 (左下) では、プロットされた点は直線に従っていません。

ほとんどの点がプロットの左下にあるので、対数正規分布のパターンを特定することは困難です。重み付きの DD プロットを使用して、この隅を拡大し、大きいロバスト距離が存在すると明らかではなくなる特徴量を明らかにします。

d3_weighted = d3(d3 < sqrt(chi2inv(0.975,3)));
d_classical_weighted = d_classical3(d3 < sqrt(chi2inv(0.975,3)));

4 番目のサブプロットを図に追加して、対数正規分布データに重みを付けた結果を示します。

subplot(2,2,4)
plot(d_classical_weighted, d3_weighted, 'o')
line([0 3], [0, 3])
xlabel('Mahalanobis Distance')
ylabel('Robust Distance')
title('Weighted DD Plot, 200 Lognormal cases')

Figure contains 4 axes objects. Axes object 1 with title DD Plot, Multivariate Normal, xlabel Mahalanobis Distance, ylabel Robust Distance contains 2 objects of type line. One or more of the lines displays its values using only markers Axes object 2 with title DD Plot, Elliptically-Contoured, xlabel Mahalanobis Distance, ylabel Robust Distance contains 2 objects of type line. One or more of the lines displays its values using only markers Axes object 3 with title DD Plot, 200 Lognormal cases, xlabel Mahalanobis Distance, ylabel Robust Distance contains 2 objects of type line. One or more of the lines displays its values using only markers Axes object 4 with title Weighted DD Plot, 200 Lognormal cases, xlabel Mahalanobis Distance, ylabel Robust Distance contains 2 objects of type line. One or more of the lines displays its values using only markers

このプロットのスケールは、対数正規データが元の DD プロットの拡大表示になっていることを示しています。この表示は、プロットにパターンがないことをより明確に示しています。したがって、データが多変量正規分布にも楕円輪郭分布にもなっていないことがわかります。

ガウス型コピュラを使用して、二変量分布からランダムなデータ点を生成します。

rng default
rho = [1,0.05;0.05,1];
u = copularnd('Gaussian',rho,50);

無作為に選択した 5 つの観測値を外れ値に変更します。

noise = randperm(50,5);
u(noise,1) = u(noise,1)*5;

散布図を使用して二変量データを可視化します。

figure
scatter(u(:,1),u(:,2))

Figure contains an axes object. The axes object contains an object of type scatter.

ほとんどのデータ点がプロットの左側にあります。しかし、一部のデータ点は右の離れた位置にあります。これらの点は、共分散行列の計算に影響を与える外れ値である可能性があります。

従来型の共分散行列とロバスト共分散行列を比較します。

c = cov(u)  
c = 2×2

    0.5523    0.0000
    0.0000    0.0913

rc = robustcov(u)
rc = 2×2

    0.1117    0.0364
    0.0364    0.1695

標本データ内に存在する外れ値が結果に影響を与えるので、従来型の共分散行列とロバスト共分散行列は異なります。

robustcov が外れ値と見なすデータ点を特定してプロットします。

[sig,mu,mah,outliers] = robustcov(u);
figure
gscatter(u(:,1),u(:,2),outliers,'br','ox')
legend({'Not outliers','Outliers'})

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Not outliers, Outliers.

robustcov は、プロットの右側にあるデータ点を潜在的な外れ値として識別し、ロバスト共分散行列を計算するときはこの結果に基づいてこれらのデータ点を扱います。

入力引数

すべて折りたたむ

ロバスト共分散行列の推定に使用する標本データ。数値の行列を指定します。x は、各行が観測値に、各列が変数に対応する np 列の行列です。

robustcov は、ロバスト共分散行列を計算するときに、予測子の値が欠損している行を削除します。

データ型: single | double

名前と値の引数

すべて展開する

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'Method','ogk','NumOGKIterations',1 は、ロバスト推定器として直交 Gnanadesikan-Kettenring 法を指定し、直交化の反復回数を 1 に設定します。

すべての推定器

すべて展開する

ロバスト推定器。次のいずれかを指定します。

名前
'fmcd'高速 MCD (最小共分散行列式)
'ogk'直交 Gnanadesikan-Kettenring (OGK) 推定
'olivehawkins'集中アルゴリズム手法 (高速で高い整合性をもつ、外れ値に対してロバストな一連の方式)

例: 'Method','ogk'

FMCD 法および OliveHawkins 法のみ

すべて展開する

外れ値の比率。'OutlierFraction' と 範囲 [0,0.5] の数値から構成されるコンマ区切りのペアとして指定します。共分散行列式を最小化する対象となる観測値の比率は、値 1 – OutlierFraction によって指定されます。

このアルゴリズムでは、サイズが h = ceiling(n + p + 1) / 2) である副標本が選択されます。ここで、n は観測値の個数、p は次元数です。OutlierFraction は、分解が最大になる値であり、共分散行列式を最小化する対象となるサブセット h のサイズを調節します。その後、サブセットごとにほぼ (1 – OutlierFraction) × n 個の観測値になるように h が選択されます。

例: 'OutlierFraction',0.25

データ型: single | double

試行回数。'NumTrials' と正の整数値から構成されるコンマ区切りのペアとして指定します。

'Method''fmcd' である場合、NumTrials はアルゴリズムで開始点として標本データから無作為抽出される、サイズが p + 1 の副標本の個数です。p は標本データの次元数です。この場合、NumTrials の既定値は 500 です。

'Method''olivehawkins' の場合、NumTrials は使用する試験近似、つまりアトラクターの数です。この場合、NumTrials の既定値は 2 です。このオプションは、非決定的な開始の場合のみ役立ちます。

例: 'NumTrials',300

データ型: single | double

FMCD 法のみ

すべて展開する

小規模標本補正係数を適用するためのフラグ。'BiasCorrection'1 または 0 から構成されるコンマ区切りのペアとして指定します。値 1 は、小規模な標本の場合に robustcov が共分散推定のバイアスを補正することを示します。値 0 は、この補正を robustcov が適用しないことを示します。

例: 'BiasCorrection',0

データ型: logical

OGK 法のみ

すべて展開する

直交化の反復回数。'NumOGKIterations' と正の整数値から構成されるコンマ区切りのペアとして指定します。通常、この値は 1 または 2 に設定します。ステップ数を増やしても、推定の精度が向上する可能性はほとんどありません。

例: 'NumIter',1

データ型: single | double

一変量ロバスト推定を計算する関数。'UnivariateEstimator' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

名前
'tauscale'Yohai および Zamar の "tau スケール" 推定を使用します。これは、切り捨てられた標準偏差と加重平均です。
'qn'Croux および Rousseeuw の Qn スケール推定を使用します。

例: 'UnivariateEstimator','qn'

OliveHawkins 法のみ

すべて展開する

効率性ステップにおける再重み付けの方式。'ReweightingMethod' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

名前
'rfch'2 つの再重み付けステップを使用します。これは、効率を向上させるための再重み付けの標準的な方式です。
'rmvn'多変量正規を再重み付けします。クリーンなデータが多変量正規分布の場合、さまざまな外れ値構成の下で真の共分散行列を推定する場合に役立つ、2 つの再重み付けステップを使用します。

例: 'ReweightingMethod','rmvn'

集中ステップの数。'NumConcentrationSteps' と正の整数値から構成されるコンマ区切りのペアとして指定します。

例: 'NumConcentrationSteps',8

データ型: single | double

各アトラクターへの開始方法。'Start' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

名前
'classical'従来型の推定器を開始点として使用します。これは、単独で使用した場合は DGK 推定器として知られる DGK アトラクターです。
'medianball'メディアン ボール (MB) を開始点として使用します。メディアン ボールは (med(x),eye(p)) です。したがって、MB の開始点を計算するため、標本の中央値からユークリッド距離で最も遠いデータが 50% のケースでトリミングされます。これは、単独で使用した場合は MB 推定器として知られる MB アトラクターです。
'elemental'アトラクターは集中によって生成され、その開始点は無作為に選択された基本の開始点です。無作為に選択された p + 1 個のケースの "基本セット" に従来型の推定器が適用されます。この "基本" アトラクターは、計算効率は高くなりますが、整合性が低く分解がゼロであるという、理論的な欠点があります。

既定の設定では、アトラクターは次のように選択されます。アトラクターのいずれかが 'medianball' である場合、median(X) から推定位置までのユークリッド距離がデータの半数より大きい (つまり、メディアン ボールの外部にある) アトラクターは使用されません。そして、MCD の基準に基づいて最終的なアトラクターが選択されます。

初期位置と散乱の推定値を計算するための 2 つの出力引数を返す関数の関数ハンドルを指定することもできます。

前の表のオプションと関数ハンドルの任意の組み合わせが格納されている cell 配列を指定することもできます。cell 配列の長さと等しい数のアトラクターが使用されます。この方法を使用すると、アルゴリズムをより細かく調節でき、アトラクターおよび開始点の数を自由に指定できます。

例: 'StartMethod','medianball'

出力引数

すべて折りたたむ

ロバスト共分散行列の推定値。pp 列の数値行列として返されます。p は標本データに含まれている予測子の数です。

ロバスト平均の推定値。1 行 p 列の数値配列として返されます。p は標本データに含まれている予測子の数です。

ロバストなマハラノビス距離。1 行 n 列の数値配列として返されます。robustcov は欠損データが含まれている行を x から除外するので、mah の行数が x の行数より少なくなる場合があります。

標本データ x で外れ値として記録された観測値のインデックス。1 行 n 列の論理値配列として返されます。値 0 は、観測値が外れ値ではないことを示します。値 1 は、観測値が外れ値であることを示します。

robustcov は欠損データが含まれている行を x から除外するので、outliers の行数が x の行数より少なくなる場合があります。

推定情報が格納される構造体。構造体として返されます。

詳細

すべて折りたたむ

アルゴリズム

すべて折りたたむ

参照

[1] Maronna, R. and Zamar, R.H.. “Robust estimates of location and dispersion for high dimensional datasets.” Technometrics, Vol. 50, 2002.

[2] Pison, S. Van Aelst and G. Willems. “Small Sample Corrections for LTS and MCD.” Metrika, Vol. 55, 2002.

[3] Rousseeuw, P.J. and Van Driessen, K. “A fast algorithm for the minimum covariance determinant estimator.” Technometrics, Vol. 41, 1999.

[4] Olive, D.J. “A resistant estimator of multivariate location and dispersion.” Computational Statistics and Data Analysis, Vol. 46, pp. 99–102, 2004.

拡張機能

すべて展開する

バージョン履歴

R2016a で導入