Процентили набора данных
Y = prctile(X,p)
Y = prctile(X,p,'all')
Y = prctile(X,p,dim)
Y = prctile(X,p,vecdim)
Y = prctile(___,'Method',method)
возвращает процентили элементов в векторе данных или массиве Y
= prctile(X
,p
)X
для процентов p
в интервале [0,100].
Если X
является вектором, то Y
является скаляром или вектором с той же длиной, как количество процентилей запросило (length(p)
). Y(i)
содержит процентиль p(i)
.
Если X
является матрицей, то Y
является вектором - строкой или матрицей, где количество строк Y
равно количеству процентилей, которые требуют (length(p)
). i
th строка 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,:)
.
Вычислите точные и аппроксимированные процентили высокого вектор-столбца для данного процента.
Создайте datastore для набора данных airlinesmall
. Обработайте значения 'NA'
как недостающие данные так, чтобы datastore
заменил их на значения NaN
. Задайте, чтобы работать с переменной ArrTime
.
ds = datastore('airlinesmall.csv','TreatAsMissing','NA',... 'SelectedVariableNames','ArrTime');
Составьте длинную таблицу сверху datastore и извлеките данные из длинной таблицы в высокий вектор.
t = tall(ds) % Tall table
Starting parallel pool (parpool) using the 'local' profile ... connected to 6 workers. t = M×1 tall table ArrTime _______ 735 1124 2218 1431 746 1547 1052 1134 : :
x = t{:,:} % Tall vector
x = M×1 tall double column vector 735 1124 2218 1431 746 1547 1052 1134 : :
Вычислите точную 50-ю процентиль x
. Поскольку x
является высоким вектор-столбцом, и p
является скаляром, prctile
возвращает точное значение процентили по умолчанию.
p = 50; yExact = prctile(x,p)
yExact = M×N×... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : Preview deferred. Learn more.
Вычислите аппроксимированную 50-ю процентиль x. Задайте 'Method','approximate'
, чтобы использовать алгоритм аппроксимации на основе T-обзора для вычисления процентили.
yApprox = prctile(x,p,'Method','approximate')
yApprox = M×N×... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : Preview deferred. Learn more.
Оцените длинные массивы и загрузите результаты в память при помощи gather
.
[yExact,yApprox] = gather(yExact,yApprox)
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 4: Completed in 9.7 sec - Pass 2 of 4: Completed in 0.7 sec - Pass 3 of 4: Completed in 1.8 sec - Pass 4 of 4: Completed in 1 sec Evaluation completed in 16 sec
yExact = 1522
yApprox = 1.5220e+03
Значения аппроксимированной процентили и точной процентили являются тем же самым к этим четырем показанным цифрам.
Вычислите точные и аппроксимированные процентили высокой матрицы для заданных процентов по различным измерениям.
Создайте высокий матричный 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
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
X = t{:,varnames} % Tall matrix
X = M×4 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-обзора.
Вычислите точные 25-е, 50-е, и 75-е процентили X
вдоль второго измерения.
p = [25 50 75]; % Vector of percentages
Yexact = prctile(X,p,2)
Yexact = M×N×... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : Preview deferred. Learn more.
Когда функция действует по первому измерению, и p
является вектором процентов, необходимо использовать алгоритм аппроксимации на основе t-обзора, чтобы вычислить процентили. Используя основанный на сортировке алгоритм, чтобы найти процентили по первому измерению длинного массива в вычислительном отношении интенсивно.
Вычислите аппроксимированные 25-е, 50-е, и 75-е процентили X
по первому измерению. Поскольку размерность по умолчанию равняется 1, вы не должны задавать значение для dim
.
Yapprox = prctile(X,p,'Method','approximate')
Yapprox = M×N×... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : Preview deferred. Learn more.
Оцените длинные массивы и загрузите результаты в память при помощи gather
.
[Yexact,Yapprox] = gather(Yexact,Yapprox);
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 9.9 sec Evaluation completed in 12 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
th размерность 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-обзор.
Типы данных: char | string
Y
ПроцентилиПроцентили вектора данных или массива, возвращенного как скаляр или массив для одного или нескольких значений процента.
Если X
является вектором, то Y
является скаляром или вектором с той же длиной, как количество процентилей запросило (length(p)
). Y(i)
содержит p(i)
th процентиль.
Если X
является массивом размерности d, то Y
является массивом с длиной самой маленькой операционной размерности, равной количеству процентилей, которые требуют (length(p)
).
Многомерный массив является массивом больше чем с двумя размерностями. Например, если X 1 массивом 3 на 4, то X трехмерный массив.
Первая неодноэлементная размерность является первой размерностью массива, размер которого не равен 1. Например, если X 1 2 массивом 3 на 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 можно следующим образом:
Точно так же, если 100 (1.5/n) th процентиль является y 1.5/n, и 100 (2.5/n) th процентиль y 2.5/n, то линейная интерполяция находит 100 (2.3/n) th процентиль, y 2.3/n как:
T-обзор [2] является вероятностной структурой данных, которая является разреженным представлением эмпирической кумулятивной функции распределения (CDF) набора данных. T-обзор полезен для вычислительных приближений основанной на ранге статистики (таких как процентили и квантили) от онлайновых или распределенных данных способом, которые допускают управляемую точность, особенно около хвостов распределения данных.
Для данных, которые распределяются в различных разделах, t-обзор вычисляет оценки квантиля (и оценки процентили) для каждого раздела данных отдельно, и затем комбинирует оценки при поддержании постоянной памяти связанная и постоянная относительная точность вычисления ( для q th квантиль). По этим причинам t-обзор практичен для работы с длинными массивами.
Чтобы оценить квантили, массив, который распределяется в различных разделах, сначала создайте t-обзор в каждом разделе данных. T-обзор кластеризирует данные в разделе и обобщает каждый кластер центроидным значением и накопленным весом, который представляет количество выборок, способствующих кластеру. T-обзор использует большие кластеры (широко расставленные центроиды), чтобы представлять области CDF, которые являются около q = 0.5
, и использует небольшие кластеры (плотно распределенные центроиды), чтобы представлять области CDF, которые являются около q = 0
или q = 1
.
T-обзор управляет размером кластера при помощи масштабирующейся функции, которая сопоставляет квантиль q с индексом k с параметром сжатия . Таким образом,
где отображение k является монотонным с минимальным значением k(0,) = 0
и максимальное значение k(1,) =
.
Масштабирование функции для = 10
q = 0
или q = 1
). Меньшие кластеры допускают лучшую точность около ребер данных.Чтобы обновить t-обзор с новым наблюдением, которое имеет вес и местоположение, найдите кластер самым близким к новому наблюдению. Затем добавьте вес и обновите центроид кластера на основе взвешенного среднего, при условии, что обновленный вес кластера не превышает ограничение размера.
Можно объединить независимые t-обзоры от каждого раздела данных путем взятия объединения t-обзоров и слияния их центроидов. Объединить t-обзоры, первый вид кластеры из всех независимых t-обзоров в порядке убывания кластерных весов. Затем объедините соседние кластеры, когда они будут соответствовать ограничению размера, чтобы сформировать новый t-обзор.
Если вы формируете t-обзор, который представляет набор полных данных, можно оценить конечные точки (или контуры) каждого кластера в t-обзоре и затем использовать интерполяцию между конечными точками каждого кластера, чтобы найти точные оценки квантиля.
Для n - вектор элемента X
, prctile
возвращает процентили при помощи основанного на сортировке алгоритма можно следующим образом:
Отсортированные элементы в X
взяты в качестве 100 (0.5/n) th, 100 (1.5/n) th..., 100 ([n – 0.5]/n) th процентили. Например:
Для вектора данных пяти элементов такой как {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) th, (150/6) th, (250/6) th, (350/6) th, (450/6) th, и (550/6) th процентили.
prctile
использует линейную интерполяцию, чтобы вычислить процентили для процентов между 100 (0.5/n) и 100 ([n – 0.5]/n).
prctile
присваивает минимальные или максимальные значения элементов в X
к процентилям, соответствующим процентам вне той области значений.
prctile
обрабатывает NaN
s как отсутствующие значения и удаляет их.
[1] Лэнгфорд, E. “Квартили в элементарной статистике”, журнал образования статистики. Издание 14, № 3, 2006.
[2] Причинение беспокойства, T. и О. Эртл. “Вычисляя чрезвычайно Точные квантили Используя T-обзоры”. Август 2017.
Указания и ограничения по применению:
Y = prctile(X,p)
и Y = prctile(X,p,dim)
возвращают точные процентили (использующий основанный на сортировке алгоритм) при этих условиях:
X
является высоким вектор-столбцом, и p
является скаляром. В этом случае dim
является 1
.
X
является длинным массивом, и dim
не является 1
.
Если p
является вектором, и dim
является 1
, то необходимо задать 'Method','approximate'
, чтобы использовать алгоритм аппроксимации на основе T-обзора для вычисления процентилей.
Y = prctile(X,p,'all')
возвращает точные процентили, когда p
является скаляром. Если p
является вектором, то необходимо задать 'Method','approximate'
, чтобы использовать алгоритм аппроксимации.
Y = prctile(X,p,vecdim)
возвращает точные процентили, если vecdim
не включает первую размерность. Если vecdim
включает первую размерность, то необходимо задать 'Method','approximate'
, чтобы использовать алгоритм аппроксимации.
Указания и ограничения по применению:
'all'
и входные параметры vecdim
не поддержаны.
Аргумент пары "имя-значение" 'Method'
не поддержан.
Входной параметр dim
должен быть постоянным временем компиляции.
Если вы не задаете входной параметр dim
, работа (или работа), размерность может отличаться в сгенерированном коде. В результате ошибки времени выполнения могут произойти. Для получения дополнительной информации смотрите Автоматическое ограничение размерности (MATLAB Coder).
Если вывод Y
является вектором, ориентация Y
отличается от MATLAB®, когда все следующее верно:
Вы не предоставляете dim
.
X
является массивом переменного размера, и не вектором переменного размера, во время компиляции, но X
является вектором во время выполнения.
Ориентация векторного X
не совпадает с ориентацией векторного p
.
В этом случае вывод Y
совпадает с ориентацией X
, не ориентацией p
.
Для получения дополнительной информации о генерации кода смотрите Введение в Генерацию кода и Общий Рабочий процесс Генерации кода.
Указания и ограничения по применению:
'all'
и входные параметры vecdim
не поддержаны.
Аргумент пары "имя-значение" 'Method'
не поддержан.
Для получения дополнительной информации смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.