ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

isoutlier

データの外れ値を検出

構文

TF = isoutlier(A)
TF = isoutlier(A,method)
TF = isoutlier(A,movmethod,window)
TF = isoutlier(___,dim)
TF = isoutlier(___,Name,Value)
[TF,lower,upper,center] = isoutlier(___)

説明

TF = isoutlier(A) は論理配列を返します。この論理配列の要素は、A の対応する要素に外れ値が検出された場合 true となります。既定では、外れ値とはスケーリングされた中央絶対偏差 (MAD) の 3 倍を超えて中央値から離れている値を指します。A が行列または table の場合、isoutlier は各列を個別に処理します。A が多次元配列の場合、isoutlier は、サイズが 1 に等しくない最初の次元に沿って処理します。

TF = isoutlier(A,method) は外れ値を特定するメソッドを指定します。たとえば、isoutlier(A,'mean') は平均値から標準偏差の 3 倍を超えて離れているすべての要素に対して true を返します。

TF = isoutlier(A,movmethod,window) は、window で定義されるウィンドウの長さに従って局所外れ値を特定する移動メソッドを指定します。たとえば、isoutlier(A,'movmedian',5) は、5 つの要素があるスライディング ウィンドウ内で、局所中央値から、スケーリングされた局所 MAD の 3 倍を超えて離れているすべての要素に対して true を返します。

TF = isoutlier(___,dim) は、前述のどの構文についても、A の次元 dim に沿って処理します。たとえば、isoutlier(A,2) は行列 A の各行を処理します。

TF = isoutlier(___,Name,Value) は、名前と値のペアの引数を 1 つ以上使用して、外れ値検出のための追加のパラメーターを指定します。たとえば、isoutlier(A,'SamplePoints',t) は時間ベクトル t の対応する要素を基準として A の外れ値を検出します。

[TF,lower,upper,center] = isoutlier(___) はまた、外れ値検出メソッドで使用される下限および上限しきい値と中心値も返します。

すべて折りたたむ

データのベクトルの外れ値を検出します。出力の論理値 1 は外れ値の位置を表します。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
TF = isoutlier(A)
TF =

  1×15 logical array

   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0

平均値から標準偏差の 3 倍を超えて離れている点を外れ値として定義し、ベクトルの外れ値の位置を検出します。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
TF = isoutlier(A,'mean')
TF =

  1×15 logical array

   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0

局所外れ値を含むデータのベクトルを作成します。

x = -2*pi:0.1:2*pi;
A = sin(x);
A(47) = 0;

A のデータに対応する時間ベクトルを作成します。

t = datetime(2017,1,1,0,0,0) + hours(0:length(x)-1);

スライディング ウィンドウ内の局所中央値から、スケーリングされた局所 MAD の 3 倍を超えて離れている点として、外れ値を定義します。ウィンドウ サイズを 5 時間に設定し、t の点を基準として A の外れ値の位置を検出します。データと検出した外れ値をプロットします。

TF = isoutlier(A,'movmedian',hours(5),'SamplePoints',t);
plot(t,A,t(TF),A(TF),'x')
legend('Data','Outlier')

行列の各行の外れ値を検出します。

対角上に外れ値を含むデータの行列を作成します。

A = magic(5) + diag(200*ones(1,5))
A =

   217    24     1     8    15
    23   205     7    14    16
     4     6   213    20    22
    10    12    19   221     3
    11    18    25     2   209

各行のデータに基づいて外れ値の位置を検出します。

TF = isoutlier(A,2)
TF =

  5×5 logical array

   1   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   1

外れ値を含むデータのベクトルを作成します。外れ値の位置、および外れ値メソッドで決定されるしきい値と中心値を検出してプロットします。中心値はデータの中央値で、上限および下限しきい値は中央値から上下に MAD の 3 倍離れた値です。

x = 1:10;
A = [60 59 49 49 58 100 61 57 48 58];
[TF,lower,upper,center] = isoutlier(A);
plot(x,A,x(TF),A(TF),'x',x,lower*ones(1,10),x,upper*ones(1,10),x,center*ones(1,10))
legend('Original Data','Outlier','Lower Threshold','Upper Threshold','Center Value')

入力引数

すべて折りたたむ

入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。

A が table の場合、その変数の型は double または single でなければなりません。または、名前と値のペア 'DataVariables' を使用して double または single 変数を明示的にリストすることもできます。doublesingle 以外のデータ型の変数を含む table を操作する場合、変数を指定すると便利です。

A が timetable の場合、isoutlier は table 要素のみを処理します。行時間は一意で、昇順にリストされていなければなりません。

データ型: double | single | table | timetable

外れ値を特定するメソッド。次のいずれかとして指定します。

メソッド説明
'median'スケーリングされた MAD の 3 倍を超えて中央値から離れている要素に対して true を返します。スケーリングされた MAD は c*median(abs(A-median(A))) と定義されます。ここで、c=-1/(sqrt(2)*erfcinv(3/2)) です。
'mean'標準偏差の 3 倍を超えて平均値から離れている要素に対して true を返します。このメソッドは 'median' より高速ですが、ロバスト性は低下します。
'quartiles'上位四分位数を四分位範囲の 1.5 倍超える、または下位四分位数を四分位範囲の 1.5 倍下回る要素に対して true を返します。このメソッドは、A のデータが正規分布でない場合に便利です。
'grubbs'外れ値にグラブス検定を適用します。これにより、仮説検定に基づいて反復ごとに 1 つの外れ値が除去されます。このメソッドは A のデータが正規分布であることを前提としています。
'gesd'外れ値に一般化 ESD 検定を適用します。この反復メソッドは 'grubbs' に似ていますが、複数の外れ値が相互にマスキングしている場合により効果的に機能します。

外れ値を特定する移動メソッド。次のいずれかとして指定します。

メソッド説明
'movmedian'window で指定されたウィンドウの長さに渡り、スケーリングされた局所 MAD の 3 倍を超えて局所中央値から離れている要素に対して true を返します。
'movmean'window で指定されたウィンドウの長さに渡り、局所標準偏差の 3 倍を超えて局所平均値から離れている要素に対して、true を返します。

ウィンドウの長さ。正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラーまたは正の duration の 2 要素ベクトルとして指定します。

window が正の整数スカラーである場合、ウィンドウは現在の要素を中心にして配置され、window-1 個の隣接する要素を含みます。window が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。window が正の整数の 2 要素ベクトル [b f] である場合、ウィンドウには現在の要素、b 個前までの要素、f 個後までの要素が含まれます。

A が timetable であるか、'SamplePoints'datetime または duration ベクトルである場合、windowduration 型でなければならず、ウィンドウはサンプル点を基準に計算されます。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

演算の対象の次元。正の整数のスカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。

行列 A を考えます。

isoutlier(A,1)A の各列のデータに基づき外れ値を検出します。

isoutlier(A,2)A の各行のデータに基づき外れ値を検出します。

A が table または timetable の場合、dim はサポートされません。isoutlier は、個々の table または timetable の変数に対して個別に動作します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名前/値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: isoutlier(A,'mean','ThresholdFactor',4)

すべて折りたたむ

検出しきい値の係数。'ThresholdFactor' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

'grubbs' および 'gesd' メソッドでは、検出しきい値の係数は 0 ~ 1 の範囲のスカラーです。値が 0 に近くなると外れ値の数は少なくなり、値が 1 に近くなると外れ値の数が多くなります。既定の検出しきい値の係数は 0.5 です。

'movmedian' および 'movmean' メソッドでは、検出しきい値の係数はスケーリングされた MAD または平均値からの標準偏差の係数を置き換えます。既定値は 3 です。

'quartile' メソッドでは、検出しきい値の係数は四分位範囲の係数を置き換えます。既定値は 1.5 です。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

サンプル点。'SamplePoints' とベクトルで構成されるコンマ区切りのペアとして指定します。サンプル点は A のデータの位置を表します。サンプル点は等間隔でサンプリングされている必要はありません。既定では、サンプル点ベクトルは [1 2 3 ...] です。

移動ウィンドウはサンプル点を基準として定義されます。サンプル点は並べ替えられていなければならず、また一意の要素を含んでいなければなりません。たとえば、t が入力データに対応する時間のベクトルである場合、isoutlier(rand(1,10),'movmean',3,'SamplePoints',t) には t(i)-1.5 から t(i)+1.5 までの時間間隔を表すウィンドウがあります。

サンプル点ベクトルのデータ型が datetime または duration である場合、移動ウィンドウの長さの型は duration でなければなりません。

データ型: double | single | datetime | duration

table 変数。'DataVariables' と、変数名、変数名のセル配列、数値ベクトル、論理ベクトルまたは関数ハンドルのいずれかで構成されるコンマ区切りのペアとして指定します。'DataVariables' 値は、外れ値を検出する入力 table 内の列を示し、次のいずれかにすることができます。

  • 単一の table 変数名を指定する文字ベクトル

  • 各要素が table 変数名である文字ベクトルのセル配列

  • table 変数インデックスのベクトル

  • 各要素が table 変数に対応する論理ベクトル。true の場合は対応する変数を含めて、false の場合は対応する変数を除外します。

  • 入力として table をとり、論理スカラーを返す関数ハンドル

指摘された変数に関連付けられるデータ型は double または single でなければなりません。

例: 'Age'

例: {'Height','Weight'}

例: @isnumeric

データ型: char | cell | double | single | logical | function_handle

最大外れ値しきい値。'gesd' メソッドでのみ使用します。'MaxNumOutliers' と正の整数で構成されるコンマ区切りのペアとして指定します。'MaxNumOutliers' 値は、'gesd' メソッドにより返される外れ値の最大数を指定します。たとえば、isoutlier(A,'gesd','MaxNumOutliers',5) は最大で 5 つの外れ値を返します。

'MaxNumOutliers' の既定値は、A の要素数の 10% に最も近い整数です。外れ値の最大数の値を大きく設定すると、すべての外れ値を確実に検出できるようになりますが、演算の効率性は低下します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

外れ値インジケーター。ベクトル、行列または多次元配列として返されます。TF の要素は、A の対応する要素が外れ値の場合は true で、それ以外の場合は false です。TF のサイズは A と同じです。

データ型: logical

外れ値検出メソッドで使用された下限しきい値。スカラー、ベクトル、行列または多次元配列として返されます。たとえば、既定の外れ値検出メソッドの下限値は、入力データの中央値より MAD の 3 倍分小さい値です。lower のサイズは、操作次元 (長さ 1) 以外のすべての次元で A と同じです。

データ型: double | single

外れ値検出メソッドで使用された上限しきい値。スカラー、ベクトル、行列または多次元配列として返されます。たとえば、既定の外れ値検出メソッドの上限値は、入力データの中央値より MAD の 3 倍分大きい値です。upper のサイズは、操作次元 (長さ 1) 以外のすべての次元で A と同じです。

データ型: double | single

外れ値検出メソッドで使用された中心値。スカラー、ベクトル、行列または多次元配列として返されます。たとえば、既定の外れ値検出メソッドの中心値は、入力データの中央値です。center のサイズは、操作次元 (長さ 1) 以外のすべての次元で A と同じです。

データ型: double | single

詳細

すべて折りたたむ

中央絶対偏差

N 個のスカラー観測値で構成される確率変数ベクトル A の場合、中央絶対偏差 (MAD) は i = 1,2,...,N について次のように定義されます。

MAD = median(|Aimedian(A)|)

R2017a で導入

この情報は役に立ちましたか?