Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

prctile

Percentiles de un conjunto de datos

Descripción

ejemplo

Y = prctile(X,p) devuelve percentiles de los elementos de un vector de datos o matriz para los porcentajes del intervalo [0,100].Xp

  • Si es un vector, entonces es un escalar o un vector con la misma longitud que el número de percentiles solicitados ( ). contiene el percentil.XYlength(p)Y(i)p(i)

  • Si es una matriz, entonces es un vector de fila o una matriz, donde el número de filas de es igual al número de percentiles solicitados ( ).XYYlength(p) La ta fila de contiene los percentiles de cada columna de .iYp(i)X

  • Para , opera a lo largo de la primera de .matrices multidimensionalesprctiledimensión nonsingletonX

ejemplo

Y = prctile(X,p,'all') devuelve percentiles de todos los elementos de .X

ejemplo

Y = prctile(X,p,dim) deforma percentiles a lo largo de la dimensión operativa.dim

ejemplo

Y = prctile(X,p,vecdim) devuelve percentiles sobre las dimensiones especificadas en el vector.vecdim Por ejemplo, si es una matriz, devuelve el percentil 50 de todos los elementos de porque cada elemento de una matriz está contenido en el sector de matriz definido por las dimensiones 1 y 2.Xprctile(X,50,[1 2])X

ejemplo

Y = prctile(___,'Method',method) devuelve percentiles exactos o aproximados basados en el valor de , utilizando cualquiera de las combinaciones de argumentos de entrada en las sintaxis anteriores.method

Ejemplos

contraer todo

Genere un conjunto de datos de tamaño 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

Calcular el percentil 42.

Y = prctile(x,42)
Y = 5.6709 

Busque los percentiles de todos los valores de una matriz.

Cree una matriz de 3 por 5 por 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  

Encuentra los percentiles 40 y 60 de los elementos de .X

Y = prctile(X,[40 60],'all')
Y = 2×1

   12.5000
   18.5000

es el percentil 40 de , y es el percentil 60 de .Y(1)XY(2)X

Calcule los percentiles a lo largo de las columnas y filas de una matriz de datos para los porcentajes especificados.

Genere una matriz de datos de 5 por 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

Calcule los percentiles 25, 50 y 75 a lo largo de las columnas de .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

Las filas de corresponden a los percentiles de las columnas de .YX Por ejemplo, los percentiles 25, 50 y 75 de la tercera columna de los elementos con (4, 8, 12, 16, 20) son 7, 12 y 17, respectivamente. devuelve la misma matriz percentil.XY = prctile(X,[25 50 75])

Calcule los percentiles 25, 50 y 75 a lo largo de las filas de .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

Las filas de corresponden a los percentiles de filas de .YX Por ejemplo, los percentiles 25, 50 y 75 de la primera fila de elementos con (2, 3, 4, 5, 6) son 2,75, 4 y 5,25, respectivamente.X

Encuentre los percentiles de una matriz multidimensional a lo largo de varias dimensiones simultáneamente.

Cree una matriz de 3 por 5 por 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  

Calcule los percentiles 40 y 60 para cada página especificando las dimensiones 1 y 2 como las dimensiones operativas.X

Ypage = prctile(X,[40 60],[1 2])
Ypage =  Ypage(:,:,1) =      6.5000     9.5000   Ypage(:,:,2) =     21.5000    24.5000  

Por ejemplo, es el percentil 40 de la primera página de , y es el percentil 60 de la primera página de .Ypage(1,1,1)XYpage(2,1,1)X

Calcule los percentiles 40 y 60 de los elementos de cada sector especificando las dimensiones 1 y 3 como dimensiones operativas.X(:,i,:)

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

Por ejemplo, es el percentil 40 de los elementos en , y es el percentil 60 de los elementos en .Ycol(1,4)X(:,4,:)Ycol(2,4)X(:,4,:)

Calcule los percentiles exactos y aproximados de un vector de columna alto para un porcentaje determinado.

Al realizar cálculos en matrices altas, MATLAB® utiliza un grupo paralelo (predeterminado si tiene Parallel Computing Toolbox™) o la sesión local de MATLAB. Si desea ejecutar el ejemplo utilizando la sesión local de MATLAB cuando tiene Parallel Computing Toolbox, puede cambiar el entorno de ejecución global mediante la función.mapreducer

Cree un almacén de datos para el conjunto de datos.airlinesmall Trate los valores como datos que faltan para reemplazarlos por valores.'NA'datastoreNaN Especifique para trabajar con la variable.ArrTime

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

Cree una tabla alta en la parte superior del almacén de datos y extraiga los datos de la tabla alta en un vector alto.

t = tall(ds) % Tall table
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 4).  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          :          : 

Calcular el percentil 50 exacto de .x Dado que es un vector de columna alto y es un escalar, devuelve el valor de percentil exacto de forma predeterminada.xpprctile

p = 50; yExact = prctile(x,p)
yExact =    tall double      ? 

Calcular el percentil 50 aproximado de x. Especifique que se utilice un algoritmo de aproximación basado en para calcular el percentil.'Method','approximate'T-Digest

yApprox = prctile(x,p,'Method','approximate')
yApprox =    MxNx... tall double array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    : 

Evalúe las matrices altas y lleve los resultados a la memoria mediante .gather

[yExact,yApprox] = gather(yExact,yApprox)
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 4: Completed in 5.5 sec - Pass 2 of 4: Completed in 1.4 sec - Pass 3 of 4: Completed in 2 sec - Pass 4 of 4: Completed in 1.3 sec Evaluation completed in 14 sec 
yExact = 1522 
yApprox = 1.5220e+03 

Los valores del percentil aproximado y el percentil exacto son los mismos que los cuatro dígitos mostrados.

Calcule percentiles exactos y aproximados de una matriz alta para porcentajes especificados a lo largo de diferentes dimensiones.

Al realizar cálculos en matrices altas, MATLAB® utiliza un grupo paralelo (predeterminado si tiene Parallel Computing Toolbox™) o la sesión local de MATLAB. Si desea ejecutar el ejemplo utilizando la sesión local de MATLAB cuando tiene Parallel Computing Toolbox, puede cambiar el entorno de ejecución global mediante la función.mapreducer

Cree una matriz alta que contenga un subconjunto de variables del conjunto de datos.Xairlinesmall Consulte los pasos para extraer datos de una matriz alta.Percentiles de vector alto para un porcentaje dado

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

Cuando se opera a lo largo de una dimensión que no es 1, la función calcula únicamente los percentiles exactos, de modo que puede realizar el cálculo de forma eficaz mediante un algoritmo basado en la ordenación (consulte ) en lugar de un algoritmo de aproximación basado en .prctileAlgoritmosT-Digest

Calcule los percentiles 25, 50 y 75 exactos de la segunda dimensión.X

p = [25 50 75]; % Vector of percentages Yexact = prctile(X,p,2)
Yexact =    MxNx... tall double array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    : 

Cuando la función funciona a lo largo de la primera dimensión y es un vector de porcentajes, debe utilizar el algoritmo de aproximación basado en el resumen t para calcular los percentiles.p El uso del algoritmo basado en la ordenación para encontrar los percentiles a lo largo de la primera dimensión de una matriz alta es computacionalmente intensivo.

Calcule los percentiles aproximados 25, 50 y 75 de la primera dimensión.X Dado que la dimensión predeterminada es 1, no es necesario especificar un valor para .dim

Yapprox = prctile(X,p,'Method','approximate')
Yapprox =    MxNx... tall double array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    : 

Evalúe las matrices altas y lleve los resultados a la memoria mediante .gather

[Yexact,Yapprox] = gather(Yexact,Yapprox);
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 6.5 sec Evaluation completed in 8.5 sec 

Muestre las primeras cinco filas de los percentiles exactos 25, 50 y 75 a lo largo de la segunda dimensión de .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

Cada fila de la matriz contiene los tres percentiles de la fila correspondiente en .YexactX Por ejemplo, , , y son los percentiles 25, 50 y 75, respectivamente, de la primera fila de .30.5347.5688.5X

Muestre los percentiles aproximados 25, 50 y 75 de la primera dimensión.X

Yapprox
Yapprox = 3×4
103 ×

   -0.0070    1.1149    0.9322    0.0700
         0    1.5220    1.3350    0.1020
    0.0110    1.9180    1.7400    0.1510

Cada columna de la matriz corresponde a los tres percentiles para cada columna de la matriz.YapproxX Por ejemplo, la primera columna de with elements (–7, 0, 11) contiene los percentiles de la primera columna de .YapproxX

Argumentos de entrada

contraer todo

Datos de entrada, especificados como vector o matriz.

Tipos de datos: double | single

Porcentajes para los que calcular percentiles, especificados como escalares o vectoriales de escalares de 0 a 100 percentiles.

Ejemplo: 25

Ejemplo: [25, 50, 75]

Tipos de datos: double | single

Dimensión a lo largo de la cual se solicitan los percentiles de, especificado como un entero positivo.X Por ejemplo, para una matriz , cuando se devuelve el percentil(s) de las columnas de ; cuando el número 2, devuelve el percentil(s) de las filas de .XdimprctileXdimprctileX Para una matriz multidimensional, la longitud de la dimensión th de es igual a la longitud de .XdimYp

Tipos de datos: double | single

Vector de dimensiones, especificado como un vector entero positivo. Cada elemento de representa una dimensión de la matriz de entrada .vecdimX La salida tiene longitud en la dimensión de operación especificada más pequeña (es decir, dimensión) y tiene la longitud 1 en cada una de las dimensiones operativas restantes.Ylength(p)min(vecdim) Las otras longitudes de dimensión son las mismas para y .XY

Por ejemplo, considere una matriz de 2 por 3 por 3 con .Xp = [20 40 60 80] En este caso, devuelve una matriz, donde cada página de la matriz contiene los percentiles 20, 40, 60 y 80 de los elementos de la página correspondiente de .prctile(X,p,[1 2])X Debido a que 1 y 2 son las dimensiones operativas, con y , la salida es una matriz de 4 por 1 por 3.min([1 2]) = 1length(p) = 4

Tipos de datos: single | double

Método para calcular percentiles, especificado como o .'exact''approximate' De forma predeterminada, devuelve los percentiles exactos mediante la implementación de un que usa la ordenación.prctileAlgoritmo Puede especificar para devolver percentiles aproximados mediante la implementación de un algoritmo que utilice .'method','approximate'prctileT-Digest

Tipos de datos: char | string

Argumentos de salida

contraer todo

Percentiles de un vector de datos o matriz, devueltos como un escalar o matriz para uno o más valores de porcentaje.

  • Si es un vector, entonces es un escalar o un vector con la misma longitud que el número de percentiles solicitados ( ). contiene el percentil.XYlength(p)Y(i)p(i)

  • Si es una matriz de dimensiones , es una matriz con la longitud de la dimensión operativa más pequeña igual al número de percentiles solicitados ( ).XdYlength(p)

Más acerca de

contraer todo

Matriz multidimensional

A es una matriz con más de dos dimensiones.matriz multidimensional Por ejemplo, si X es una matriz de 1 por 3 por 4, X es una matriz 3D.

Dimensión nonsingleton

A de una matriz es una dimensión cuyo tamaño no es igual a 1.dimensión nonsingleton A de una matriz es la primera dimensión que satisface la condición nonsingleton.primera dimensión no singletón Por ejemplo, si es una matriz 1-by-1-by-2-by-4, la tercera dimensión es la primera dimensión nonsingleton de .XX

Interpolación lineal

La interpolación lineal utiliza polinomios lineales para y yi • f(Xi), los valores de la función subyacente á f( ) en los puntos del vector o matriz .YXx Dados los puntos de datos (x1, y1) y (x2, y2), dondey1 • f(x1) yy2 • f(x2), la interpolación lineal encuentra el valor de f( ) para un determinado entreyxxx1 Yx2 de la siguiente manera:

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

Del mismo modo, si el percentil 100(1.5/ )esny1.5/n y el percentil 100(2.5/ )esny2.5/n, a continuación, la interpolación lineal encuentra el percentil 100(2.3/ ),ny2.3/n Como:

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

T-Digest

T-digest es una estructura de datos probabilística que es una representación dispersa de la función de distribución acumulativa empírica (CDF) de un conjunto de datos.[2] T-digest es útil para calcular aproximaciones de estadísticas basadas en rangos (como percentiles y cuantiles) a partir de datos en línea o distribuidos de una manera que permite una precisión controlable, particularmente cerca de las colas de la distribución de datos.

Para los datos que se distribuyen en diferentes particiones, t-digest calcula estimaciones cuantitativas (y estimaciones de percentiles) para cada partición de datos por separado y, a continuación, combina las estimaciones mientras mantiene un límite de memoria constante y una precisión relativa constante de cálculo (q(1q) para el cuantil).q Por estas razones, t-digest es práctico para trabajar con matrices altas.

Para estimar los cuantiles de una matriz que se distribuye en diferentes particiones, primero cree un t-digest en cada partición de los datos. Un t-digest agrupa los datos de la partición y resume cada clúster por un valor centroide y un peso acumulado que representa el número de muestras que contribuyen al clúster. T-digest utiliza grandes racimos (centroides ampliamente espaciados) para representar áreas del CDF que están cerca q = 0.5 y utiliza pequeños racimos (centroides estrechamente espaciados) para representar áreas del CDF que están cerca q = 0 O q = 1.

T-digest controla el tamaño del clúster mediante una función de escalado que asigna un cuantil a un índice con un parámetro de compresiónqk δ. Es decir

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

donde la cartografía es monotónica con un valor mínimok k(0,δ) = 0 y valor máximo k(1,δ) = δ. La siguiente figura muestra la función de escalado para δ = 10.

La función de escalado traduce el cuantil al factor de escala para dar pasos de tamaño variable en .qkq Como resultado, los tamaños de los racimos son desiguales (más grandes alrededor de los cuantiles centrales y más pequeños cerca q = 0 O q = 1). Los clústeres más pequeños permiten una mejor precisión cerca de los bordes de los datos.

Para actualizar un t-digest con una nueva observación que tenga un peso y una ubicación, busque el clúster más cercano a la nueva observación. A continuación, agregue el peso y actualice el centroide del clúster en función del promedio ponderado, siempre que el peso actualizado del clúster no supere la limitación de tamaño.

Puede combinar resúmenes t independientes de cada partición de los datos tomando una unión de los resúmenes t y fusionando sus centroides. Para combinar resúmenes t, primero ordene los clústeres de todos los resúmenes t independientes en orden decreciente de ponderaciones de clúster. A continuación, combine los clústeres vecinos, cuando cumplan la limitación de tamaño, para formar un nuevo t-digest.

Una vez que forme un resumen t que represente el conjunto de datos completo, puede estimar los puntos finales (o límites) de cada clúster en el resumen t y, a continuación, utilizar la interpolación entre los puntos finales de cada clúster para buscar estimaciones cuantitativas precisas.

Algoritmos

Para un vector -element , devuelve percentiles mediante un algoritmo basado en la ordenación de la siguiente manera:nXprctile

  1. Los elementos ordenados en se toman como los percentiles 100(0.5/ )th, 100(1.5/ )th, ..., 100([ – 0.5]/ )th.Xnnnn Por ejemplo:

    • Para un vector de datos de cinco elementos, como el número 6, 3, 2, 10, 1o, 1o, los elementos ordenados 1, 2, 3, 6, 10o corresponden respectivamente a los percentiles 10, 30, 50, 70 y 90.

    • Para un vector de datos de seis elementos como el número 6, 3, 2, 10, 8, 1o, los elementos ordenados 1, 2, 3, 6, 8, 10, respectivamente corresponden a los (50/6)th, (150/6)th, (250/6)th, (350/6)th, (450/6)th y (550/6)th.

  2. utiliza para calcular percentiles para porcentajes entre 100(0.5/ ) y 100([ – 0.5]/ ).prctileinterpolación linealnnn

  3. asigna los valores mínimo o máximo de los elementos a los percentiles correspondientes a los porcentajes fuera de ese intervalo.prctileX

trata s como valores que faltan y los elimina.prctileNaN

Referencias

[1] Langford, E. “Quartiles in Elementary Statistics”, Journal of Statistics Education. Vol. 14, No. 3, 2006.

[2] Dunning, T., and O. Ertl. “Computing Extremely Accurate Quantiles Using T-Digests.” August 2017.

Capacidades ampliadas

Introducido antes de R2006a