Процентили набора данных
возвращает процентили элементов в векторе данных или массиве 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,:)
.
Вычислите точные и аппроксимированные процентили высокого вектор-столбца для данного процента.
Когда вы выполняете вычисления на длинных массивах, 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 и извлеките данные из длинной таблицы в высокий вектор.
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 : :
Вычислите точную 50-ю процентиль x
. Поскольку x
высокий вектор-столбец и p
скаляр, prctile
возвращает точное значение процентили по умолчанию.
p = 50; yExact = prctile(x,p)
yExact = tall double ?
Вычислите аппроксимированную 50-ю процентиль x. Задайте 'Method','approximate'
использовать алгоритм аппроксимации на основе T-обзора для вычисления процентили.
yApprox = prctile(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 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
Значения аппроксимированной процентили и точной процентили являются тем же самым к этим четырем показанным цифрам.
Вычислите точные и аппроксимированные процентили высокой матрицы для заданных процентов по различным измерениям.
Когда вы выполняете вычисления на длинных массивах, MATLAB® использует любого параллельный пул (значение по умолчанию, если у вас есть Parallel Computing Toolbox™), или локальный сеанс работы с 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, prctile
функция вычисляет точные процентили только, так, чтобы она могла выполнить расчет эффективно с помощью основанного на сортировке алгоритма (см. Алгоритмы) вместо алгоритма аппроксимации на основе T-обзора.
Вычислите точные 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 ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
Оцените длинные массивы и загрузите результаты в память при помощи 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
размерность 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 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 можно следующим образом:
Точно так же, если 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 в масштабный коэффициент k для того, чтобы дать переменные шаги размера в q. В результате размеры кластера неравны (больше вокруг центральных квантилей и меньший около 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)
возвращает точные процентили (использующий основанный на сортировке алгоритм) только если X
высокий вектор-столбец.
Y = prctile(X,p,dim)
возвращает точные процентили только, когда одно из этих условий существует:
X
высокий вектор-столбец.
X
длинный массив и dim
не 1
. Например, prctile(X,p,2)
возвращает точные процентили вдоль строк длинного массива X
.
Если X
длинный массив и dim
1
, затем необходимо задать 'Method','approximate'
использовать алгоритм аппроксимации на основе T-обзора для вычисления процентилей. Например, 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
.
Для получения дополнительной информации см. Раздел "Высокие массивы".
Указания и ограничения по применению:
'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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.