このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
quantile
データ セットの分位数
構文
説明
は、最初の 2 つの構文のいずれかで Q
= quantile(___,"all")A
のすべての要素の分位数を返します。
は、最初の 2 つの構文のいずれかで次元 Q
= quantile(___,dim
)dim
に沿って演算します。たとえば、A
が行列の場合、quantile(A,p,2)
は各行の要素について動作します。
は、最初の 2 つの構文のいずれかでベクトル Q
= quantile(___,vecdim
)vecdim
で指定された次元に沿って演算します。たとえば、A
が行列の場合、quantile(A,n,[1 2])
は A
のすべての要素について動作します。これは、次元 1 と次元 2 で定義された配列スライスに行列内のすべての要素が含まれるためです。
例
特定の確率に対する分位数
指定した確率に対するデータ セットの分位数を計算します。
サイズが 7 のデータ セットを生成します。
rng default % for reproducibility A = randn(1,7)
A = 1×7
0.5377 1.8339 -2.2588 0.8622 0.3188 -1.3077 -0.4336
A
の要素の 0.3 分位数を計算します。
Q = quantile(A,0.3)
Q = -0.7832
累積確率 0.025、0.25、0.5、0.75、0.975 に対する A
の要素の分位数を計算します。
Q = quantile(A,[0.025 0.25 0.5 0.75 0.975])
Q = 1×5
-2.2588 -1.0892 0.3188 0.7810 1.8339
n
個の等間隔の累積確率に対する分位数
特定の数の確率に対するデータ セットの分位数を計算します。
サイズが 7 のデータ セットを生成します。
rng default % for reproducibility A = randn(1,7)
A = 1×7
0.5377 1.8339 -2.2588 0.8622 0.3188 -1.3077 -0.4336
A
の要素の等間隔の 4 つの分位数を計算します。
Q = quantile(A,4)
Q = 1×4
-1.4028 -0.2079 0.4720 0.9593
等間隔の 4 つの分位数を返す別の方法として、Q = quantile(A,[0.2,0.4,0.6,0.8])
を使用する方法もあります。
特定の確率に対する行列の分位数
指定した確率に対する分位数をデータ行列の列と行に沿って計算します。
4 行 6 列のデータ行列を生成します。
rng default % for reproducibility A = randn(4,6)
A = 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
A
の各列の 0.3 分位数を計算します。
Q = quantile(A,0.3,1)
Q = 1×6
-0.3013 -0.6958 1.5336 -0.1056 0.9491 0.1078
quantile
は、A
の列ごとに 1 つの分位数を計算し、行ベクトル Q
を返します。-0.3013
は、A
の 1 列目 (要素 0.5377、1.8339、-2.2588、0.8622 の列) の 0.3 分位数です。dim
の既定値は 1 であるため、Q = quantile(A,0.3)
も同じ結果を返します。
A
の各行の 0.3 分位数を計算します。
Q = quantile(A,0.3,2)
Q = 4×1
0.3844
-0.8642
-1.0750
0.4985
quantile
は、A
の行ごとに 1 つの分位数を計算し、列ベクトル Q
を返します。0.3844
は、A
の 1 行目 (要素 0.5377、0.3188、3.5784、0.7254、-0.1241、0.6715 の行) の 0.3 分位数です。
n
個の等間隔の確率に対する行列の分位数
等間隔の分位数をデータ行列の列と行に沿って計算します。
6 行 7 列のデータ行列を生成します。
rng default % for reproducibility A = randi(10,6,7)
A = 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
A
の列ごとに 3 つの等間隔の累積確率に対する分位数を計算します。
Q = quantile(A,3,1)
Q = 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
行列 Q
の各列には、A
の対応する列の分位数が含まれます。2
、8
、および 10 は、A
の 1 列目 (要素 9、10、2、10、7、1 の列) の分位数です。dim
の既定値は 1 であるため、Q = quantile(A,3)
も同じ結果を返します。
A
の行ごとに 3 つの等間隔の累積確率に対する分位数を計算します。
Q = quantile(A,3,2)
Q = 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
行列 Q
の各行には、A
の対応する行の 3 つの等間隔の分位数が含まれます。7
、8
、および 8.75
は、A
の 1 行目 (要素 9、3、10、8、7、8、7 の行) の分位数です。
特定の確率に対する多次元配列の分位数
"all"
および vecdim
入力を使用して、指定した確率に対する多次元配列の分位数を計算します。
3×5×2 の配列を作成します。確率のベクトルを指定します。
A = reshape(1:30,[3 5 2])
A = A(:,:,1) = 1 4 7 10 13 2 5 8 11 14 3 6 9 12 15 A(:,:,2) = 16 19 22 25 28 17 20 23 26 29 18 21 24 27 30
p = [0.25 0.75];
A
のすべての要素の 0.25 分位数と 0.75 分位数を計算します。
Qall = quantile(A,p,"all")
Qall = 2×1
8
23
Qall(1)
は A
の 0.25 分位数、Qall(2)
は A
の 0.75 分位数です。
操作次元として次元 1 および 2 を指定して、A
の各ページの 0.25 分位数と 0.75 分位数を計算します。
Qpage = quantile(A,p,[1 2])
Qpage = Qpage(:,:,1) = 4.2500 11.7500 Qpage(:,:,2) = 19.2500 26.7500
Qpage(1,1,1)
は A
の最初のページの 0.25 分位数、Qpage(2,1,1)
は A
の最初のページの 0.75 分位数です。
操作次元として次元 2 および 3 を指定して、A(i,:,:)
の各スライスの要素の 0.25 分位数と 0.75 分位数を計算します。
Qrow = quantile(A,p,[2 3])
Qrow = 3×2
7 22
8 23
9 24
Qrow(3,1)
は A(3,:,:)
の要素の 0.25 分位数、Qrow(3,2)
は A(3,:,:)
の要素の 0.75 分位数です。
偶数個のデータ要素の中央値と四分位数
偶数個の要素をもつベクトルの中央値と四分位数を求めます。
データ ベクトルを作成します。
A = [2 5 6 10 11 13]
A = 1×6
2 5 6 10 11 13
A
の要素の中央値を計算します。
Q = quantile(A,0.5)
Q = 8
A
の要素の四分位数を計算します。
Q = quantile(A,[0.25, 0.5, 0.75])
Q = 1×3
5 8 11
A
の要素の四分位数を計算する別の方法として、Q = quantile(A,3)
を使用する方法もあります。
quantile
は線形内挿を使用して中央値と四分位数を求めるため、その結果は教科書に記載された定義とは異なる場合があります。
奇数個のデータ要素の中央値と四分位数
奇数個の要素をもつベクトルの中央値と四分位数を求めます。
データ ベクトルを作成します。
A = [2 4 6 8 10 12 14]
A = 1×7
2 4 6 8 10 12 14
A
の要素の中央値を計算します。
Q = quantile(A,0.50)
Q = 8
A
の要素の四分位数を計算します。
Q = quantile(A,[0.25, 0.5, 0.75])
Q = 1×3
4.5000 8.0000 11.5000
A
の四分位数を計算する別の方法として、Q = quantile(A,3)
を使用する方法もあります。
quantile
は線形内挿を使用して中央値と四分位数を求めるため、その結果は教科書に記載された定義とは異なる場合があります。
特定の確率に対する tall ベクトルの分位数
特定の確率に対する tall 列ベクトルの正確な分位数および近似分位数を計算します。
tall 配列に対して計算を実行すると、MATLAB® は並列プール (Parallel Computing Toolbox™ がある場合の既定) またはローカル MATLAB セッションのいずれかを使用します。Parallel Computing Toolbox がある場合にローカル MATLAB セッションを使用してサンプルを実行するには、関数mapreducer
を使用してグローバル実行環境を変更します。
mapreducer(0)
airlinesmall
データ セットのデータストアを作成します。"NA"
値を欠損データとして扱って、datastore
で NaN
値に置き換えられるようにします。ArrTime
変数を処理するように指定します。
ds = datastore("airlinesmall.csv","TreatAsMissing","NA", ... "SelectedVariableNames","ArrTime");
データストア上に tall table tt
を作成し、tall table から tall ベクトル A
にデータを抽出します。
tt = tall(ds)
tt = Mx1 tall table ArrTime _______ 735 1124 2218 1431 746 1547 1052 1134 : :
A = tt{:,:}
A = Mx1 tall double column vector 735 1124 2218 1431 746 1547 1052 1134 : :
累積確率 p = 0.5
に対する A
の正確な分位数を計算します。A
が tall 列ベクトルで p
がスカラーであるため、既定では quantile
は正確な分位数の値を返します。
p = 0.5; Qexact = quantile(A,p)
Qexact = tall double ?
p = 0.5
に対する A
の近似分位数を計算します。method
を "approximate"
として指定して、分位数の計算にT-Digestに基づく近似アルゴリズムを使用します。
Qapprox = quantile(A,p,"Method","approximate")
Qapprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
gather
を使用して、tall 配列を評価して結果をメモリに入れます。
[Qexact,Qapprox] = gather(Qexact,Qapprox)
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 4: Completed in 1 sec - Pass 2 of 4: Completed in 0.38 sec - Pass 3 of 4: Completed in 0.61 sec - Pass 4 of 4: Completed in 0.32 sec Evaluation completed in 2.9 sec
Qexact = 1522
Qapprox = 1.5220e+03
正確な分位数と近似分位数の値は、表示されている 4 桁までは同じです。
異なる次元に沿った tall 行列の分位数
指定した累積確率に対する tall 行列の正確な分位数および近似分位数を異なる次元に沿って計算します。
tall 配列に対して計算を実行すると、MATLAB® は並列プール (Parallel Computing Toolbox™ がある場合の既定) またはローカル MATLAB セッションのいずれかを使用します。Parallel Computing Toolbox がある場合にローカル MATLAB セッションを使用してサンプルを実行するには、関数mapreducer
を使用してグローバル実行環境を変更します。
mapreducer(0)
airlinesmall
データ セットから varnames
に格納されている変数のサブセットが含まれた tall 行列 A
を作成します。tall 配列からデータを抽出するステップの詳細については、特定の確率に対する tall ベクトルの分位数を参照してください。
varnames = ["ArrDelay","ArrTime","DepTime","ActualElapsedTime"]; ds = datastore("airlinesmall.csv","TreatAsMissing","NA", ... "SelectedVariableNames",varnames); tt = tall(ds); A = tt{:,varnames}
A = Mx4 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に基づく近似アルゴリズムではなく、並べ替えに基づくアルゴリズム (アルゴリズムを参照) を使用して効率的に計算できるように正確な分位数のみを計算します。
2 番目の次元に沿って、累積確率 0.25、0.5、および 0.75 のベクトル p
に対する A
の正確な分位数を計算します。
p = [0.25 0.5 0.75]; Qexact = quantile(A,p,2)
Qexact = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
関数が最初の次元に沿って演算し、p
が累積確率のベクトルである場合、t-digest に基づく近似アルゴリズムを使用して分位数を計算する必要があります。並べ替えに基づくアルゴリズムを使用して tall 配列の最初の次元に沿って分位数を求めるのは、計算負荷が高い処理です。
最初の次元に沿って、累積確率 0.25、0.5、および 0.75 に対する A
の近似分位数を計算します。既定の次元は 1 であるため、dim
に値を指定する必要はありません。
Qapprox = quantile(A,p,"Method","approximate")
Qapprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
gather
を使用して、tall 配列を評価して結果をメモリに入れます。
[Qexact,Qapprox] = gather(Qexact,Qapprox);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.7 sec Evaluation completed in 2.3 sec
累積確率 0.25、0.5、および 0.75 に対する (2 番目の次元に沿った) A
の正確な分位数の最初の 5 行を表示します。
Qexact(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
行列 Qexact
の各行には、A
の対応する行の 3 つの分位数が含まれます。たとえば、30.5
、347.5
、および 688.5
は、それぞれ A
の 1 行目の 0.25、0.5、および 0.75 の分位数です。
累積確率 0.25、0.5、および 0.75 に対する (最初の次元に沿った) A
の近似分位数を表示します。
Qapprox
Qapprox = 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
行列 Qapprox
の各列には、A
の対応する列の 3 つの分位数が含まれます。たとえば、Qapprox
の 1 列目の要素は –7、0、11 であり、A
の 1 列目の分位数が格納されています。
n
個の等間隔の確率に対する tall 行列の分位数
特定の数の等間隔の累積確率に対する tall 行列の正確な分位数および近似分位数を異なる次元に沿って計算します。
tall 配列に対して計算を実行すると、MATLAB® は並列プール (Parallel Computing Toolbox™ がある場合の既定) またはローカル MATLAB セッションのいずれかを使用します。Parallel Computing Toolbox がある場合にローカル MATLAB セッションを使用してサンプルを実行するには、関数mapreducer
を使用してグローバル実行環境を変更します。
mapreducer(0)
airlinesmall
データ セットから varnames
に格納されている変数のサブセットが含まれた tall 行列 A
を作成します。tall 配列からデータを抽出するステップの詳細については、特定の確率に対する tall ベクトルの分位数を参照してください。
varnames = ["ArrDelay","ArrTime","DepTime","ActualElapsedTime"]; ds = datastore("airlinesmall.csv","TreatAsMissing","NA", ... "SelectedVariableNames",varnames); tt = tall(ds); A = tt{:,varnames}
A = Mx4 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 : : : : : : : :
最初の次元に沿って等間隔の累積確率に対する分位数を計算するには、T-Digestに基づく近似アルゴリズムを使用する必要があります。並べ替えに基づくアルゴリズム (アルゴリズムを参照) を使用して tall 配列の最初の次元に沿って分位数を求めるのは、計算負荷が高い処理です。
A
の最初の次元に沿って 3 つの等間隔の累積確率に対する分位数を計算します。既定の次元は 1 であるため、dim
に値を指定する必要はありません。method
を "approximate"
として指定して、近似アルゴリズムを使用します。
Qapprox = quantile(A,3,"Method","approximate")
Qapprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
その他の次元 (dim
が 1
以外) に沿って等間隔の累積確率に対する分位数を計算する場合、quantile
は、並べ替えに基づくアルゴリズムを使用して効率的に計算できるように正確な分位数のみを計算します。
A
の 2 番目の次元に沿って 3 つの等間隔の累積確率に対する分位数を計算します。dim
が 1 でないため、既定では quantile
は正確な分位数を返します。
Qexact = quantile(A,3,2)
Qexact = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
gather
を使用して、tall 配列を評価して結果をメモリに入れます。
[Qapprox,Qexact] = gather(Qapprox,Qexact);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.2 sec Evaluation completed in 1.5 sec
3 つの等間隔の累積確率に対する (最初の次元に沿った) A
の近似分位数を表示します。
Qapprox
Qapprox = 3×4
103 ×
-0.0070 1.1149 0.9322 0.0700
0 1.5220 1.3350 0.1020
0.0110 1.9180 1.7400 0.1510
行列 Qapprox
の各列には、A
の対応する列の分位数が含まれます。たとえば、Qapprox
の 1 列目の要素は –7、0、11 であり、A
の 1 列目の分位数が格納されています。
3 つの等間隔の累積確率に対する (2 番目の次元に沿った) A
の正確な分位数の最初の 5 行を表示します。
Qexact(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
行列 Qexact
の各行には、A
の対応する行の 3 つの等間隔の分位数が含まれます。たとえば、30.5
、347.5
、および 688.5
は、それぞれ A
の 1 行目の 0.25、0.5、および 0.75 の分位数です。
入力引数
A
— 入力配列
ベクトル | 行列 | 多次元配列
入力配列。ベクトル、行列または多次元配列として指定します。
データ型: double
| single
| duration
p
— 分位数を計算する累積確率
スカラー | ベクトル
分位数を計算する累積確率。0 から 1 のスカラーまたはスカラーのベクトルとして指定します。
例: 0.3
例: [0.25, 0.5, 0.75]
例: (0:0.25:1)
データ型: double
| single
n
— 分位数を計算する確率の数
正の整数スカラー
分位数を計算する確率の数。正の整数のスカラーとして指定します。quantile
は、データ セットを均等に分布した n
+1 個のセグメントに分割する n
個の分位数を返します。
データ型: double
| single
dim
— 演算の対象の次元
正の整数スカラー
演算の対象の次元。正の整数のスカラーとして指定します。次元を指定しない場合、既定値はサイズが 1 より大きい最初の配列次元です。
入力行列 A
と累積確率のベクトル p
を考えます。
Q = quantile(A,p,1)
は、p
の累積確率に対するA
の列の分位数を計算します。指定された操作次元が 1 であるため、Q
にはlength(p)
個の行が含まれます。Q = quantile(A,p,2)
は、p
の累積確率に対するA
の行の分位数を計算します。指定された操作次元が 2 であるため、Q
にはlength(p)
個の列が含まれます。
入力行列 A
と等間隔の確率のベクトル n
を考えます。
Q = quantile(A,n,1)
は、n
個の等間隔の累積確率に対するA
の列の分位数を計算します。指定された操作次元が 1 であるため、Q
にはn
個の行が含まれます。Q = quantile(A,n,2)
は、n
個の等間隔の累積確率に対するA
の行の分位数を計算します。指定された操作次元が 2 であるため、Q
にはn
個の列が含まれます。
次元 dim
は、長さが length(p)
または n
に等しい Q
の次元を示します。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
vecdim
— 演算の対象の次元のベクトル
正の整数のベクトル
演算の対象の次元のベクトル。正の整数のベクトルとして指定します。各要素は入力データの次元を表します。
指定された最小の操作次元の出力 Q
のサイズは length(p)
または n
に等しくなります。vecdim
で指定されたその他の操作次元の Q
のサイズは 1 です。vecdim
で指定されていないすべての次元の Q
のサイズは入力データと同じままです。
2×3×3 の入力配列 A
と累積確率 p
を考えます。quantile(A,p,[1 2])
は、操作次元が 1 と 2 で min([1 2]) = 1
であるため、length(p)
×1×3 の配列を返します。返された配列の各ページには、A
の対応するページの要素の分位数が含まれます。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
詳細
線形内挿
線形内挿は線形多項式を使用して、ベクトルまたは配列 x の点における基となる関数 Y = f(X) の値である yi = f(xi) を求めます。y1 = f(x1) および y2 = f(x2) であるデータ点 (x1, y1) および (x2, y2) について、線形内挿では、次のように x1 から x2 の与えられた x に対して y = f(x) を求めます。
同様に、1.5/n の分位数が y1.5/n で、2.5/n の分位数が y2.5/n である場合、線形内挿では 2.3/n の分位数 y2.3/n を次のようにして求めます。
T-Digest
T-digest [2] は、データ セットの経験的累積分布関数 (CDF) のスパース表現である確率データ構造です。T-digest は、特にデータ分布の裾近傍で制御可能な精度を実現する方法であり、オンライン データまたは分散データからランク ベースの統計量 (百分位数や分位数など) の近似値を計算する際に役立ちます。
異なる区画に分散されているデータについて、t-digest は、計算の一定のメモリ制限および一定の相対精度 (q 番目の分位数の場合は ) を保ちながら、データ区画ごとに別々に推定分位数 (および推定百分位数) を計算してから、推定値を結合します。そのため、t-digest は tall 配列の処理に有用です。
異なる区画に分散している配列の分位数を推定するために、まずデータの各区画で t-digest を作成します。t-digest は区画内のデータをクラスタリングし、重心値、およびクラスターに寄与しているサンプルの数を表す累積の重みによって各クラスターの要約を示します。t-digest は大規模なクラスター (間隔が広い重心) を使用して q = 0.5
に近い CDF の領域を表し、小規模なクラスター (間隔が狭い重心) を使用して q = 0
および q = 1
に近い CDF の領域を表します。
t-digest は、圧縮パラメーター δ を使って分位数 q をインデックス k にマッピングするスケーリング関数を使用してクラスター サイズを制御します。つまり、次のようになります。
ここで、マッピング k は単調増加であり、最小値は k(0,δ) = 0 で最大値は k(1,δ) = δ です。下図は、δ = 10 の場合のスケーリング関数を示しています。
このスケーリング関数は分位数 q をスケーリング係数 k に変換して、q の可変サイズのステップを求めています。そのため、クラスター サイズは不均等です (中央の分位数付近では大きく、q = 0
および q = 1
付近では小さくなっています)。クラスターが小さいほど、データの両端付近でより高い精度が得られます。
重みと位置をもつ新しい観測で t-digest を更新するために、新しい観測に最も近いクラスターを求めます。次に、重みを追加し、加重平均に基づいてクラスターの重心を更新します。ただし、クラスターの更新された重みがサイズ制限を超えないようにします。
t-digest の和集合を求めて重心をマージすることで、データの各区画の独立した t-digest を結合できます。t-digest を結合するために、まずすべての独立した t-digest のクラスターをクラスターの重みの降順で並べ替えます。次に、サイズ制限を満たしていれば、隣接するクラスターをマージして新しい t-digest を求めます。
データ セット全体を表す t-digest が求まると、t-digest 内の各クラスターの端点 (境界) を推定し、各クラスターの端点間の内挿を使用して正確な推定分位数を求めます。
アルゴリズム
n 要素のベクトル A
について、quantile
は並べ替えに基づくアルゴリズムを使用して分位数を計算します。
A
の並べ替えられた要素は、(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) の分位数に対応しています。
quantile
は線形内挿を使用して (0.5/n) と ([n – 0.5]/n) の間の確率に対する分位数を計算します。その範囲外の確率に対応する分位数に対して、
quantile
はA
の要素の最小値または最大値を割り当てます。
quantile
は NaN
を欠損値として扱って削除します。
参照
[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.
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
Q = quantile(A,p)
およびQ = quantile(A,n)
は、A
が tall 数値列ベクトルである場合にのみ (並べ替えに基づくアルゴリズムを使用して) 正確な分位数を返します。Q = quantile(__,dim)
は、次の "いずれか" の条件が存在している場合にのみ正確な分位数を返します。A
が tall 数値列ベクトルである。A
が tall 数値配列であり、dim
が1
でない。たとえば、quantile(A,p,2)
は、tall 配列A
の行に沿って正確な分位数を返します。
A
が tall 配列で、dim
が1
の場合、method
を"approximate"
として指定して T-Digest に基づく近似アルゴリズムを分位数の計算に使用する必要があります。たとえば、quantile(A,p,1,"Method","approximate")
は、tall 配列A
の列に沿って近似分位数を返します。Q = quantile(__,vecdim)
は、次の "いずれか" の条件が存在している場合にのみ正確な分位数を返します。A
が tall 数値列ベクトルである。A
が tall 数値配列であり、vecdim
に1
が含まれていない。たとえば、A
が 3×5×2 の配列の場合、quantile(A,p,[2,3])
はA(i,:,:)
の各スライスの要素の正確な分位数を返します。A
が tall 数値配列であり、vecdim
に1
およびサイズが 1 より大きいA
のすべての次元が含まれている。たとえば、A
が 10×1×4 の配列の場合、quantile(A,p,[1 3])
はA(:,1,:)
の要素の正確な分位数を返します。
A
が tall 数値配列であり、vecdim
に1
が含まれているが、サイズが 1 より大きいA
のすべての次元は含まれていない場合、method
を"approximate"
として指定して近似アルゴリズムを使用する必要があります。たとえば、A
が 10×1×4 の配列の場合、quantile(A,p,[1 2],"Method","approximate")
を使用してA
の各ページの近似分位数を求めることができます。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
"all"
およびvecdim
入力はサポートされていません。名前と値の引数
Method
はサポートされていません。dim
入力引数はコンパイル時の定数でなければなりません。dim
入力引数を指定しなかった場合、動作対象の (操作) 次元は生成されたコードで異なるものになる可能性があります。結果として、ランタイム エラーが発生する場合があります。詳細については、自動次元選択の制限事項 (MATLAB Coder)を参照してください。出力
Q
がベクトルの場合、次のすべての条件が満たされていれば、Q
の方向は MATLAB® と異なったものになります。dim
を指定していない。A
がコンパイル時には可変サイズ配列であり、可変サイズ ベクトルではないが、A
が実行時にはベクトルである。ベクトル
A
の方向がベクトルp
の方向と一致していない。
この場合、出力
Q
は、p
の方向と一致せず、A
の方向と一致します。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
"all"
およびvecdim
入力はサポートされていません。名前と値の引数
Method
はサポートされていません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2022b: 小規模な入力データでのパフォーマンスの向上
より高速な入力解析により、関数 quantile
のパフォーマンスが向上しました。パフォーマンスの向上は、入力解析が計算時間の大半を占める場合に顕著です。この状況は、以下の場合に発生します。
入力データのサイズが小さい。
分位数を計算する累積確率の数が小さい。
既定の操作次元に沿って計算する。
たとえば、次のコードは、3000 個の要素をもつ行列について 4 つの分位数を計算します。直前のリリースと比較して、このコードは約 4.95 倍速くなっています。
function timingQuantile A = rand(300,10); for k = 1:3e3 Q = quantile(A,[20 40 60 80]); end end
おおよその実行時間は以下のとおりです。
R2022a: 0.94 秒
R2022b: 0.19 秒
このコードの時間測定では、Windows® 10、Intel® Xeon® CPU E5-1650 v4 (3.60 GHz) 搭載のテスト システムで、関数 timeit
を使用しました。
timeit(@timingQuantile)
R2022a: Statistics and Machine Learning Toolbox から MATLAB に移行
以前は、quantile
では Statistics and Machine Learning Toolbox™ が必要でした。
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)