Процентили набора данных
возвращает процентили элементов в векторе данных или массиве Y = prctile(X,p)X для процентов p в интервале [0,100].
Если X является вектором, то Y - скаляр или вектор с той же длиной, что и запрашиваемое число процентилей (length(p)). Y(i) содержит p(i) процентиль.
Если X является матрицей, то Y - вектор строки или матрица, где число строк Y равно количеству запрошенных процентилей (length(p)). iтретий ряд Y содержит p(i) процентили каждого столбца X.
Для многомерных массивов: prctile работает по первому несинглтонному размеру X.
Создайте набор данных размера 10.
rng('default'); % for reproducibility x = normrnd(5,2,1,10)
x = 1×10
6.0753 8.6678 0.4823 6.7243 5.6375 2.3846 4.1328 5.6852 12.1568 10.5389
Рассчитайте 42-й процентиль.
Y = prctile(x,42)
Y = 5.6709
Найдите процентили всех значений в массиве.
Создание массива 3 на 5 на 2 X.
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
Найти 40-й и 60-й процентили элементов X.
Y = prctile(X,[40 60],'all')Y = 2×1
12.5000
18.5000
Y(1) является 40-м процентилем X, и Y(2) является 60-м процентилем X.
Вычислите процентили вдоль столбцов и строк матрицы данных для указанных процентов.
Создайте матрицу данных 5 на 5.
X = (1:5)'*(2:6)
X = 5×5
2 3 4 5 6
4 6 8 10 12
6 9 12 15 18
8 12 16 20 24
10 15 20 25 30
Рассчитайте 25-й, 50-й и 75-й процентили вдоль столбцов X.
Y = prctile(X,[25 50 75],1)
Y = 3×5
3.5000 5.2500 7.0000 8.7500 10.5000
6.0000 9.0000 12.0000 15.0000 18.0000
8.5000 12.7500 17.0000 21.2500 25.5000
Строки Y соответствуют процентилям столбцов X. Например, 25-й, 50-й и 75-й процентили третьего столбца X с элементами (4, 8, 12, 16, 20) соответственно 7, 12 и 17. Y = prctile(X,[25 50 75]) возвращает ту же матрицу процентиля.
Рассчитайте 25-й, 50-й и 75-й процентили вдоль строк X.
Y = prctile(X,[25 50 75],2)
Y = 5×3
2.7500 4.0000 5.2500
5.5000 8.0000 10.5000
8.2500 12.0000 15.7500
11.0000 16.0000 21.0000
13.7500 20.0000 26.2500
Строки Y соответствуют процентилям строк X. Например, 25-й, 50-й и 75-й процентили первого ряда X с элементами (2, 3, 4, 5, 6) соответственно 2,75, 4 и 5,25.
Поиск процентилей многомерного массива по нескольким измерениям одновременно.
Создание массива 3 на 5 на 2 X.
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
Рассчитайте 40-й и 60-й процентили для каждой страницы X путем задания размеров 1 и 2 в качестве рабочих размеров.
Ypage = prctile(X,[40 60],[1 2])
Ypage =
Ypage(:,:,1) =
6.5000
9.5000
Ypage(:,:,2) =
21.5000
24.5000
Например, Ypage(1,1,1) является 40-м процентилем первой страницы X, и Ypage(2,1,1) 60-й процентиль первой страницы X.
Вычислите 40-й и 60-й процентили элементов в каждом X(:,i,:) путем задания размеров 1 и 3 в качестве рабочих размеров.
Ycol = prctile(X,[40 60],[1 3])
Ycol = 2×5
2.9000 5.9000 8.9000 11.9000 14.9000
16.1000 19.1000 22.1000 25.1000 28.1000
Например, Ycol(1,4) - 40-й процентиль элементов в X(:,4,:), и Ycol(2,4) - 60-й процентиль элементов в X(:,4,:).
Вычислите точные и приблизительные процентили вектора высокого столбца для заданного процента.
При выполнении вычислений в массивах 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 tablet =
Mx1 tall table
ArrTime
_______
735
1124
2218
1431
746
1547
1052
1134
:
:
x = t{:,:} % Tall vectorx =
Mx1 tall double column vector
735
1124
2218
1431
746
1547
1052
1134
:
:
Вычислите точный 50-й процентиль x. Поскольку x является вектором высокого столбца и p является скаляром, prctile возвращает точное значение процентиля по умолчанию.
p = 50; yExact = prctile(x,p)
yExact =
tall double
?
Вычислите приблизительно 50-й процентиль x. Укажите 'Method','approximate' использовать алгоритм аппроксимации на основе T-Digest для вычисления процентиля.
yApprox = prctile(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 sec - Pass 2 of 4: Completed in 0.47 sec - Pass 3 of 4: Completed in 0.67 sec - Pass 4 of 4: Completed in 0.55 sec Evaluation completed in 3.9 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 matrixX =
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, prctile функция вычисляет только точные процентили, так что она может эффективно выполнять вычисления, используя алгоритм на основе сортировки (см. Алгоритмы) вместо алгоритма аппроксимации, основанного на T-Digest.
Вычислите точные 25-й, 50-й и 75-й процентили X вдоль второго размера.
p = [25 50 75]; % Vector of percentages
Yexact = prctile(X,p,2)Yexact =
MxNx... tall double array
? ? ? ...
? ? ? ...
? ? ? ...
: : :
: : :
Когда функция работает вдоль первого измерения и p является вектором процентов, для вычисления процентилей необходимо использовать алгоритм аппроксимации на основе t-дайджеста. Использование алгоритма, основанного на сортировке, для нахождения процентилей вдоль первого измерения высокого массива является вычислительно интенсивным.
Вычислите приблизительно 25-й, 50-й и 75-й процентили X вдоль первого размера. Поскольку размер по умолчанию равен 1, нет необходимости указывать значение для dim.
Yapprox = prctile(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.5 sec Evaluation completed in 4.2 sec
Показать первые пять строк точных 25-го, 50-го и 75-го процентилей вдоль второго измерения 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 25-й, 50-й и 75-й процентили соответственно первой строки в X.
Показать приблизительные 25-й, 50-й и 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. Например, первый столбец Yapprox с элементами (-7, 0, 11) содержит процентили для первого столбца X.
X - Входные данныеВходные данные, указанные как вектор или массив.
Типы данных: double | single
p - ПроцентыПроценты, для которых вычисляются процентили, указанные как скаляр или вектор скаляров от 0 до 100.
Пример: 25
Пример: [25, 50, 75]
Типы данных: double | single
dim - РазмерностьИзмерение, вдоль которого процентили X затребованы, указаны как положительное целое число. Например, для матрицы X, когда dim = 1, prctile возвращает процентиль (ы) столбцов X; когда dim = 2, prctile возвращает процентиль (ы) строк X. Для многомерного массива X, длина dim-й размер Y равна длине p.
Типы данных: double | single
vecdim - Вектор размеровВектор размеров, заданный как положительный целочисленный вектор. Каждый элемент vecdim представляет измерение входного массива X. Продукция Y имеет длину length(p) в наименьшем указанном рабочем измерении (то есть измерении) min(vecdim)) и имеет длину 1 в каждом из оставшихся рабочих размеров. Другие длины размеров одинаковы для X и Y.
Например, рассмотрите множество 2 на 3 на 3 X с p = [20 40 60 80]. В этом случае prctile(X,p,[1 2]) возвращает массив, где каждая страница массива содержит 20-й, 40-й, 60-й и 80-й процентили элементов соответствующей страницы X. Поскольку 1 и 2 являются рабочими размерами, min([1 2]) = 1 и length(p) = 4, выходной сигнал - массив 4 на 1 на 3.
Типы данных: single | double
method - Метод расчета процентилей'exact' (по умолчанию) | 'approximate'Метод расчета процентилей, указанный как 'exact' или 'approximate'. По умолчанию prctile возвращает точные процентили, реализуя алгоритм, использующий сортировку. Можно указать 'method','approximate' для prctile для возврата приближенных процентилей путем реализации алгоритма, использующего T-Digest.
Типы данных: char | string
Y - ПроцентилиПроцентили вектора данных или массива, возвращаемые как скаляр или массив для одного или нескольких процентных значений.
Если X является вектором, то Y - скаляр или вектор с той же длиной, что и запрашиваемое число процентилей (length(p)). Y(i) содержит p(i)-й процентиль.
Если X является массивом размерности d, то Y - массив с длиной наименьшего рабочего измерения, равной количеству запрошенных процентилей (length(p)).
Многомерный массив - это массив с более чем двумя измерениями. Например, если X является массивом 1 на 3 на 4, то X является массивом 3-D.
Несинглтон-размер массива - это размер, размер которого не равен 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 следующим образом:
x1) (y2 − y1).
Аналогично, если 100 (1,5/n) -й процентиль равен y1,5/n и 100 (2,5/n) -й процентиль равен y2,5/n, то линейная интерполяция находит 100 (2,3/n) -й процентиль, y2,3/n как:
T-дайджест [2] - вероятностная структура данных, являющаяся разреженным представлением эмпирической кумулятивной функции распределения (CDF) набора данных. T-дайджест полезен для вычисления аппроксимаций основанной на рангах статистики (таких как процентили и квантили) из онлайновых или распределенных данных таким образом, чтобы обеспечить управляемую точность, особенно вблизи хвостов распределения данных.
Для данных, которые распределены в различных разделах, t-дайджест вычисляет оценки квантилей (и оценки процентилей) для каждого раздела данных отдельно, а затем объединяет оценки с сохранением постоянной границы памяти и постоянной относительной точности вычисления ( q) для qth квантиля). По этим причинам t-дайджест практичен для работы с массивами таллов.
Чтобы оценить квантили массива, который распределен в различных разделах, сначала создайте t-дайджест в каждом разделе данных. T-дайджест группирует данные в разделе и суммирует каждый кластер по значению центроида и накопленному весу, который представляет количество выборок, вносящих вклад в кластер. T-дайджест использует большие кластеры (широко разнесенные центроиды) для представления областей CDF, которые находятся вблизи q = 0.5 и использует небольшие кластеры (плотно разнесенные центроиды) для представления областей CDF, которые находятся вблизи q = 0 или q = 1.
T-дайджест управляет размером кластера, используя функцию масштабирования, которая отображает квантиль q в индекс k с параметром сжатия . То есть
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, prctile возвращает процентили, используя алгоритм, основанный на сортировке, следующим образом:
Отсортированные элементы в X принимают за 100 (0,5/n), 100 (1,5/n),..., 100 ([n-0,5 ]/n) -й процентили. Например:
Для вектора данных из пяти элементов, таких как {6, 3, 2, 10, 1}, отсортированные элементы {1, 2, 3, 6, 10} соответственно соответствуют 10-му, 30-му, 50-му, 70-му и 90-му процентилям.
Для вектора данных из шести элементов, таких как {6, 3, 2, 10, 8, 1}, отсортированные элементы {1, 2, 3, 6, 8, 10} соответственно соответствуют процентилям (50/6), (150/6), (250/6), (350/6), (450/6) и (550/6 ).
prctile использует линейную интерполяцию для вычисления процентилей для процентов между 100 (0,5/n) и 100 ([n-0,5 ]/n).
prctile назначает минимальные или максимальные значения элементов в X к процентилям, соответствующим процентам за пределами этого диапазона.
prctile удовольствия NaNs как отсутствующие значения и удаляет их.
[1] Лэнгфорд, Э. «Квартили в начальной статистике», Журнал статистики образования. т. 14, № 3, 2006.
[2] Напоминание, Т. и О. Эртль. «Вычисление чрезвычайно точных квантилей с помощью T-Digests». Август 2017 года.
Примечания и ограничения по использованию:
Y = prctile(X,p) возвращает точные процентили (с использованием алгоритма, основанного на сортировке), только если X - вектор высокого столбца.
Y = prctile(X,p,dim) возвращает точные процентили, только если существует одно из следующих условий:
X - вектор высокого столбца.
X является высоким массивом и dim не является 1. Например, prctile(X,p,2) возвращает точные процентили вдоль строк массива высокого уровня X.
Если X является высоким массивом и dim является 1, то необходимо указать 'Method','approximate' использовать алгоритм аппроксимации на основе T-Digest для вычисления процентилей. Например, prctile(X,p,1,'Method','approximate') возвращает приблизительные процентили вдоль столбцов массива высокого уровня X.
Y = prctile(X,p,vecdim) возвращает точные процентили, только если существует одно из следующих условий:
X - вектор высокого столбца.
X является высоким массивом и vecdim не включает 1. Например, если X является массивом 3 на 5 на 2, то prctile(X,p,[2,3]) возвращает точные процентили элементов в каждом X(i,:,:) ломтик.
X является высоким массивом и vecdim включает 1 и все несинглетонные размеры X. Например, если X является массивом 10 на 1 на 4, то prctile(X,p,[1 3]) возвращает точные процентили элементов в X(:,1,:).
Если X является высоким массивом и vecdim включает 1 но не включает все несинглетонные размеры X, то необходимо указать 'Method','approximate' для использования алгоритма аппроксимации. Например, если X является массивом 10 на 1 на 4, можно использовать prctile(X,p,[1 2],'Method','approximate') найти приблизительные процентили каждой страницы X.
Дополнительные сведения см. в разделе Массивы Tall.
Примечания и ограничения по использованию:
'all' и vecdim входные аргументы не поддерживаются.
'Method' аргумент пары имя-значение не поддерживается.
dim входной аргумент должен быть константой времени компиляции.
Если не указать dim входной аргумент, рабочая (или операционная) размерность может отличаться в сгенерированном коде. В результате могут возникать ошибки времени выполнения. Дополнительные сведения см. в разделе Автоматическое ограничение размеров (кодер MATLAB).
Если выходные данные Y - вектор, ориентация Y отличается от MATLAB ®, если все следующие значения являются истинными:
Вы не поставляете dim.
X является массивом переменного размера, а не вектором переменного размера во время компиляции, но X является вектором во время выполнения.
Ориентация вектора X не соответствует ориентации вектора p.
В этом случае выходные данные Y соответствует ориентации X, а не ориентация p.
Дополнительные сведения о создании кода см. в разделах Введение в создание кода и Общий рабочий процесс создания кода.
Примечания и ограничения по использованию:
'all' и vecdim входные аргументы не поддерживаются.
'Method' аргумент пары имя-значение не поддерживается.
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.