ドキュメンテーション

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

不整合データ

データ プロットを見ると、他のデータから大きく外れている点が見つかることがあります。そのような点は "外れ値"、すなわち、その他のデータと調和する可能性が低いデータ値と考えることが妥当な場合もあります。

次の例では、24 行 3 列の行列 count の 3 つのデータセットから外れ値を除く方法を示します。この場合、外れ値は、平均値から少なくとも標準偏差の 3 倍分離れた値であると定義されます。

    注意:   変更したいと考えている問題の本質を理解しているという確信がない場合、データの変更には注意が必要です。外れ値を除くことは、データの平均に対してよりも標準偏差に対して影響を与えます。このような 1 点を削除すると、標準偏差がより小さい値になるため、他の点が外れ値に見える可能性があります。

% Import the sample data
load count.dat;
% Calculate the mean and the standard deviation
% of each data column in the matrix
mu = mean(count)
sigma = std(count)

コマンド ウィンドウに、以下が表示されます。

mu =
       32.0000   46.5417   65.5833

sigma =
       25.3703   41.4057   68.0281

"外れ値" が、平均値から少なくとも標準偏差の 3 倍分離れた値であると考えられる場合、次の構文を使用して count 行列の各列内の外れ値の数を判定することができます。

[n,p] = size(count);
% Create a matrix of mean values by
% replicating the mu vector for n rows
MeanMat = repmat(mu,n,1);
% Create a matrix of standard deviation values by
% replicating the sigma vector for n rows
SigmaMat = repmat(sigma,n,1);
% Create a matrix of zeros and ones, where ones indicate
% the location of outliers
outliers = abs(count - MeanMat) > 3*SigmaMat;
% Calculate the number of outliers in each column
nout = sum(outliers) 

この過程は、次の各列内の外れ値の数を返します。

nout =
       1    0    0

count の最初のデータ列には、1 つの外れ値があり、他の 2 列には外れ値はありません。

外れ値を含むデータの行をすべて除くためには、次のように入力します。

count(any(outliers,2),:) = [];

ここでは、ベクトル outliers の任意の要素が 0 以外の数値の場合に、any(outliers,2)1 を返します。引数 2 を指定することによって、any は count 行列の 2 番目の次元 (列) に対して処理を行います。

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