exponenta event banner

квантиль

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

Описание

пример

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.

пример

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 использует Линейную интерполяцию (Linear Interpolation) для поиска медианы и квартилей.

Найти медиану и квартили вектора, 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 использует Линейную интерполяцию (Linear Interpolation) для поиска медианы и квартилей.

Вычислите точные и приблизительные квантили вектора высокого столбца для данной вероятности.

При выполнении вычислений в массивах TALL MATLAB ® использует либо параллельный пул (по умолчанию при наличии Toolbox™ Parallel Computing), либо локальный сеанс MATLAB. Для выполнения примера с использованием локального сеанса MATLAB при наличии панели инструментов Parallel Computing Toolbox измените глобальную среду выполнения с помощью mapreducer функция.

mapreducer(0)

Создание хранилища данных для airlinesmall набор данных. Удовольствие 'NA' значения как отсутствующие данные, так что datastore заменяет их на NaN значения. Укажите для работы с ArrTime переменная.

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

Создайте в верхней части хранилища данных таблицу высокого уровня и извлеките данные из таблицы высокого уровня в вектор высокого уровня.

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

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

Оцените массивы 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.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 MATLAB ® использует либо параллельный пул (по умолчанию при наличии Toolbox™ Parallel Computing), либо локальный сеанс MATLAB. Для выполнения примера с использованием локального сеанса MATLAB при наличии панели инструментов Parallel Computing Toolbox измените глобальную среду выполнения с помощью mapreducer функция.

mapreducer(0)

Создание высокой матрицы X содержащий подмножество переменных из airlinesmall набор данных. Дополнительные сведения о шагах извлечения данных из массива высокого уровня см. в разделе Квантили вектора высокого уровня для заданной вероятности.

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

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

Оцените массивы tall и внесите результаты в память с помощью 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.

Вычислите точные и приблизительные квантили вдоль различных размеров высокой матрицы для N равномерно разнесенные кумулятивные вероятности.

При выполнении вычислений в массивах TALL MATLAB ® использует либо параллельный пул (по умолчанию при наличии Toolbox™ Parallel Computing), либо локальный сеанс MATLAB. Для выполнения примера с использованием локального сеанса MATLAB при наличии панели инструментов Parallel Computing Toolbox измените глобальную среду выполнения с помощью mapreducer функция.

mapreducer(0)

Создание высокой матрицы X содержащий подмножество переменных из airlinesmall набор данных. Дополнительные сведения о шагах извлечения данных из массива высокого уровня см. в разделе Квантили вектора высокого уровня для заданной вероятности.

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

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

Оцените массивы tall и внесите результаты в память с помощью 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, длина dim-й размер 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 является 3-D массивом.

Измерение Nonsingleton

Несинглтон-размер массива - это размер, размер которого не равен 1. Первое несинглетонное измерение массива - это первое измерение, удовлетворяющее условию несинглтона. Например, если X множество 1 на 1 на 2 на 4, тогда третье измерение - первое измерение неединичного предмета X.

Линейная интерполяция

Линейная интерполяция использует линейные многочлены для нахождения yi = f(xi), значения базовой функции Y = f (X) в точках вектора или массива x. Учитывая точки данных (x1, y1) и (x2, y2), где y1 = f (x1) и y2 = f(x2), линейная интерполяция находит y = f (x) для данного x между x1 и x2 следующим образом:

y = f (x) = y1 + (x x1) (x2 x1) (y2 − y1).

Аналогично, если квантиль 1,5/n равен y1,5/n и квантиль 2,5/n равен y2,5/n, то линейная интерполяция находит квантиль 2,3/n y2,3/n как

y2.3n=y1.5n + (2.3n−1.5n) (2.5n−1.5n) (y2.5n−y1.5n).

T-Дайджест

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

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

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

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

k (q, δ) =δ⋅ (sin 1 (2q 1) δ + 12),

где отображение k монотонно с минимальным значением k (0, δ) = 0 и максимальным значением k (1, δ) = δ. На следующем рисунке показана функция масштабирования для δ = 10.

Функция масштабирования преобразует квантиль q в коэффициент масштабирования k, чтобы дать шаги переменного размера в q. В результате размеры кластера неравны (больше вокруг центральных квантилей и меньше вблизи q = 0 или q = 1). Меньшие кластеры обеспечивают лучшую точность вблизи краев данных.

Чтобы обновить t-дайджест с новым наблюдением, которое имеет вес и местоположение, найдите кластер, ближайший к новому наблюдению. Затем добавьте вес и обновите центроид кластера на основе средневзвешенного значения при условии, что обновленный вес кластера не превышает ограничения по размеру.

Можно объединить независимые t-дайджесты из каждого раздела данных, взяв объединение t-дайджестов и объединив их центроиды. Чтобы объединить t-дайджесты, сначала отсортируйте кластеры из всех независимых t-дайджестов в порядке убывания масс кластеров. Затем объедините соседние кластеры, когда они удовлетворяют ограничению размера, чтобы сформировать новый t-дайджест.

После формирования t-дайджеста, представляющего полный набор данных, можно оценить конечные точки (или границы) каждого кластера в t-дайджесте, а затем использовать интерполяцию между конечными точками каждого кластера, чтобы найти точные оценки квантилей.

Алгоритмы

Для вектора n-элемента 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] Лэнгфорд, Э. «Квартили в начальной статистике», Журнал статистики образования. т. 14, № 3, 2006.

[2] Напоминание, Т. и О. Эртль. «Вычисление чрезвычайно точных квантилей с помощью T-Digests». Август 2017 года.

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

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