ドキュメンテーション

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

quantile

データセットの分位数

説明

Y = quantile(X,p) は、区間 [0,1] における累積確率 p に対するデータ ベクトルまたは配列 X 内の要素の分位数を返します。

  • X がベクトルの場合、Y はスカラーまたは p のスカラーまたはベクトルになります。

  • X が行列の場合、Y は行ベクトルまたは行列になります。Y の行数は p の長さに等しくなります。

  • 多次元配列の場合、quantileX の最初の大きさが 1 でない最初の次元に対して作用します。

Y = quantile(X,N) は、整数 N>1 について N 個の等間隔の累積確率 (1/(N + 1)、2/(N + 1)、...、N/(N + 1)) の分位数を返します。

  • X がベクトルの場合、Y はスカラーまたは長さが N のベクトルになります。

  • X が行列の場合、YN に等しい行数をもつ行列になります。

  • 多次元配列の場合、quantileX の最初の大きさが 1 でない最初の次元に対して作用します。

Y = quantile(___,'all') は最初の 2 つの構文のいずれについても、X のすべての要素の分位数を返します。

Y = quantile(___,dim) は最初の 2 つの構文のいずれについても、作用次元 dim に沿った分位数を返します。

Y = quantile(___,vecdim) は最初の 2 つの構文のいずれについても、ベクトル vecdim で指定された次元における分位数を返します。たとえば X が行列である場合、次元 1 および 2 によって定義される配列スライスには行列のそれぞれの要素がすべて含まれるため、quantile(X,0.5,[1 2])X のすべての要素の 0.5 分位数を返します。

Y = quantile(___,'Method',method) は、前の構文における任意の入力引数を組み合わせて使用し、method の値に基づいて厳密な分位数または近似分位数のいずれかを返します。

すべて折りたたむ

指定された確率に対する、データセットの分位数を計算します。

サイズが 10 のデータセットを作成します。

rng('default'); % for reproducibility
x = normrnd(0,1,1,10)
x = 1×10

    0.5377    1.8339   -2.2588    0.8622    0.3188   -1.3077   -0.4336    0.3426    3.5784    2.7694

0.3 分位数を計算します。

y = quantile(x,0.30)
y = -0.0574

累積確率 0.025、0.25、0.5、0.75、0.975 の分位数を計算します。

y = quantile(x,[0.025 0.25 0.50 0.75 0.975])
y = 1×5

   -2.2588   -0.4336    0.4401    1.8339    3.5784

データセットの、指定された数の分位数を計算します。

サイズが 10 のデータセットを作成します。

rng('default'); % for reproducibility
x = normrnd(0,1,1,10)
x = 1×10

    0.5377    1.8339   -2.2588    0.8622    0.3188   -1.3077   -0.4336    0.3426    3.5784    2.7694

等間隔にある 4 つの分位数を計算します。

y = quantile(x,4)
y = 1×4

   -0.8706    0.3307    0.6999    2.3017

等間隔にある 4 つの分位数を求めるには、y = quantile(x,[0.2,0.4,0.6,0.8]) を使用する方法もあります。

指定された確率における、データ行列の列と行に対する分位数を計算します。

4 行 6 列のデータ行列を作成します。

rng default  % For reproducibility
X = normrnd(0,1,4,6)
X = 4×6

    0.5377    0.3188    3.5784    0.7254   -0.1241    0.6715
    1.8339   -1.3077    2.7694   -0.0631    1.4897   -1.2075
   -2.2588   -0.4336   -1.3499    0.7147    1.4090    0.7172
    0.8622    0.3426    3.0349   -0.2050    1.4172    1.6302

X (dim = 1) の各列の 0.3 分位数を計算します。

y = quantile(X,0.3,1)
y = 1×6

   -0.3013   -0.6958    1.5336   -0.1056    0.9491    0.1078

quantile は、行列の各列の 1 つの分位数を計算する際に行ベクトル y を返します。たとえば -0.3013 は、(0.5377, 1.8339, -2.2588, 0.8622) という要素がある X の 1 列目の 0.3 分位数です。dim の既定値は 1 なので、y = quantile(X,0.3) と同じ結果が得られます。

X (dim = 2) の各行の 0.3 分位数を計算します。

y = quantile(X,0.3,2)
y = 4×1

    0.3844
   -0.8642
   -1.0750
    0.4985

quantile は、行列の各行の 1 つの分位数を計算する際に列ベクトル y を返します。たとえば 0.3844 は、(0.5377, 0.3188, 3.5784, 0.7254, -0.1241, 0.6715) という要素がある X の 1 行目の 0.3 分位数です。

データ行列の列と行に沿って、等間隔にある N 個の分位数を計算します。

6 行 10 列のデータ行列を作成します。

rng('default');  % for reproducibility
X = unidrnd(10,6,7)
X = 6×7

     9     3    10     8     7     8     7
    10     6     5    10     8     1     4
     2    10     9     7     8     3    10
    10    10     2     1     4     1     1
     7     2     5     9     7     1     5
     1    10    10    10     2     9     4

X (dim = 1) の各列において、等間隔にある 3 つの分位数を計算します。

y = quantile(X,3,1)
y = 3×7

    2.0000    3.0000    5.0000    7.0000    4.0000    1.0000    4.0000
    8.0000    8.0000    7.0000    8.5000    7.0000    2.0000    4.5000
   10.0000   10.0000   10.0000   10.0000    8.0000    8.0000    7.0000

行列 y の各列は、行列 X の各列で等間隔に配置された 3 つの分位数に対応します。たとえば、(2, 8, 10) の要素をもつ y の最初の列には、(9, 10, 2, 10, 7, 1) の要素をもつ X の最初の列の分位数が含まれています。dim の既定の設定値が 1 であるため、y = quantile(X,3) でも同じ解が返されます。

X (dim = 2) の各行において、等間隔にある 3 つの分位数を計算します。

y = quantile(X,3,2)
y = 6×3

    7.0000    8.0000    8.7500
    4.2500    6.0000    9.5000
    4.0000    8.0000    9.7500
    1.0000    2.0000    8.5000
    2.7500    5.0000    7.0000
    2.5000    9.0000   10.0000

行列 y の各行は、行列 X の各行で等間隔に配置された 3 つの分位数に対応します。たとえば、(7, 8, 8.75) という要素が含まれている y の 1 行目には、(9, 3, 10, 8, 7, 8, 7) という要素が含まれている X の 1 行目の分位数が格納されます。

入力引数 'all' および vecdim を使用して、指定した確率に対する多次元配列の分位数を計算します。

3 x 5 x 2 の配列 X を作成します。確率のベクトル p を指定します。

X = reshape(1:30,[3 5 2])
X = 
X(:,:,1) =

     1     4     7    10    13
     2     5     8    11    14
     3     6     9    12    15


X(:,:,2) =

    16    19    22    25    28
    17    20    23    26    29
    18    21    24    27    30

p = [0.25 0.75];

X 内のすべての要素から 0.25 および 0.75 分位数を計算します。

Yall = quantile(X,p,'all')
Yall = 2×1

     8
    23

Yall(1)X の 0.25 分位数、Yall(2)X の 0.75 分位数です。

作用次元として 1 番目の次元と 2 番目の次元を指定して、X の各ページの 0.25 および 0.75 分位数を計算します。

Ypage = quantile(X,p,[1 2])
Ypage = 
Ypage(:,:,1) =

    4.2500
   11.7500


Ypage(:,:,2) =

   19.2500
   26.7500

たとえば、Ypage(1,1,1)X の 1 ページ目の 0.25 分位数、Ypage(2,1,1)X の 1 ページ目の 0.75 分位数です。

作用次元として 2 番目の次元と 3 番目の次元を指定して、各 X(i,:,:) スライス内の要素の 0.25 および 0.75 分位数を計算します。

Yrow = quantile(X,p,[2 3])
Yrow = 3×2

     7    22
     8    23
     9    24

たとえば、Yrow(3,1)X(3,:,:) の要素の 0.25 分位数、Yrow(3,2)X(3,:,:) の要素の 0.75 分位数です。

偶数個の要素をもつベクトル x の中央値と四分位数を求めます。

データを入力します。

x = [2 5 6 10 11 13]
x = 1×6

     2     5     6    10    11    13

x の中央値を計算します。

y = quantile(x,0.50)
y = 8

x の四分位数を計算します。

y = quantile(x,[0.25, 0.5, 0.75])
y = 1×3

     5     8    11

x の四分位数を求めるには、y = quantile(x,3) を使用する方法もあります。

quantile線形内挿を使用して中央値と四分位数を求めるため、その結果は一般的な定義と異なる場合もあります。

奇数個の要素をもつベクトル x の中央値と四分位数を求めます。

データを入力します。

x = [2 4 6 8 10 12 14]
x = 1×7

     2     4     6     8    10    12    14

x の中央値を計算します。

y = quantile(x,0.50)
y = 8

x の四分位数を計算します。

y = quantile(x,[0.25, 0.5, 0.75])
y = 1×3

    4.5000    8.0000   11.5000

x の四分位数を求めるには、y = quantile(x,3) を使用する方法もあります。

quantile線形内挿を使用して中央値と四分位数を求めるため、その結果は一般的な定義と異なる場合もあります。

特定の確率に対して、tall 列ベクトルの厳密な分位数および近似分位数を計算します。

airlinesmall データセットのデータストアを作成します。datastore によって NaN 値に置き換えられるようにするため、'NA' 値を欠損データとして扱います。変数 ArrTime を処理するよう指定します。

ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
    'SelectedVariableNames','ArrTime');

データストアの先頭に tall table を作成し、tall table から tall ベクトルにデータを抽出します。

t = tall(ds) % Tall table
Starting parallel pool (parpool) using the 'local' profile ...
connected to 6 workers.

t =

  M×1 tall table

    ArrTime
    _______

      735  
     1124  
     2218  
     1431  
      746  
     1547  
     1052  
     1134  
       :
       :
x = t{:,:}   % Tall vector
x =

  M×1 tall double column vector

         735
        1124
        2218
        1431
         746
        1547
        1052
        1134
         :
         :

p = 0.5 に対する x の厳密な分位数を計算します。X が tall 列ベクトル、p がスカラーであるため、既定では quantile は厳密な分位数値を返します。

p = 0.5; % Cumulative probability
yExact = quantile(x,p)
yExact =

  M×N×... tall double array

    ?    ?    ?    ...
    ?    ?    ?    ...
    ?    ?    ?    ...
    :    :    :
    :    :    :

Preview deferred. Learn more.

p = 0.5 に対する x の近似分位数を計算します。t-digestに基づく近似アルゴリズムを分位数の計算に使用するため、'Method','approximate' を指定します。

yApprox = quantile(x,p,'Method','approximate')
yApprox =

  M×N×... tall double array

    ?    ?    ?    ...
    ?    ?    ?    ...
    ?    ?    ?    ...
    :    :    :
    :    :    :

Preview deferred. Learn more.

tall 配列を評価し、gather を使用して結果をメモリに格納します。

[yExact,yApprox] = gather(yExact,yApprox)
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 4: Completed in 8.7 sec
- Pass 2 of 4: Completed in 4.7 sec
- Pass 3 of 4: Completed in 1.8 sec
- Pass 4 of 4: Completed in 1.5 sec
Evaluation completed in 19 sec
yExact = 1522
yApprox = 1.5220e+03

近似分位数の値と厳密な分位数の値は、表示されている 4 桁まで同じです。

別々の次元に沿って指定された累積確率について、tall 行列の厳密な分位数および近似分位数を計算します。

airlinesmall データセットの変数のサブセットが含まれている tall 行列 X を作成します。tall 配列からデータを抽出する手順の詳細については、特定の確率に対する tall ベクトルの分位数を参照してください。

varnames = {'ArrDelay','ArrTime','DepTime','ActualElapsedTime'}; % Subset of variables in the data set
ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
    'SelectedVariableNames',varnames); % Datastore
t = tall(ds);     % Tall table
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).
X = t{:,varnames} % Tall matrix
X =

  M×4 tall double matrix

           8         735         642          53
           8        1124        1021          63
          21        2218        2055          83
          13        1431        1332          59
           4         746         629          77
          59        1547        1446          61
           3        1052         928          84
          11        1134         859         155
          :          :            :           :
          :          :            :           :

1 以外の次元に沿って作用する場合、関数 quantile は厳密な分位数のみを計算し、これによってt-digestに基づく近似アルゴリズムではなく、並べ替えに基づくアルゴリズム (アルゴリズムを参照) の使用による効率的な計算を可能にします。

累積確率 0.25、0.5 および 0.75 に対して、2 番目の次元に沿って X の厳密な分位数を計算します。

p = [0.25 0.50 0.75]; % Vector of cumulative probabilities
Yexact = quantile(X,p,2)
Yexact =

  M×N×... tall double array

    ?    ?    ?    ...
    ?    ?    ?    ...
    ?    ?    ?    ...
    :    :    :
    :    :    :

Preview deferred. Learn more.

p が累積確率のベクトルであり、この関数が 1 番目の次元に沿って作用する場合、t-digest に基づく近似アルゴリズムを使用して分位数を計算しなければなりません。並べ替えに基づくアルゴリズムを使用して tall 配列の 1 番目の次元に沿って分位数を求めると、計算負荷が高くなります。

累積確率 0.25、0.5 および 0.75 に対して、1 番目の次元に沿って X の近似分位数を計算します。既定の次元は 1 なので、dim の値を指定する必要はありません。

Yapprox = quantile(X,p,'Method','approximate')
Yapprox =

  M×N×... tall double array

    ?    ?    ?    ...
    ?    ?    ?    ...
    ?    ?    ?    ...
    :    :    :
    :    :    :

Preview deferred. Learn more.

tall 配列を評価し、gather を使用して結果をメモリに格納します。

[Yexact,Yapprox] = gather(Yexact,Yapprox);
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 9.7 sec
Evaluation completed in 11 sec

累積確率 0.25、0.5 および 0.75 に対する (2 番目の次元に沿った) X の厳密な分位数の先頭 5 行を表示します。

Yexact(1:5,:)
ans = 5×3
103 ×

    0.0305    0.3475    0.6885
    0.0355    0.5420    1.0725
    0.0520    1.0690    2.1365
    0.0360    0.6955    1.3815
    0.0405    0.3530    0.6875

行列 Yexact の各行には、X の対応する行の 3 つの分位数が格納されます。たとえば、30.5347.5 および 688.5 はそれぞれ X の 1 行目の 0.25、0.5 および 0.75 分位数です。

累積確率 0.25、0.5 および 0.75 に対して、1 番目の次元に沿って X の近似分位数を表示します。

Yapprox
Yapprox = 3×4
103 ×

   -0.0070    1.1149    0.9321    0.0700
         0    1.5220    1.3350    0.1020
    0.0110    1.9180    1.7400    0.1510

行列 Yapprox の各行は、行列 X の各列の 3 つの分位数に対応します。たとえば、Yapprox の 1 列目の要素は (–7, 0, 11) であり、X の 1 列目の分位数が格納されています。

等間隔にある N 個の累積確率について、tall 行列の別々の次元に沿って厳密な分位数と近似分位数を計算します。

airlinesmall データセットの変数のサブセットが含まれている tall 行列 X を作成します。tall 配列からデータを抽出する手順の詳細については、特定の確率に対する tall ベクトルの分位数を参照してください。

varnames = {'ArrDelay','ArrTime','DepTime','ActualElapsedTime'}; % Subset of variables in the data set
ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
    'SelectedVariableNames',varnames); % Datastore
t = tall(ds); % Tall table
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).
X = t{:,varnames}
X =

  M×4 tall double matrix

           8         735         642          53
           8        1124        1021          63
          21        2218        2055          83
          13        1431        1332          59
           4         746         629          77
          59        1547        1446          61
           3        1052         928          84
          11        1134         859         155
          :          :            :           :
          :          :            :           :

1 番目の次元に沿って等間隔にある分位数を求めるには、t-digestに基づく近似アルゴリズムを使用しなければなりません。並べ替えに基づくアルゴリズム (アルゴリズムを参照) を使用して tall 配列の 1 番目の次元に沿って分位数を求めると、計算負荷が高くなります。

X の 1 番目の次元に沿って等間隔にある 3 つの分位数を計算します。既定の次元は 1 なので、dim の値を指定する必要はありません。近似アルゴリズムを使用するため、'Method','approximate' を指定します。

N = 3; % Number of quantiles
Yapprox = quantile(X,N,'Method','approximate')
Yapprox =

  M×N×... tall double array

    ?    ?    ?    ...
    ?    ?    ?    ...
    ?    ?    ?    ...
    :    :    :
    :    :    :

Preview deferred. Learn more.

quantile は、他の (dim1 以外の) 次元に沿って等間隔にある分位数を求めるために厳密な分位数のみを計算し、これによって並べ替えに基づくアルゴリズムの使用による効率的な計算を可能にします。

X の 2 番目の次元に沿って等間隔にある 3 つの分位数を計算します。dim が 1 ではないため、既定では quantile は厳密な分位数を返します。

Yexact = quantile(X,N,2)
Yexact =

  M×N×... tall double array

    ?    ?    ?    ...
    ?    ?    ?    ...
    ?    ?    ?    ...
    :    :    :
    :    :    :

Preview deferred. Learn more.

tall 配列を評価し、gather を使用して結果をメモリに格納します。

[Yapprox,Yexact] = gather(Yapprox,Yexact);
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 10 sec
Evaluation completed in 13 sec

1 番目の次元に沿って、等間隔にある 3 つの累積確率に対する X の近似分位数を表示します。

Yapprox
Yapprox = 3×4
103 ×

   -0.0070    1.1149    0.9321    0.0700
         0    1.5220    1.3350    0.1020
    0.0110    1.9180    1.7400    0.1510

行列 Yapprox の各行は、行列 X の各列に対する、等間隔にある 3 つの分位数に対応します。たとえば、Yapprox の 1 列目の要素は (–7, 0, 11) であり、X の 1 列目の分位数が格納されています。

2 番目の次元に沿って、等間隔にある 3 つの累積確率に対する X の厳密な分位数の先頭 5 行を表示します。

Yexact(1:5,:)
ans = 5×3
103 ×

    0.0305    0.3475    0.6885
    0.0355    0.5420    1.0725
    0.0520    1.0690    2.1365
    0.0360    0.6955    1.3815
    0.0405    0.3530    0.6875

行列 Yexact の各行には、X の対応する行からの、等間隔にある 3 つの分位数が格納されます。たとえば、30.5347.5 および 688.5 はそれぞれ X の 1 行目の 0.25、0.5 および 0.75 分位数です。

入力引数

すべて折りたたむ

ベクトルまたは配列として指定される入力データ。

データ型: double | single

分位数の計算対象となる累積確率。0 ~ 1 のスカラーまたはそのベクトルを指定します。

例: 0.3

例: [0.25, 0.5, 0.75]

例: (0:0.25:1)

データ型: double | single

正の整数として指定される、計算する分位数の数。quantile は、データセットを均等に分布された N+1 個のセグメントに分割する N 個の分位数を返します。

データ型: double | single

行列 X の分位数を求める対象となる次元。正の整数を指定します。たとえば、行列 X に対して、dim = 1 の場合に quantileX の列の分位数を返し、dim = 2 の場合に quantileX の行の分位数を返します。多次元配列 X では、Ydim 番目の次元の長さが p の長さに等しくなります。

データ型: single | double

次元のベクトル。正の整数ベクトルを指定します。vecdim の各要素は、入力配列 X の次元を表します。指定された最小の作用次元 (つまり次元 min(vecdim)) では、出力 Y の長さは要求された分位数の個数 (N または length(p)) に等しくなります。残りの各作用次元では、Y の長さは 1 になります。その他の次元の長さは X および Y についてと同じものになります。

たとえば、2 x 3 x 3 の配列 X があり、p = [0.2 0.4 0.6 0.8] であるとします。この場合、quantile(X,p,[1 2]) は配列を返します。この配列の各ページには、X の対応するページの要素の 0.2、0.4、0.6 および 0.8 分位数が格納されます。1 と 2 が作用次元であり、min([1 2]) = 1 および length(p) = 4 なので、出力は 4 x 1 x 3 の配列になります。

データ型: single | double

分位数の計算方法。'exact' または 'approximate' を指定します。既定では、quantile は並べ替えを使用するアルゴリズムによって厳密な分位数を返します。quantile に対して 'method','approximate' を指定すると、t-digestを使用するアルゴリズムによって近似分位数を取得できます。

データ型: char | string

出力引数

すべて折りたたむ

データ ベクトルまたは配列の分位数。1 つまたは複数の累積確率の値が格納されているスカラーまたは配列として返されます。

  • X がベクトルである場合、Y は要求された分位数の個数と同じ長さ (N または length(p)) のスカラーまたはベクトルになります。Y(i) には分位数 p(i) が格納されます。

  • X が d 次元の配列である場合、Y は配列になり、最小の作用次元の長さは要求された分位数の個数 (N または length(p)) に等しくなります。

詳細

すべて折りたたむ

多次元配列

"多次元配列" は、3 つ以上の次元をもつ配列です。たとえば、X は 1 x 3 x 4 の配列で、X は 3 次元配列です。

大きさが 1 でない最初の次元

"大きさが 1 でない最初の次元" とは、配列の次元のうちサイズが 1 ではない最初の次元です。たとえば X が 1 x 2 x 3 x 4 の配列の場合、X の大きさが 1 でない最初の次元は 2 番目の次元です。

線形内挿

線形内挿は線形多項式を使用して yi = f(xi)、つまりベクトルまたは配列 x の各点における基礎関数 Y = f(X) の値を求めます。データ点 (x1,y1) および (x2, y2) があり、y1 = f(x1) および y2 = f(x2) の場合、線形内挿では x1 と x2 の間にある x について y = f(x) を次のように計算します。

y=f(x)=y1+(xx1)(x2x1)(y2y1).

同様に、1.5/n 分位数が y1.5/n、2.5/n 分位数が y2.5/n の場合、線形内挿では 2.3/n 分位数の y2.3/n は次のように計算されます。

y2.3n=y1.5n+(2.3n1.5n)(2.5n1.5n)(y2.5ny1.5n).

t-digest

t-digest[2]は、データセットの経験的累積分布関数 (CDF) のスパース表現である確率的データ構造です。t-digest は、特にデータ分布の裾の付近において、精度を制御できる方法で、順位に基づく統計量 (百分位数や分位数など) の近似値をオンライン データまたは分散したデータから計算するために役立ちます。

t-digest は、別々の区画に振り分けられているデータに対し、データの各区画について個別に分位数の推定値 (および百分位数の推定値) を計算してから、メモリ範囲と計算の相対精度 (第 q 分位数に対して q(1q)) を一定に保ったまま推定値を結合します。これらの理由から、t-digest は tall 配列の処理に対して実用的です。

別々の区画に振り分けられている配列の分位数を推定するため、まずデータの各区画に t-digest を構築します。t-digest は区画内のデータをクラスター化し、重心の値と累積加重 (クラスターに寄与する標本数を表す) によって各クラスターを要約します。t-digest では q = 0.5 付近の CDF の領域表現には大きいクラスター (重心間隔が広い) を、q = 0 または q = 1 付近の CDF の領域表現には小さいクラスター (重心間隔が狭い) を使用します。

t-digest は、クラスター サイズの制御に、圧縮パラメーター δ により分位数 q をインデックス k にマッピングするスケーリング関数を使用します。つまり、次のようになります。

k(q,δ)=δ(sin1(2q1)π+12),

マッピング k は単調であり、最小値は k(0,) = 0、最大値は k(1,) = δ です。

= 10 の場合のスケーリング関数

スケーリング関数は、q に可変サイズのステップを与えるため、分位数 q をスケール係数 k に変換します。この結果、クラスター サイズは不均一になります (中心の分位数の付近では大きくなり、q = 0 または q = 1 の付近では小さくなります)。より小さいクラスターによってデータの両端付近の精度が向上します。

重みと位置がある新しい観測値で t-digest を更新するには、新しい観測値に最も近いクラスターを求めます。そして、更新されたクラスターの重みがサイズの制限を超えないという条件で、重みを追加し、加重平均に基づいてクラスターの重心を更新します。

データの各区画の独立した t-digest は、t-digest の和集合をとり、重心をマージすることにより結合できます。t-digest を結合するには、はじめにすべての独立した t-digest のクラスターをクラスターの重みの降順で並べ替えます。そして、サイズの制限を満たす場合は、隣接するクラスターをマージして新しい t-digest を形成します。

データセット全体を表す t-digest を形成すると、t-digest の各クラスターの端点 (または境界) を推定し、各クラスターの端点間で内挿を使用して正確な分位数の推定値を求めることができます。

アルゴリズム

quantile は、n 要素のベクトル X について、以下のように並べ替えに基づくアルゴリズムを使用して分位数を計算します。

  1. X 内の並べ替えられた要素を、分位数 (0.5/n)、(1.5/n)、...、([n – 0.5]/n) として使用します。以下に例を示します。

    • {6, 3, 2, 10, 1} のような 5 要素のデータ ベクトルでは、並べ替えられた要素 {1, 2, 3, 6, 10} がそれぞれ 0.1、0.3、0.5、0.7、0.9 の分位数に相当します。

    • {6, 3, 2, 10, 8, 1} のような 6 要素のデータ ベクトルでは、並べ替えられた要素 {1, 2, 3, 6, 8, 10} がそれぞれ (0.5/6)、(1.5/6)、(2.5/6)、(3.5/6)、(4.5/6)、(5.5/6) の分位数に相当します。

  2. quantile線形内挿を使用して (0.5/n) と ([n - 0.5]/n) の間の確率の分位数を計算します。

  3. この範囲外の確率に対応する分位数に対して、quantileX の要素の最小値または最大値を割り当てます。

quantileNaN を欠損値として認識し、削除します。

参照

[1] Langford, E. “Quartiles in Elementary Statistics”, Journal of Statistics Education. Vol. 14, No. 3, 2006.

[2] Dunning, T., and O. Ertl. “Computing Extremely Accurate Quantiles Using T-Digests.” August 2017.

拡張機能

R2006a より前に導入