0

次の 2 次元データセットがあります。両方 (X と Y) は連続確率変数です。

Z = (X, y) = {(1, 7), (2, 15), (3, 24), (4, 25), (5, 29), (6, 32), (7, 34) , (8, 35), (9, 27), (10, 39)}

y 変数の値に関して外れ値を検出したいと考えています。y 変数の通常の範囲は 10 ~ 35 です。したがって、上記のデータセットの最初と最後のペアは外れ値で、その他は通常のパリです。変数 z = (x, y) を、外れ値 (最初と最後のペア) が標準偏差 1 の外にある確率/頻度分布に変換したいと考えています。

PS: ユークリッド距離やマハラノビス距離など、さまざまな距離を試しましたが、うまくいきませんでした。

4

1 に答える 1

1

最終目標が何であるかは正確にはわかりませんが、x、y 変数を nx2 行列でフォーマットすると仮定するので、z = [x,y] x:= nx1 および y:= nx1 ベクトル.

あなたが求めているのは、y が 10-35 の範囲外にあるデータ ポイントを分離する方法です。そのために、条件ステートメントを使用して、それが発生するインデックスを見つけることができます。

index = z(:,2) <= 35 & z(:,2) >= 10;  %This gives vector of 0's & 1's length nx1
z_inliers = z(index,:);      %This has a [x,y] matrix of only inlier data points
z_outliers = z(~index,:);    %This has a [x,y] matrix of outlier data points

標準偏差に従ってこれを行いたい場合は、10 と 35 の代わりに次のようにします。

low_range = mean(z(:,2)) - std(z(:,2));
high_range = mean(z(:,2)) + std(z(:,2));
index = y <= high_range & y >= low_range;

次に、それらのポイントを使用してpdfなどをプロットできます。

于 2013-12-06T02:33:49.283 に答える