Квантили набора данных
возвращает квантования элементов в векторе данных или массиве Y
= quantile(X
,p
)X
для совокупной вероятности или вероятностей p
в интервале [0,1].
Если X
является вектором, тогда Y
- скаляр или вектор, имеющий ту же длину, что и p
.
Если X
является матрицей, тогда Y
- вектор-строка или матрица, где количество строк Y
равно длине p
.
Для многомерных массивов, quantile
действует по первой нежесткой размерности X
.
возвращает квантили для Y
= quantile(X
,N
)N
равномерно разнесенные совокупные вероятности (1/( N
+ 1), 2 / (N
+ 1)..., N
/ (N
+ 1)) для целого числа N
>1.
Если X
является вектором, тогда Y
является скаляром или вектором с длиной N
.
Если X
является матрицей, тогда Y
- матрица, в которой количество строк Y
равно N
.
Для многомерных массивов, quantile
действует по первой нежесткой размерности X
.
возвращает квантования по размерностям, заданным в векторе Y
= quantile(___,vecdim
)vecdim
для любого из первых двух синтаксисов. Для примера, если X
является матрицей, тогда quantile(X,0.5,[1 2])
возвращает 0,5 квантиля всех элементов X
потому что каждый элемент массива матрицы содержится в срезе массива, заданном размерностями 1 и 2.
Вычислим квантования набора данных для заданных вероятностей.
Сгенерируйте набор данных размера 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
Вычислите четыре равномерно расположенные величины.
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 на 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
Вычислите количество 0,3 для каждого столбца X
(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,3 квантиля первого столбца X
с элементами (0,5377, 1,8339, -2,2588, 0,8622). Потому что значение по умолчанию dim
равен 1, вы можете вернуть тот же результат с y = quantile(X,0.3)
.
Вычислите количество 0,3 для каждой строки X
(dim
= 2).
y = quantile(X,0.3,2)
y = 4×1
0.3844
-0.8642
-1.0750
0.4985
quantile
возвращает вектор-столбец y
при вычислении по одному квантилю для каждой строки матрицы. Для примера 0.3844
- 0,3 квантиля первой строки X
с элементами (0,5377, 0,3188, 3,5784, 0,7254, -0.1241, 0,6715).
Вычислим равномерно разнесенные квантования вдоль столбцов и строк матрицы данных.
Сгенерируйте матрицу данных 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).
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
. Для примера - первый столбец y
с элементами (2, 8, 10) имеет квантили для первого столбца X
с элементами (9, 10, 2, 10, 7, 1). y = quantile(X,3)
возвращает тот же ответ, поскольку значение по умолчанию dim
равен 1.
Вычислите три равномерно разнесенных квантования для каждой строки X
(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
. Для примера - первая строка y
с элементами (7, 8, 8.75) имеет квантили для первой строки X
с элементами (9, 3, 10, 8, 7, 8, 7).
Вычислим квантования многомерного массива для заданных вероятностей при помощи '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];
Вычислите 0,25 и 0,75 квантилей всех элементов в X
.
Yall = quantile(X,p,'all')
Yall = 2×1
8
23
Yall(1)
- 0,25 квантиля X
, и Yall(2)
- 0,75 квантиля X
.
Вычислите 0.25 и 0.75 квантилей для каждой страницы X
путем определения размерностей 1 и 2 в качестве рабочих размерностей.
Ypage = quantile(X,p,[1 2])
Ypage = Ypage(:,:,1) = 4.2500 11.7500 Ypage(:,:,2) = 19.2500 26.7500
Для примера, Ypage(1,1,1)
- количество 0,25 на первой странице X
, и Ypage(2,1,1)
- квантиль 0,75 на первой странице X
.
Вычислите 0,25 и 0,75 квантилей элементов в каждой X(i,:,:)
срез путем определения размерностей 2 и 3 в качестве рабочих размерностей.
Yrow = quantile(X,p,[2 3])
Yrow = 3×2
7 22
8 23
9 24
Для примера, Yrow(3,1)
- 0,25 квантиля элементов в X(3,:,:)
, и Yrow(3,2)
является 0,75 квантилем элементов в X(3,:,:)
.
Найдите медиану и квартили вектора, 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
использует Линейную Интерполяцию, чтобы найти медиану и квартиль.
Вычислите точные и приблизительные величины высокого вектора-столбца для заданной вероятности.
При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Чтобы запустить пример с использованием локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, измените глобальное окружение выполнения с помощью mapreducer
функция.
mapreducer(0)
Создайте datastore для airlinesmall
набор данных. Лечите 'NA'
значения как отсутствующие данные, так что datastore
заменяет их на NaN
значения. Задайте, чтобы работать с ArrTime
переменная.
ds = datastore('airlinesmall.csv','TreatAsMissing','NA',... 'SelectedVariableNames','ArrTime');
Создайте длинную таблицу о верхнюю часть datastore и извлечите данные из длинной таблицы в 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 : :
Вычислим точное количество x для p
= 0.5. Потому что X
является высоким вектором-столбцом и p
является скаляром, quantile
возвращает точное значение величины по умолчанию.
p = 0.5; % Cumulative probability
yExact = quantile(x,p)
yExact = tall double ?
Вычислите приблизительный квантиль x для p
= 0.5. Задайте 'Method','approximate'
использовать алгоритм приближения, основанный на T-Digest, для вычисления квантилей.
yApprox = quantile(x,p,'Method','approximate')
yApprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
Оцените длинные массивы и внесите результаты в память при помощи 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.57 sec - Pass 3 of 4: Completed in 0.83 sec - Pass 4 of 4: Completed in 0.62 sec Evaluation completed in 4.4 sec
yExact = 1522
yApprox = 1.5220e+03
Значения приблизительной величины и точной величины совпадают с четырьмя показанными цифрами.
Вычислите точные и приблизительные квантования tall matrix для заданных совокупных вероятностей по разным размерностям.
При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Чтобы запустить пример с использованием локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, измените глобальное окружение выполнения с помощью mapreducer
функция.
mapreducer(0)
Создайте tall matrix X
содержащий подмножество переменных из airlinesmall
набор данных. Для получения дополнительной информации о шагах по извлечению данных из длинный массив см. Quantles of Tall Vector for Distributed Probability.
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.
Вычислим точные величины X
вдоль второго измерения для совокупных вероятностей 0,25, 0,5 и 0,75.
p = [0.25 0.50 0.75]; % Vector of cumulative probabilities
Yexact = quantile(X,p,2)
Yexact = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
Когда функция действует по первой размерности и p
является вектором совокупных вероятностей, вы должны использовать алгоритм приближения, основанный на t-дайджесте, чтобы вычислить квантили. Использование основанного на сортировке алгоритма для поиска квантилей по первой размерности длинный массив является вычислительно интенсивным.
Вычислите приблизительные величины X
вдоль первой размерности для совокупных вероятностей 0,25, 0,5 и 0,75. Поскольку размерность по умолчанию является 1, вам не нужно задавать значение для dim
.
Yapprox = quantile(X,p,'Method','approximate')
Yapprox = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
Оцените длинные массивы и внесите результаты в память при помощи gather
.
[Yexact,Yapprox] = gather(Yexact,Yapprox);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 3 sec Evaluation completed in 3.9 sec
Показать первые пять строк точных квантилей X
(по второму измерению) для совокупных вероятностей 0,25, 0,5 и 0,75.
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
являются 0,25, 0,5 и 0,75 квантилями, соответственно, первой строки в X
.
Покажите приблизительные величины X
(вдоль первой размерности) для совокупных вероятностей 0,25, 0,5 и 0,75.
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
. Для примера - первый столбец Yapprox
с элементами (-7, 0, 11) содержит квантили для первого столбца X
.
Вычислите точные и приблизительные величины по разным размерностям tall matrix для N
равномерно разнесенные совокупные вероятности.
При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Чтобы запустить пример с использованием локального сеанса работы с MATLAB, когда у вас есть Parallel Computing Toolbox, измените глобальное окружение выполнения с помощью mapreducer
функция.
mapreducer(0)
Создайте tall matrix X
содержащий подмножество переменных из airlinesmall
набор данных. Для получения дополнительной информации о шагах по извлечению данных из длинный массив см. Quantles of Tall Vector for Distributed Probability.
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. Использование основанного на сортировке алгоритма (см. Алгоритмы), чтобы найти квантования по первой размерности длинный массив, является вычислительно интенсивным.
Вычислите три равномерно расположенные величины по первой размерности 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 ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
Оцените длинные массивы и внесите результаты в память при помощи gather
.
[Yapprox,Yexact] = gather(Yapprox,Yexact);
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 3 sec Evaluation completed in 3.8 sec
Покажите приблизительные величины 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
. Для примера - первый столбец Yapprox
с элементами (-7, 0, 11) содержит квантили для первого столбца X
.
Показать первые пять строк точных квантилей X
(вдоль второго измерения) для трех равномерно разнесенных совокупных вероятностей.
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
являются 0,25, 0,5 и 0,75 квантилями, соответственно, первой строки в X
.
X
- Входные данныеВходные данные, заданные как вектор или массив.
Типы данных: double
| single
p
- Совокупные вероятностиКумулятивные вероятности, для которых можно вычислить квантования, заданные как скаляр или вектор скаляров от 0 до 1.
Пример: 0.3
Пример: [0,25, 0,5, 0,75]
Пример: (0: 0,25: 1)
Типы данных: double
| single
N
- Количество квантилейКоличество квантилей для вычисления, заданное как положительное целое число. quantile
возвращает N
квантования, которые делят набор данных на равномерно распределенные N
+ 1 сегмент.
Типы данных: double
| single
dim
- Размерность Размерность, по которой X
квантования матрицы запрашиваются в виде положительного целого числа. Для примера, для матрицы
X
, когда dim
= 1, quantile
возвращает количество столбцов X
; когда dim
= 2, quantile
возвращает количество строк в X
. Для многомерного массива X
, длина dim
I размерность Y
совпадает с длиной p
.
Типы данных: single
| double
vecdim
- Вектор размерностейВектор размерностей, заданный как положительный целочисленный вектор. Каждый элемент vecdim
представляет размерности массива входа X
. В наименьшей заданной рабочей размерности (то есть размерности min(vecdim)
), а выход Y
имеет длину, равную количеству запрашиваемых квантилей (либо N
или length(p)
). В каждой из остальных рабочих размерностей Y
имеет длину 1. Другие длины размерности одинаковы для X
и Y
.
Например, рассмотрите массив 2 на 3 на 3 X
с p = [0.2 0.4 0.6 0.8]
. В этом случае quantile(X,p,[1 2])
возвращает массив, где каждая страница массива содержит 0,2, 0,4, 0,6 и 0,8 квантилей элементов на соответствующей странице X
. Потому что 1 и 2 являются рабочими размерностями с min([1 2]) = 1
и length(p) = 4
, выводится массив 4 на 1 на 3.
Типы данных: single
| double
method
- Метод вычисления количеств'exact'
(по умолчанию) | 'approximate'
Метод вычисления квантилей, заданный как 'exact'
или 'approximate'
. По умолчанию, quantile
возвращает точные величины путем реализации алгоритма, который использует сортировку. Можно задать 'method','approximate'
для quantile
чтобы вернуть приблизительные квантования путем реализации алгоритма, который использует T-Digest.
Типы данных: char
| string
Y
- КвантилиКвантования вектора данных или массива, возвращенные в виде скаляра или массива для одного или нескольких значений совокупных вероятностей.
Если X
является вектором, тогда Y
является скаляром или вектором с той же длиной, что и количество запрашиваемых квантилей (N
или length(p)
). Y(i)
содержит p(i)
квантиль.
Если X
- массив размерности d, затем Y
- массив с длиной наименьшей рабочей размерности, равной количеству запрашиваемых квантилей (N
или length(p)
).
Многомерный массив является массивом с более чем двумя размерностями. Для примера, если X
массив 1 на 3 на 4, затем X
является трехмерный массив.
Размерность несинглтона массива является размерностью, не равной 1. Первая размерность несинглтона массива является первой размерностью, который удовлетворяет условию несинглтона. Для примера, если X
массив 1 на 1 на 2 на 4, тогда третья размерность - первая размерность неединичного предмета X
.
Линейная интерполяция использует линейные полиномы, чтобы найти yi = f (xi), значения базовой функции Y = f (X) в точках в x вектора или массива. Учитывая точки данных (x 1, y 1) и (x 2, y 2), где y 1 = f (x 1) и y 2 = f (x 2), линейная интерполяция находит y = f (x) для заданного x между x 1 и x 2 следующим образом:
Точно так же, если квантиль 1,5/ n находится y 1,5/ n, а квантиль 2,5/ n - y 2,5/ n, то линейная интерполяция находит квантиль 2.3/ n y 2.3/ n как
T-digest [2] является вероятностной структурой данных, которая является разреженным представлением эмпирической кумулятивной функции распределения (CDF) набора данных. T-дайджест полезен для вычисления приближений основанной на рангах статистики (таких как процентили и квантили) из онлайновых или распределенных данных таким образом, чтобы это позволяло контролировать точность, особенно вблизи хвостов распределения данных.
Для данных, которые распределены в различных разделах, t-digest вычисляет оценки квантиля (и оценки процентиля) для каждого раздела данных отдельно, а затем объединяет оценки с сохранением постоянной памяти и постоянной относительной точности расчета ( для q-го квантиля). По этим причинам t-digest практичен для работы с длинными массивами.
Чтобы оценить квантования массива, который распределен в различных разделах, сначала создайте t-дайджест в каждом разделе данных. t-digest группирует данные в разделе и суммирует каждый кластер по центроидному значению и накопленному весу, которое представляет количество выборок, вносящих вклад в кластер. T-digest использует большие кластеры (широко разнесенные центроиды), чтобы представлять области CDF, которые близки q = 0.5
и использует небольшие кластеры (плотно расположенные центроиды), чтобы представлять области CDF, которые близки q = 0
или q = 1
.
T-digest управляет размером кластера с помощью функции масштабирования, которая сопоставляет q квантования с индексом, k с параметром сжатия . То есть,
где k отображения монотонна с минимальным значением k (0, δ) = 0 и максимальным значением k (1, δ) = δ. Следующий рисунок показывает функцию масштабирования для δ = 10.
Функция масштабирования переводит q квантования в коэффициент масштабирования k в порядок, чтобы задать шаги переменного размера в q. В результате размеры кластера неравны (больше вокруг центральных величин и меньше вблизи q = 0
или q = 1
). Меньшие кластеры обеспечивают лучшую точность вблизи ребер данных.
Чтобы обновить t-дайджест с новым наблюдением, которое имеет вес и расположение, найдите кластер, ближайший к новому наблюдению. Затем прибавьте вес и обновите центроид кластера на основе средневзвешенного среднего значения условии, что обновленный вес кластера не превышает ограничения по размеру.
Можно объединить независимые t-дайджесты из каждого раздела данных, взяв объединение t-дайджестов и объединив их центроиды. Чтобы объединить t-дайджесты, сначала отсортируйте кластеры из всех независимых t-дайджестов в порядке уменьшения весов кластеров. Затем объедините соседние кластеры, когда они удовлетворяют ограничению размера, чтобы сформировать новый t-дайджест.
Если вы формируете t-digest, который представляет полный набор данных, можно оценить конечные точки (или контуры) каждого кластера в t-digest, а затем использовать интерполяцию между конечными точками каждого кластера, чтобы найти точные оценки квантиля.
Для вектора n -element 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
s как отсутствующие значения и удаляет их.
[1] Langford, E. «Quartiles in Elementary Statistics», Journal of Statistics Education. Том 14, № 3, 2006.
[2] Dunning, T., and O. Ertl. Вычисление чрезвычайно точных квантований с использованием T-Digests. Август 2017 года.
Указания и ограничения по применению:
Y = quantile(X,p)
и Y = quantile(X,N)
возвращает точные квантили (используя основанный на сортировке алгоритм) только в том случае, если X
- высокий вектор-столбец.
Y = quantile(__,dim)
возвращает точные величины только тогда, когда существует одно из следующих условий:
X
- высокий вектор-столбец.
X
является длинный массив и dim
не 1
. Для примера, quantile(X,p,2)
возвращает точные величины вдоль строк длинный массив X
.
Если X
является длинный массив и dim
является 1
, затем необходимо указать 'Method','approximate'
использовать алгоритм приближения, основанный на T-Digest, для вычисления квантилей. Для примера, quantile(X,p,1,'Method','approximate')
возвращает приблизительные величины вдоль столбцов длинный массив X
.
Y = quantile(__,vecdim)
возвращает точные величины только тогда, когда существует одно из следующих условий:
X
- высокий вектор-столбец.
X
является длинный массив и vecdim
не включает 1
. Для примера, если X
массив 3 на 5 на 2, затем quantile(X,p,[2,3])
возвращает точные величины элементов в каждом X(i,:,:)
срез.
X
является длинный массив и vecdim
включает 1
и все нежесткие размерности X
. Для примера, если X
- массив 10 на 1 на 4, затем quantile(X,p,[1 3])
возвращает точные величины элементов в X(:,1,:)
.
Если X
является длинный массив и vecdim
включает 1
но не включает все нежесткие размерности X
, затем необходимо указать 'Method','approximate'
для использования алгоритма приближения. Для примера, если X
это массив 10 на 1 на 4, который можно использовать quantile(X,p,[1 2],'Method','approximate')
для нахождения приблизительных квантилей каждой страницы X
.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Указания и ограничения по применению:
The 'all'
и vecdim
входные параметры не поддерживаются.
The 'Method'
аргумент пары "имя-значение" не поддерживается.
The dim
входной параметр должен быть константой времени компиляции.
Если вы не задаете dim
входной параметр, рабочий (или рабочий) размерность может быть различным в сгенерированном коде. В результате могут возникнуть ошибок времени выполнения. Для получения дополнительной информации смотрите Автоматическое ограничение размерности (MATLAB Coder).
Если выход Y
- вектор, ориентация Y
отличается от MATLAB® когда все из следующих значений true:
Вы не поставляете dim
.
X
является массивом переменного размера, а не вектором переменного размера, во время компиляции, но X
является вектором во время исполнения.
Ориентация вектора X
не соответствует ориентации вектора p
.
В этом случае выход Y
соответствует ориентации X
, а не ориентация p
.
Для получения дополнительной информации о генерации кода смотрите Введение в генерацию кода и Рабочий процесс генерации общего кода.
Указания и ограничения по применению:
The 'all'
и vecdim
входные параметры не поддерживаются.
The 'Method'
аргумент пары "имя-значение" не поддерживается.
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.