このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
isoutlier
データの外れ値を検出
構文
説明
は、TF
= isoutlier(A
)A
の対応する要素で外れ値を検出したときに、その要素が true
となる logical 配列を返します。
A
が行列の場合、isoutlier
はA
の各列を個別に処理します。A
が多次元配列の場合、isoutlier
は、サイズが 1 に等しくないA
の最初の次元に沿って演算します。A
が table または timetable の場合、isoutlier
はA
の各変数で別々に動作します。
既定での外れ値とは、中央値からの距離が中央絶対偏差 (MAD) の 3 倍を超えている値です。
は、名前と値の引数を 1 つ以上使用して、外れ値検出のための追加のパラメーターを指定します。たとえば、TF
= isoutlier(___,Name,Value
)isoutlier(A,"SamplePoints",t)
は時間ベクトル t
の対応する要素を基準として、配列 A
の外れ値を検出します。
例
ベクトルの外れ値を検出
データのベクトルの外れ値を検出します。出力の logical 1 は外れ値の位置を表します。
A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57]; TF = isoutlier(A)
TF = 1x15 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 = 1x15 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) hold on plot(t(TF),A(TF),"x") legend("Original Data","Outlier Data")
行列の外れ値の検出
行列の各行の外れ値を検出します。
対角上に外れ値を含むデータの行列を作成します。
A = magic(5) + diag(200*ones(1,5))
A = 5×5
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 = 5x5 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
外れ値のしきい値の可視化
データのベクトルの外れ値を特定し、外れ値を可視化します。
局所外れ値を含むデータのベクトルを作成します。
x = 1:10; A = [60 59 49 49 58 100 61 57 48 58];
既定の検出メソッド "median"
を使用して、外れ値を特定します。
[TF,L,U,C] = isoutlier(A);
元のデータ、外れ値、および検出メソッドで決定されたしきい値と中心値をプロットします。中心値はデータの中央値で、上限および下限しきい値は中央値から上下に MAD の 3 倍離れた値です。
plot(x,A) hold on plot(x(TF),A(TF),"x") yline([L U C],":",["Lower Threshold","Upper Threshold","Center Value"]) legend("Original Data","Outlier Data")
入力引数
A
— 入力データ
ベクトル | 行列 | 多次元配列 | table | timetable
入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。
A
が table の場合、その変数の型はdouble
またはsingle
でなければなりません。または、DataVariables
引数を使用してdouble
またはsingle
の変数を明示的にリストすることもできます。double
とsingle
以外のデータ型の変数を含む table を操作する場合、変数を指定すると便利です。A
が timetable の場合、isoutlier
は table 要素のみを処理します。行時間がサンプル点として使用されている場合、行時間は一意で、かつ昇順にリストされていなければなりません。
データ型: double
| single
| table
| timetable
method
— 外れ値を検出するメソッド
"median"
(既定値) | "mean"
| "quartiles"
| "grubbs"
| "gesd"
外れ値を検出するメソッド。次の値のいずれかとして指定します。
メソッド | 説明 |
---|---|
"median" | 外れ値は、スケーリングされた MAD の 3 倍を超えて中央値から離れている要素と定義されます。スケーリングされた MAD は c*median(abs(A-median(A))) と定義されます。ここで、c=-1/(sqrt(2)*erfcinv(3/2)) です。 |
"mean" | 外れ値は、標準偏差の 3 倍を超えて平均値から離れている要素と定義されます。このメソッドは "median" より高速ですが、ロバスト性は低下します。 |
"quartiles" | 外れ値は、上位四分位数 (75%) から上に、または下位四分位数 (25%) から下に、四分位範囲の 1.5 倍を超える要素と定義されます。このメソッドは、A のデータが正規分布でない場合に便利です。 |
"grubbs" | 外れ値に対するグラブス検定を使用して、外れ値を検出します。これにより、仮説検定に基づいて反復ごとに 1 つの外れ値が除去されます。このメソッドは A のデータが正規分布であることを前提としています。 |
"gesd" | 外れ値に対して一般化 ESD 検定を使用して、外れ値を検出します。この反復メソッドは "grubbs" に似ていますが、複数の外れ値が相互にマスキングしている場合により効果的に機能します。 |
threshold
— 百分位数のしきい値
2 要素の行ベクトル
百分位数のしきい値。区間 [0, 100] 内の要素をもつ 2 要素の行ベクトルとして指定します。最初の要素は百分位数の下限しきい値を示し、2 番目の要素は百分位数の上限しきい値を示します。threshold
の最初の要素は、2 番目の要素より小さくなければなりません。
たとえば、しきい値が [10 90]
の場合、外れ値は 10 番目の百分位数を下回る点、および 90 番目の百分位数を超える点として定義されます。
movmethod
— 移動メソッド
"movmedian"
| "movmean"
外れ値を検出する移動メソッド。次の値のいずれかとして指定します。
メソッド | 説明 |
---|---|
"movmedian" | 外れ値は、window で指定されたウィンドウの長さでの局所中央値から、スケーリングされた局所 MAD の 3 倍を超えて離れている要素と定義されます。このメソッドは "Hampel フィルター" とも呼ばれます。 |
"movmean" | 外れ値は、window で指定されたウィンドウの長さでの局所平均値から、局所標準偏差の 3 倍を超えて離れている要素と定義されます。 |
window
— ウィンドウの長さ
正の整数スカラー | 正の整数の 2 要素ベクトル | 正の duration スカラー | 正の duration の 2 要素ベクトル
ウィンドウの長さ。正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラーまたは正の duration の 2 要素ベクトルとして指定します。
window
が正の整数スカラーである場合、ウィンドウは現在の要素を中心にして配置され、window-1
個の隣接する要素を含みます。window
が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。
window
が正の整数の 2 要素ベクトル [b f]
である場合、ウィンドウには現在の要素、b
個前までの要素、f
個後までの要素が含まれます。
A
が timetable であるか、SamplePoints
が datetime
ベクトルまたは duration
ベクトルとして指定されている場合、window
は duration
型でなければならず、ウィンドウはサンプル点を基準に計算されます。
dim
— 操作次元
正の整数スカラー
操作次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。
m
行 n
列の入力行列 A
を考えます。
isoutlier(A,1)
は、A
の各列のデータに基づいて外れ値を検出し、m
行n
列の行列を返します。isoutlier(A,2)
は、A
の各行のデータに基づいて外れ値を検出し、m
行n
列の行列を返します。
入力データが table または timetable の場合、dim
はサポートされず、演算は各 table 変数または timetable 変数に沿って個別に行われます。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
例: isoutlier(A,"mean",ThresholdFactor=4)
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: isoutlier(A,"mean","ThresholdFactor",4)
SamplePoints
— サンプル点
ベクトル | table 変数名 | スカラー | 関数ハンドル | table vartype
添字
サンプル点。サンプル点のベクトル、または次の表のいずれかのオプション (入力データが table の場合) として指定します。サンプル点はデータの x 軸の位置を表し、並べ替える必要があり、一意の要素を含まなければなりません。サンプル点は等間隔でサンプリングされている必要はありません。既定の設定はベクトル [1 2 3 ...]
です。
入力データが table の場合は、次のいずれかのオプションを使用して、サンプル点を table 変数として指定できます。
インデックス方式 | 例 |
---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
メモ
入力データが timetable
の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように timetable を編集しなければなりません。
移動ウィンドウは、サンプル点を基準にして定義されます。たとえば、t
が入力データに対応する時間のベクトルである場合、isoutlier(rand(1,10),"movmean",3,"SamplePoints",t)
には t(i)-1.5
から t(i)+1.5
までの時間間隔を表すウィンドウがあります。
サンプル点ベクトルのデータ型が datetime
または duration
である場合、移動ウィンドウの長さの型は duration
でなければなりません。
例: isoutlier(A,"SamplePoints",0:0.1:10)
例: isoutlier(T,"SamplePoints","Var1")
データ型: single
| double
| datetime
| duration
DataVariables
— 演算の対象とする table 変数
table 変数名 | スカラー | ベクトル | cell 配列 | パターン | 関数ハンドル | table vartype
添字
演算の対象とする table 変数。次の表のオプションのいずれかとして指定します。DataVariables
の値は、入力 table 内の外れ値を調べる変数を示します。指摘された変数に関連付けられるデータ型は double
または single
でなければなりません。
最初の出力 TF
には、DataVariables
で指定されていない変数については false
が格納されます。ただし、OutputFormat
の値が "tabular"
の場合を除きます。
インデックス方式 | 例 |
---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
例: isoutlier(T,"DataVariables",["Var1" "Var2" "Var4"])
OutputFormat
— 出力データ型
"logical"
(既定値) | "tabular"
出力データ型。次の値のいずれかとして指定します。
"logical"
— 入力データが table または timetable の場合、出力TF
を logical 配列として返します。"tabular"
— 入力データが table の場合、出力TF
を table として返します。入力データが timetable の場合、出力TF
を timetable として返します。
入力データがベクトル、行列、または多次元配列の場合、OutputFormat
はサポートされません。
例: isoutlier(T,"OutputFormat","tabular")
ThresholdFactor
— 検出しきい値の係数
非負のスカラー
検出しきい値の係数。非負のスカラーとして指定します。
"median"
メソッドおよび "movmedian"
メソッドでは、検出しきい値の係数で、スケーリングされた MAD の係数が置き換えられます。検出しきい値の係数の既定値は 3 です。
"mean"
メソッドおよび "movmean"
メソッドでは、検出しきい値の係数で平均値からの標準偏差の係数が置き換えられます。検出しきい値の係数の既定値は 3 です。
"grubbs"
メソッドおよび "gesd"
メソッドでの検出しきい値の係数は、0 ~ 1 の範囲のスカラーです。値が 0 に近くなると外れ値の数が少なくなり、値が 1 に近くなると外れ値の数が多くなります。既定の検出しきい値の係数は 0.05 です。
"quartiles"
メソッドでは、検出しきい値の係数により四分位数間範囲の係数が置き換えられます。検出しきい値の係数の既定値は 1.5 です。
"percentiles"
メソッドが指定されている場合、この名前と値の引数はサポートされません。
MaxNumOutliers
— 外れ値の最大数
正の整数スカラー
外れ値の最大数。"gesd"
メソッドでのみ使用され、正の整数スカラーとして指定します。MaxNumOutliers
値は、"gesd"
メソッドにより返される外れ値の最大数を指定します。たとえば、isoutlier(A,"gesd","MaxNumOutliers",5)
は最大で 5 つの外れ値を返します。
MaxNumOutliers
の既定値は、A
の要素数の 10% に最も近い整数です。外れ値の最大数に大きい値を設定すると、すべての外れ値を検出する可能性が高くなりますが、それと引き換えに計算効率が低下します。
"gesd"
メソッドは、非外れ値の入力データがほぼ正規分布からサンプリングされていると仮定します。データがこのようにサンプリングされていない場合、返される外れ値の数が MaxNumOutliers
値を上回る場合があります。
出力引数
TF
— 外れ値インジケーター
ベクトル | 行列 | 多次元配列 | table | timetable
外れ値インジケーター。ベクトル、行列、多次元配列、table または timetable として返されます。
TF
は、OutputFormat
の値が "tabular"
の場合を除き、A
と同じサイズになります。OutputFormat
の値が "tabular"
の場合、TF
は、指定された DataVariables
に対応する変数のみをもちます。
データ型: logical
L
— 下限しきい値
スカラー | ベクトル | 行列 | 多次元配列 | table | timetable
外れ値検出メソッドで使用された下限しきい値。スカラー、ベクトル、行列、多次元配列、table または timetable として返されます。たとえば、既定の外れ値検出メソッドの下限しきい値は、入力データの中央値より MAD の 3 倍分小さい値です。
外れ値検出に method
を使用する場合、L
のサイズは、操作次元 (長さ 1) 以外のすべての次元で A
と同じになります。movmethod
を使用する場合、L
のサイズは A
と同じになります。
データ型: double
| single
| table
| timetable
U
— 上限しきい値
スカラー | ベクトル | 行列 | 多次元配列 | table | timetable
外れ値検出メソッドで使用された上限しきい値。スカラー、ベクトル、行列、多次元配列、table または timetable として返されます。たとえば、既定の外れ値検出メソッドの上限しきい値は、入力データの中央値より MAD の 3 倍分大きい値です。
外れ値検出に method
を使用する場合、U
のサイズは、操作次元 (長さ 1) 以外のすべての次元で A
と同じになります。movmethod
を使用する場合、U
のサイズは A
と同じになります。
データ型: double
| single
| table
| timetable
C
— 中心値
スカラー | ベクトル | 行列 | 多次元配列 | table | timetable
外れ値検出メソッドで使用された中心値。スカラー、ベクトル、行列、多次元配列、table または timetable として返されます。たとえば、既定の外れ値検出メソッドの中心値は、入力データの中央値です。
外れ値検出に method
を使用する場合、C
のサイズは、操作次元 (長さ 1) 以外のすべての次元で A
と同じになります。movmethod
を使用する場合、C
のサイズは A
と同じになります。
データ型: double
| single
| table
| timetable
詳細
中央絶対偏差
N 個のスカラー観測値からなる有限長ベクトル A の中央絶対偏差 (MAD) は、i = 1,2,...,N について、次のように定義されます。
スケーリングされた MAD は c*median(abs(A-median(A)))
と定義されます。ここで、c=-1/(sqrt(2)*erfcinv(3/2))
です。
参照
[1] NIST/SEMATECH e-Handbook of Statistical Methods, https://www.itl.nist.gov/div898/handbook/, 2013.
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
"percentiles"
メソッド、"grubbs"
メソッド、および"gesd"
メソッドはサポートされていません。"movmedian"
メソッドと"movmean"
メソッドで、tall timetable はサポートされていません。名前と値の引数
SamplePoints
およびMaxNumOutliers
はサポートされません。DataVariables
の値を関数ハンドルにすることはできません。最初の次元に沿った
isoutlier(A)
、isoutlier(A,"median",...)
、またはisoutlier(A,"quartiles",...)
の計算は、tall 列ベクトルA
に対してのみサポートされています。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
名前と値の引数
OutputFormat
はサポートされていません。外れ値を検出するための
"movmean"
メソッドと"movmedian"
メソッドは、timetable の入力データ、datetime のSamplePoints
値、または duration のSamplePoints
値をサポートしません。string 配列と文字配列の入力は定数でなければなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
"movmedian"
移動メソッドはサポートされていません。名前と値の引数
SamplePoints
およびDataVariables
はサポートされません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2017a で導入R2022a: logical 出力が含まれる table または timetable を返す
入力データが table または timetable の場合は、名前と値の引数 OutputFormat
を "tabular"
に設定することにより、logical 配列の代わりに表形式の出力 TF
を返します。
R2021b: table 変数としてのサンプル点の指定
入力データが table の場合は、名前と値の引数 SamplePoints
を使用して、サンプル点を table 変数として指定します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)