Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

trimmean

外れ値を除外した平均値

説明

m = trimmean(X,percent) は、X の外れ値を削除して計算した、X の値の平均を返します。たとえば、Xn 個の値によるベクトルである場合、m は最大値および最小値から k 個のデータ値を除外した X の平均です。ここで、k = n*(percent/100)/2 です。

  • X がベクトルである場合、trimmean(X,percent) は外れ値を削除して計算した X のすべての値の平均です。

  • X が行列である場合、trimmean(X,percent) は外れ値を削除して計算した列平均の行ベクトルです。

  • X が多次元配列である場合、trimmeanX の大きさが 1 でない最初の次元に作用します。

m = trimmean(X,percent,flag) は、k (外れ値の個数の 1/2) が整数ではない場合にトリミングを行う方法を指定します。

m = trimmean(___,'all') は、前の構文におけるいずれかの入力引数の組み合わせを使用して、X 内のすべての値のトリム平均を返します。

m = trimmean(___,dim) は、X の作用次元 dim に沿ったトリム平均を返します。

m = trimmean(___,vecdim) は、ベクトル vecdim で指定された次元におけるトリム平均を返します。たとえば、X が 2 x 3 x 4 の配列である場合、trimmean(X,10,[1 2]) は 1 x 1 x 4 の配列を返します。出力配列の各値は、X の対応するページにおける値の中位 90% の平均です。

すべて折りたたむ

与えられたデータセットについて、標本平均に対する 10% トリム平均の相対的な有効性を求めます。

標準正規分布から 100 行 100 列の乱数の行列を生成します。この行列は、それぞれに 100 個のデータ点が格納されている 100 個の標本を表します。

rng default;  % For reproducibility
X = normrnd(0,1,100,100);

標本平均と、データ行列の列ごとの 10% のトリム平均を計算します。

m = mean(X); % Sample mean
trim = trimmean(X,10); % Trimmed mean

標本平均に対するトリム平均の相対的な有効性を計算します。相対的な有効性は、標本平均の分散をトリム平均の分散で除算した値です。

vm = var(m) % Variance of the sample mean
vm = 0.0094
vtrim = var(trim) % Variance of the trimmed mean
vtrim = 0.0097
efficiency = vm/vtrim % Relative efficiency of the trimmed mean to the sample mean
efficiency = 0.9663

標本平均の方が、トリム平均より分散が小さくなっています (efficiency < 1)。したがって、トリム平均は標本平均より有効性が低いことになります。

k (トリミング対象となる外れ値の個数の 1/2) が整数ではない場合に、外れ値がある分布に対するトリミングを制御します。

自由度が 1 に等しいスチューデントの t 分布から乱数のベクトルを生成します。スチューデントの t 分布には、外れ値が含まれる傾向があります。

rng default;  % For reproducibility
nu = 1; % Degrees of freedom
n = 60; % Number of rows
m = 1;  % Number of columns
x = trnd(nu,n,m); % Vector 

正規確率プロットを使用して分布を可視化します。

probplot(x)

Figure contains an axes object. The axes object with title Probability plot for Normal distribution, xlabel Data, ylabel Probability contains 2 objects of type line. One or more of the lines displays its values using only markers

この分布はゼロに関して対称ですが、いくつかの外れ値が平均値に影響を及ぼします。

データの平均値を求めます。

mn = mean(x)
mn = 1.6452

データの 33% トリム平均を求めます。

trim = trimmean(x,33)
trim = 0.4940

33% トリム平均は 0 に近いので、データをより良く表していることになります。33% トリム平均の場合、k は整数ではありません (k = 60*(33/100)/2 なので値は 9.9 です)。したがって、既定により trimmeank を最も近い整数 (10) に丸めます。

k を次に小さい整数 (9) に丸めることにより、トリミングを制御します。トリミングの制御として 'floor' を指定します。

trim = trimmean(x,33,'floor')
trim = 0.4933

行列のさまざまな次元に沿ったトリム平均を求めます。

スチューデントの t 分布から乱数の行列を生成します。スチューデントの t 分布には、外れ値が含まれる傾向があります。

rng('default')
nu = 1; % Degrees of freedom
n = 2; % Number of rows
m = 100;  % Number of columns
X = trnd(nu,n,m);

正規確率プロットを使用して、X の各行の分布を可視化します。

for i = 1:n
    figure()
    probplot(X(i,:))
end

Figure contains an axes object. The axes object with title Probability plot for Normal distribution, xlabel Data, ylabel Probability contains 2 objects of type line. One or more of the lines displays its values using only markers

Figure contains an axes object. The axes object with title Probability plot for Normal distribution, xlabel Data, ylabel Probability contains 2 objects of type line. One or more of the lines displays its values using only markers

X の各行の平均を求めます。

mn = mean(X,2)
mn = 2×1

   -2.7379
    2.0087

X の各行の 30% トリム平均を求めます。作用次元として dim = 2 を指定します。

trim = trimmean(X,30,2)
trim = 2×1

   -0.0868
    0.1115

各行の 30% トリム平均は 0 に近いので、データをより良く表していることになります。

入力引数 'all' および vecdim を使用して、複数次元におけるトリム平均を計算します。

外れ値が含まれている 5 x 4 x 2 の配列を作成します。

X = reshape(1:40,[5 4 2]);
X([3 37]) = -100
X = 
X(:,:,1) =

     1     6    11    16
     2     7    12    17
  -100     8    13    18
     4     9    14    19
     5    10    15    20


X(:,:,2) =

    21    26    31    36
    22    27    32  -100
    23    28    33    38
    24    29    34    39
    25    30    35    40

X の 10% トリム平均を求めます。

mall = trimmean(X,10,'all')
mall = 19.4722

mall は、X 内の値の中央 90% の平均です。

X の各ページの 10% トリム平均を求めます。

mpage = trimmean(X,10,[1 2])
mpage = 
mpage(:,:,1) =

   10.3889


mpage(:,:,2) =

   29.6111

たとえば、mpage(1,1,2) は、X(:,:,2) 内の値の中央 90% の平均です。

入力引数

すべて折りたたむ

母集団から抽出した標本を表す入力データ。ベクトル、行列または多次元配列を指定します。

  • X がベクトルである場合、trimmean(X,percent) は外れ値を削除して計算した X のすべての値の平均です。

  • X が行列である場合、trimmean(X,percent) は外れ値を削除して計算した列平均の行ベクトルです。

  • X が多次元配列である場合、trimmeanX の大きさが 1 でない最初の次元に作用します。

X が行列または配列である場合に作用次元を指定するには、入力引数 dim を使用します。

trimmean は、X 内の NaN 値を欠損値として扱い、削除します。

データ型: single | double

トリミング対象となる入力データの割合。0100 のスカラーを指定します。

trimmean は、percent の値を使用して、平均を計算する前に X から削除する外れ値の個数 (X 内の最大値および最小値から k 個) を決定します。Xn 個の値がある場合、k = n*(percent/100)/2 です。

データ型: single | double

k (外れ値の個数の 1/2) が整数ではない場合のトリミングの制御。次の表のいずれかの値を指定します。

説明
'round'k を最も近い整数に丸める (k が半整数の場合は、小さい方の整数に丸める)。この値は既定値です。
'floor'k をすぐ下の小さい方の整数に丸める。
'weighted'k = i + f であり、i が整数部、f が小数部である場合、(i + 1) 番目と (n – i) 番目の値については重み (1 – f)、これらの間の値については最大限の重みを使用して、加重平均を計算する。

データ型: char | string

作用する対象となる次元。正の整数スカラーを指定します。値を指定しなかった場合、サイズが 1 ではない X の最初の配列次元が既定値になります。

2 次元配列 X について考えます。

  • dim が 1 に等しい場合、trimmean(X,percent,1)X の各列のトリム平均が格納されている行ベクトルを返します。

  • dim が 2 に等しい場合、trimmean(X,percent,2)X の各行のトリム平均が格納されている列ベクトルを返します。

dimndims(X) より大きい場合、または size(X,dim) が 1 である場合、trimmeanX を返します。

データ型: single | double

次元のベクトル。正の整数ベクトルを指定します。vecdim の各要素は、入力配列 X の次元を表します。出力 m の指定された作用次元における長さは 1 です。他の次元の長さは、Xm で同じになります。

たとえば、X が 2 x 3 x 3 の配列である場合、trimmean(X,10,[1 2]) は 1 x 1 x 3 の配列を返します。出力の各要素は、X の対応するページにおける値の中央 90% の平均です。

Mapping of input dimension of 2-by-3-by-3 to output dimension of 1-by-1-by-3

データ型: single | double

出力引数

すべて折りたたむ

トリム平均の値。スカラー、ベクトル、行列または多次元配列として返されます。

ヒント

  • トリム平均は、データ標本の位置に対するロバストな推定値です。データに外れ値が含まれている場合、トリム平均は標本平均より適切にデータの中央を表現します。ただし、すべてのデータが同じ確率分布から派生する場合、データの位置に対する推定器としてトリム平均は標本平均より有効ではありません。

拡張機能

バージョン履歴

R2006a より前に導入