quantile

Квантили набора данных

Описание

пример

Y = quantile(X,p) возвращает квантования элементов в векторе данных или массиве X для совокупной вероятности или вероятностей p в интервале [0,1].

пример

Y = quantile(X,N) возвращает квантили для N равномерно разнесенные совокупные вероятности (1/( N + 1), 2 / (N + 1)..., N/ (N + 1)) для целого числа N>1.

пример

Y = quantile(___,'all') возвращает количества всех элементов X для любого из первых двух синтаксисов.

пример

Y = quantile(___,dim) возвращает квантования по рабочей размерности dim для любого из первых двух синтаксисов.

пример

Y = quantile(___,vecdim) возвращает квантования по размерностям, заданным в векторе vecdim для любого из первых двух синтаксисов. Для примера, если X является матрицей, тогда quantile(X,0.5,[1 2]) возвращает 0,5 квантиля всех элементов X потому что каждый элемент массива матрицы содержится в срезе массива, заданном размерностями 1 и 2.

пример

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

Вычислите четыре равномерно расположенные величины.

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).

Вычислим 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).

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.

Входные параметры

свернуть все

Входные данные, заданные как вектор или массив.

Типы данных: double | single

Кумулятивные вероятности, для которых можно вычислить квантования, заданные как скаляр или вектор скаляров от 0 до 1.

Пример: 0.3

Пример: [0,25, 0,5, 0,75]

Пример: (0: 0,25: 1)

Типы данных: double | single

Количество квантилей для вычисления, заданное как положительное целое число. quantile возвращает N квантования, которые делят набор данных на равномерно распределенные N+ 1 сегмент.

Типы данных: double | single

Размерность, по которой X квантования матрицы запрашиваются в виде положительного целого числа. Для примера, для матрицы X, когда dim = 1, quantile возвращает количество столбцов X; когда dim = 2, quantile возвращает количество строк в X. Для многомерного массива X, длина dimI размерность Y совпадает с длиной p.

Типы данных: single | double

Вектор размерностей, заданный как положительный целочисленный вектор. Каждый элемент 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

Метод вычисления квантилей, заданный как 'exact' или 'approximate'. По умолчанию, quantile возвращает точные величины путем реализации алгоритма, который использует сортировку. Можно задать 'method','approximate' для quantile чтобы вернуть приблизительные квантования путем реализации алгоритма, который использует T-Digest.

Типы данных: char | string

Выходные аргументы

свернуть все

Квантования вектора данных или массива, возвращенные в виде скаляра или массива для одного или нескольких значений совокупных вероятностей.

  • Если 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 следующим образом:

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

Точно так же, если квантиль 1,5/ n находится y 1,5/ n, а квантиль 2,5/ n - y 2,5/ n, то линейная интерполяция находит квантиль 2.3/ n y 2.3/ n как

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

T-Digest

T-digest [2] является вероятностной структурой данных, которая является разреженным представлением эмпирической кумулятивной функции распределения (CDF) набора данных. T-дайджест полезен для вычисления приближений основанной на рангах статистики (таких как процентили и квантили) из онлайновых или распределенных данных таким образом, чтобы это позволяло контролировать точность, особенно вблизи хвостов распределения данных.

Для данных, которые распределены в различных разделах, t-digest вычисляет оценки квантиля (и оценки процентиля) для каждого раздела данных отдельно, а затем объединяет оценки с сохранением постоянной памяти и постоянной относительной точности расчета (q(1q) для q-го квантиля). По этим причинам t-digest практичен для работы с длинными массивами.

Чтобы оценить квантования массива, который распределен в различных разделах, сначала создайте t-дайджест в каждом разделе данных. t-digest группирует данные в разделе и суммирует каждый кластер по центроидному значению и накопленному весу, которое представляет количество выборок, вносящих вклад в кластер. T-digest использует большие кластеры (широко разнесенные центроиды), чтобы представлять области CDF, которые близки q = 0.5 и использует небольшие кластеры (плотно расположенные центроиды), чтобы представлять области CDF, которые близки q = 0 или q = 1.

T-digest управляет размером кластера с помощью функции масштабирования, которая сопоставляет q квантования с индексом, k с параметром сжатия δ. То есть,

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

где 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 вычисляет квантования с помощью основанного на сортировке алгоритма следующим образом:

  1. Отсортированные элементы в 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).

  2. quantile Использует Линейную Интерполяцию, чтобы вычислить квантования для вероятностей между (0 .5/ n) и ([n - 0,5 ]/ n).

  3. Для квантилей, соответствующих вероятностям за пределами этой области значений, quantile присваивает минимальные или максимальные значения элементов в X.

quantile лечит NaNs как отсутствующие значения и удаляет их.

Ссылки

[1] Langford, E. «Quartiles in Elementary Statistics», Journal of Statistics Education. Том 14, № 3, 2006.

Расширенные возможности

.
Представлено до R2006a