데이터 세트의 분위수
지정된 확률에 대한 데이터 세트의 분위수를 계산합니다.
크기가 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
y = quantile(x,[0.2,0.4,0.6,0.8])
을 사용해도 균일한 간격의 분위수 4개를 반환할 수 있습니다.
데이터 행렬의 열과 행을 따라 지정된 확률에 대한 백분위수를 계산합니다.
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
의 각 열에 대한 0.3 분위수를 계산합니다(dim
= 1).
y = quantile(X,0.3,1)
y = 1×6
-0.3013 -0.6958 1.5336 -0.1056 0.9491 0.1078
quantile
은 행렬의 각 열마다 하나의 분위수를 계산하는 경우 행 벡터 y
를 반환합니다. 예를 들어, -0.3013
은 요소가 (0.5377, 1.8339, -2.2588, 0.8622)인 X
의 첫 번째 열에 대한 0.3 분위수입니다. dim
의 디폴트 값은 1이기 때문에 y = quantile(X,0.3)
과 동일한 결과를 반환할 수 있습니다.
X
의 각 행에 대한 0.3 분위수를 계산합니다(dim
= 2).
y = quantile(X,0.3,2)
y = 4×1
0.3844
-0.8642
-1.0750
0.4985
quantile
은 행렬의 각 행마다 하나의 분위수를 계산하는 경우 열 벡터 y
를 반환합니다. 예를 들어, 0.3844
는 요소가 (0.5377, 0.3188, 3.5784, 0.7254, -0.1241, 0.6715)인 X
의 첫 번째 행에 대한 0.3 분위수입니다.
데이터 행렬의 열과 행을 따라 균일한 간격의 분위수 개를 계산합니다.
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
의 각 열에 대해 균일한 간격의 분위수 3개를 계산합니다(dim
= 1).
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
의 첫 번째 열에 대한 분위수입니다. y = quantile(X,3)
은 dim
의 디폴트 값이 1이기 때문에 동일한 답을 반환합니다.
X
의 각 행에 대해 균일한 간격의 백분위수 3개를 계산합니다(dim
= 2).
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
의 첫 번째 행은 요소가 (9, 3, 10, 8, 7, 8, 7)인 X
의 첫 번째 행에 대한 분위수입니다.
'all'
입력 인수 및 vecdim
입력 인수를 사용하여 지정된 확률에 대한 다차원 배열의 분위수를 계산합니다.
3×5×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
의 첫 번째 페이지에 대한 0.25 분위수이고 Ypage(2,1,1)
은 X
의 첫 번째 페이지에 대한 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
y = quantile(x,3)
을 사용해도 x
의 분위수를 계산할 수 있습니다.
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
y = quantile(x,3)
을 사용해도 x
의 분위수를 계산할 수 있습니다.
quantile
이 선형 보간을 사용하여 중앙값과 분위수를 구하기 때문에 이러한 결과는 교재 정의와 다를 수 있습니다.
주어진 확률에 대한 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형 테이블을 만들고 tall형 테이블에서 tall형 벡터로 데이터를 추출합니다.
t = tall(ds) % Tall table
t = Mx1 tall table ArrTime _______ 735 1124 2218 1431 746 1547 1052 1134 : :
x = t{:,:} % Tall vector
x = Mx1 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 = tall double ?
p
= 0.5인 x의 근사 분위수를 계산합니다. 'Method','approximate'
를 지정하여 분위수 계산에 T-Digest를 기반으로 한 근사 알고리즘을 사용합니다.
yApprox = quantile(x,p,'Method','approximate')
yApprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
tall형 배열을 계산하고 gather
를 사용하여 결과를 메모리로 가져옵니다.
[yExact,yApprox] = gather(yExact,yApprox)
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 4: Completed in 1.2 sec - Pass 2 of 4: Completed in 0.56 sec - Pass 3 of 4: Completed in 0.75 sec - Pass 4 of 4: Completed in 0.78 sec Evaluation completed in 4.3 sec
yExact = 1522
yApprox = 1.5220e+03
근사 분위수와 정확한 분위수의 값이 표시된 4자리까지 동일합니다.
다른 차원을 따라 지정된 누적 확률에 대해 tall형 행렬의 정확한 분위수와 근사 분위수를 계산합니다.
tall형 배열에 대한 계산을 수행할 때 MATLAB®은 병렬 풀(Parallel Computing Toolbox™를 사용할 경우 디폴트 값) 또는 로컬 MATLAB 세션을 사용합니다. Parallel Computing Toolbox가 있는 상태에서 로컬 MATLAB 세션을 사용하여 예제를 실행하려면 mapreducer
함수를 사용하여 전역 실행 환경을 변경하십시오.
mapreducer(0)
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 X = t{:,varnames} % Tall matrix
X = 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를 기반으로 하는 근사 알고리즘 대신 정렬 기반 알고리즘(알고리즘 참조)을 사용하여 효율적으로 계산을 수행할 수 있습니다.
누적 확률 0.25, 0.5, 0.75에 대해 두 번째 차원을 따라 X
의 정확한 분위수를 계산합니다.
p = [0.25 0.50 0.75]; % Vector of cumulative probabilities
Yexact = quantile(X,p,2)
Yexact = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
함수가 첫 번째 차원을 따라 연산을 수행하고 p
가 누적 확률로 구성된 벡터이면 t-digest를 기반으로 하는 근사 알고리즘을 사용하여 분위수를 계산해야 합니다. 정렬 기반 알고리즘을 사용하여 tall형 배열의 첫 번째 차원을 따라 분위수를 구하면 계산량이 많아집니다.
누적 확률 0.25, 0.5, 0.75에 대해 첫 번째 차원을 따라 X
의 근사 분위수를 계산합니다. 디폴트 차원이 1이기 때문에 dim
의 값을 지정할 필요가 없습니다.
Yapprox = quantile(X,p,'Method','approximate')
Yapprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
tall형 배열을 계산하고 gather
를 사용하여 결과를 메모리로 가져옵니다.
[Yexact,Yapprox] = gather(Yexact,Yapprox);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 2.8 sec Evaluation completed in 3.7 sec
누적 확률 0.25, 0.5, 0.75에 대해 (두 번째 차원을 따라) 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
의 대응하는 행에 대한 분위수 세 개를 포함합니다. 예를 들어, 30.5
, 347.5
, 688.5
는 각각 X
의 첫 번째 행에 대한 0.25, 0.5, 0.75 분위수입니다.
누적 확률 0.25, 0.5, 0.75에 대해 (첫 번째 차원을 따라) 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
의 각 열에 대한 세 개의 분위수에 해당합니다. 예를 들어, 요소 (–7, 0, 11)을 갖는 Yapprox
의 첫 번째 열은 X
의 첫 번째 열에 대한 분위수를 포함합니다.
균일한 간격의 누적 확률 N
개에 대해 tall형 행렬의 여러 차원을 따라 정확한 분위수와 근사 분위수를 계산합니다.
tall형 배열에 대한 계산을 수행할 때 MATLAB®은 병렬 풀(Parallel Computing Toolbox™를 사용할 경우 디폴트 값) 또는 로컬 MATLAB 세션을 사용합니다. Parallel Computing Toolbox가 있는 상태에서 로컬 MATLAB 세션을 사용하여 예제를 실행하려면 mapreducer
함수를 사용하여 전역 실행 환경을 변경하십시오.
mapreducer(0)
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 X = t{:,varnames}
X = 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형 배열의 첫 번째 차원을 따라 분위수를 구하면 계산량이 많아집니다.
X
의 첫 번째 차원을 따라 균일한 간격의 분위수 세 개를 계산합니다. 디폴트 차원이 1이기 때문에 dim
의 값을 지정할 필요가 없습니다. 근사 알고리즘을 사용하도록 'Method','approximate'
를 지정합니다.
N = 3; % Number of quantiles Yapprox = quantile(X,N,'Method','approximate')
Yapprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
다른 차원(dim
이 1
이 아님)을 따라 균일한 간격의 분위수를 구하기 위해 quantile
은 정확한 분위수만 계산하며, 따라서 정렬 기반 알고리즘을 사용하여 효율적으로 계산을 수행할 수 있습니다.
X
의 두 번째 차원을 따라 균일한 간격의 분위수 세 개를 계산합니다. dim
이 1이 아니기 때문에 quantile
은 기본적으로 정확한 분위수를 반환합니다.
Yexact = quantile(X,N,2)
Yexact = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
tall형 배열을 계산하고 gather
를 사용하여 결과를 메모리로 가져옵니다.
[Yapprox,Yexact] = gather(Yapprox,Yexact);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 2.6 sec Evaluation completed in 3.4 sec
균일한 간격의 누적 확률 세 개에 대해 (첫 번째 차원을 따라) X
의 근사 분위수를 표시합니다.
Yapprox
Yapprox = 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
행렬 Yapprox
의 각 열은 행렬 X
의 각 열에 대한 균일한 간격의 분위수 세 개에 해당합니다. 예를 들어, 요소 (–7, 0, 11)을 갖는 Yapprox
의 첫 번째 열은 X
의 첫 번째 열에 대한 분위수를 포함합니다.
균일한 간격의 누적 확률 세 개에 대해 (두 번째 차원을 따라) 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
의 대응하는 행에 대한 균일한 간격의 분위수 세 개를 포함합니다. 예를 들어, 30.5
, 347.5
, 688.5
는 각각 X
의 첫 번째 행에 대한 0.25, 0.5, 0.75 분위수입니다.
X
— 입력 데이터입력 데이터로, 벡터 또는 배열로 지정됩니다.
데이터형: double
| single
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
— 차원 행렬 X
의 분위수를 계산하려는 차원으로, 양의 정수로 지정됩니다. 예를 들어, 행렬 X
에 대해 dim
= 1이면 quantile
은 X
의 열에 대한 분위수를 반환하고 dim
= 2이면 quantile
은 X
의 행에 대한 분위수를 반환합니다. X
가 다차원 배열이면 Y
의 dim
번째 차원의 길이는 p
의 길이와 같습니다.
데이터형: single
| double
vecdim
— 차원의 벡터차원의 벡터로, 양의 정수 벡터로 지정됩니다. vecdim
의 각 요소는 입력 배열 X
의 차원을 나타냅니다. 지정된 연산 차원 중 가장 작은 차원(즉, 차원 min(vecdim)
)에서 출력값 Y
는 요청한 분위수의 개수(N
또는 length(p)
)와 길이가 같습니다. 나머지 연산 차원 각각에서는 Y
의 길이가 1입니다. 다른 차원 길이는 X
및 Y
에서 같습니다.
예를 들어, p = [0.2
0.4 0.6 0.8]
인 2×3×3 배열 X
가 있다고 가정하겠습니다. 이 경우, quantile(X,p,[1 2])
는 각 페이지가 X
의 대응하는 페이지의 요소에 대한 0.2, 0.4, 0.6, 0.8 분위수를 포함하는 배열을 반환합니다. 차원 1과 차원 2가 연산 차원이므로 min([1 2]) = 1
및 length(p) = 4
를 사용하는 경우 출력값은 4×1×3 배열입니다.
데이터형: single
| double
Y
— 분위수데이터 벡터 또는 배열의 분위수로, 하나 또는 여러 개의 누적 확률 값에 대한 스칼라 또는 배열로 반환됩니다.
X
가 벡터이면 Y
는 스칼라이거나 요청한 분위수의 개수(N
또는 length(p)
)와 길이가 같은 벡터입니다. Y(i)
는 p(i)
의 분위수를 가집니다.
X
가 차원 d로 구성된 배열이면 Y
는 배열이며, 이때 이 배열의 가장 작은 연산 차원은 요청한 분위수의 개수(N
또는 length(p)
)와 길이가 같습니다.
다차원 배열(multidimensional array)은 3차원 이상을 갖는 배열입니다. 예를 들어, X
가 1×3×4 배열이면 X
는 3차원 배열입니다.
배열의 비한원소 차원은 크기가 1이 아닌 차원입니다. 배열의 첫 번째 비한원소 차원은 비한원소 조건을 충족하는 첫 번째 차원입니다. 예를 들어, X
가 1×1×2×4 배열이면 세 번째 차원이 X
의 첫 번째 비한원소 차원입니다.
선형 보간(linear interpolation)은 선형 다항식을 사용하여 벡터 또는 배열 x의 특정 점에서 기본 함수 Y = f(X)의 값인 yi = f(xi)의 값을 구합니다. 데이터 점(x1, y1) 및 (x2, y2)가 주어진 경우(여기서 y1 = f(x1)이고 y2 = f(x2)임), 선형 보간은 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[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,δ) = δ입니다. 다음 Figure는 δ = 10에 대한 스케일링 함수를 보여줍니다.
스케일링 함수는 분위수 q의 가변 크기 스텝을 제공하기 위해 q를 스케일링 인자 k로 변환합니다. 그 결과, 군집 크기가 달라집니다(중심 분위수 근처에서 커지고 q = 0
또는 q =
1
근처에서 작아짐). 군집이 작을수록 데이터 경계 근처에서 정확도가 더 높아집니다.
t-digest를 가중치와 위치를 갖는 새 관측값으로 업데이트하기 위해 새 관측값에 가장 가까운 군집을 찾습니다. 가중치를 더한 후, 군집의 업데이트된 가중치가 크기 제한을 초과하지 않는 경우 가중 평균에 따라 군집의 중심을 업데이트합니다.
t-digest의 합집합을 구하고 중심을 병합하여 데이터의 각 분할의 독립적인 t-digest들을 결합할 수 있습니다. t-digest를 결합하려면 먼저 모든 독립적인 t-digest에서 군집 가중치를 기준으로 내림차순으로 군집을 정렬해야 합니다. 그런 다음, 인접한 군집이 크기 제한을 충족하는 경우 이들 군집을 병합하여 새 t-digest를 생성합니다.
전체 데이터 세트를 나타내는 t-digest를 생성한 후에는 t-digest에서 각 군집의 끝점(또는 경계)을 추정한 후 각 군집의 끝점 간의 보간을 사용하여 정확한 분위수 추정값을 구할 수 있습니다.
요소를 n개 가진 벡터 X
에 대해 quantile
은 다음과 같이 정렬 기반 알고리즘을 사용하여 분위수를 계산합니다.
X
의 정렬된 요소는 (0.5/n), (1.5/n), ..., ([n – 0.5]/n) 분위수로 간주됩니다. 예를 들면 다음과 같습니다.
{6, 3, 2, 10, 1}과 같은 다섯 개 요소로 구성된 데이터 벡터에 대해 정렬된 요소 {1, 2, 3, 6, 10}은 각각 0.1, 0.3, 0.5, 0.7, 0.9 분위수에 대응됩니다.
{6, 3, 2, 10, 8, 1}과 같은 여섯 개 요소로 구성된 데이터 벡터에 대해 정렬된 요소 {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
은 범위를 벗어나는 확률에 대응되는 분위수로 X
에 포함된 요소의 최솟값 또는 최댓값을 할당합니다.
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.
사용법 관련 참고 및 제한 사항:
Y = quantile(X,p)
및 Y = quantile(X,N)
은 X
가 tall형 열 벡터인 경우에만 정확한 분위수(정렬 기반 알고리즘 사용)를 반환합니다.
Y = quantile(__,dim)
은 다음 조건 중 하나에 해당하는 경우에만 정확한 분위수를 반환합니다.
X
가 tall형 열 벡터임.
X
가 tall형 배열이고 dim
이 1
이 아님. 예를 들어 quantile(X,p,2)
는 tall형 배열 X
의 행을 따라 정확한 분위수를 반환합니다.
X
가 tall형 배열이고 dim
이 1
이면 'Method','approximate'
를 지정하여 백분위수 계산에 T-Digest를 기반으로 하는 근사 알고리즘을 사용해야 합니다. 예를 들어 quantile(X,p,1,'Method','approximate')
는 tall형 배열 X
의 열을 따라 근사 분위수를 반환합니다.
Y = quantile(__,vecdim)
은 다음 조건 중 하나에 해당하는 경우에만 정확한 분위수를 반환합니다.
X
가 tall형 열 벡터임.
X
가 tall형 배열이고 vecdim
이 1
을 포함하지 않음. 예를 들어 X
가 3×5×2 배열이면, quantile(X,p,[2,3])
은 각 X(i,:,:)
슬라이스의 요소에 대한 정확한 분위수를 반환합니다.
X
가 tall형 배열이고 vecdim
이 1
과 X
의 모든 비한원소 차원을 포함함. 예를 들어 X
가 10×1×4 배열이면, quantile(X,p,[1 3])
은 X(:,1,:)
의 요소에 대한 정확한 분위수를 반환합니다.
X
가 tall형 배열이고 vecdim
이 1
은 포함하지만 X
의 모든 비한원소 차원을 포함하지는 않는 경우, 'Method','approximate'
를 지정하여 근사 알고리즘을 사용해야 합니다. 예를 들어 X
가 10×1×4 배열이면, quantile(X,p,[1 2],'Method','approximate')
를 사용하여 X
의 각 페이지에 대한 근사 분위수를 구할 수 있습니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
'all'
및 vecdim
입력 인수는 지원되지 않습니다.
'Method'
이름-값 쌍의 인수는 지원되지 않습니다.
dim
입력 인수는 컴파일타임 상수여야 합니다.
dim
입력 인수를 지정하지 않으면 작업(또는 연산) 차원이 생성된 코드와 다를 수 있습니다. 그 결과 런타임 오류가 발생할 수 있습니다. 자세한 내용은 Automatic dimension restriction (MATLAB Coder) 항목을 참조하십시오.
출력값 Y
가 벡터이면 Y
의 방향은 다음 모두에 해당하는 경우 MATLAB®과 다릅니다.
dim
을 제공하지 않았습니다.
X
는 컴파일 시 가변 크기 벡터가 아니라 가변 크기 배열이지만, 런타임 시 X
는 벡터입니다.
벡터 X
의 방향이 벡터 p
의 방향과 일치하지 않습니다.
이 경우, 출력값 Y
는 p
의 방향이 아니라 X
의 방향과 일치합니다.
코드 생성에 대한 자세한 내용은 Introduction to Code Generation 항목 및 General Code Generation Workflow 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
'all'
및 vecdim
입력 인수는 지원되지 않습니다.
'Method'
이름-값 쌍의 인수는 지원되지 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
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: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.