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

Los percentiles de un conjunto de datos

Descripción

ejemplo

Y = prctile(X,p) Devuelve percentiles de los elementos de un vector de datos o una matriz para los porcentajes en el intervalo [0100].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 fila TH 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) Devuelve 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, a continuación, devuelve el percentil 50 de todos los elementos de porque cada elemento de una matriz está contenida en el segmento de matriz definido por las dimensiones 1 y 2.Xprctile(X,50,[1 2])X

ejemplo

Y = prctile(___,'Method',method) Devuelve los percentiles exactos o aproximados en función del 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

Calcule el percentil 42.

Y = prctile(x,42)
Y = 5.6709 

Encuentre 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 60 º percentil 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 corresponden a los percentiles de columnas de.YX Por ejemplo, los percentiles 25, 50 y 75 de la tercera columna con elementos (4, 8, 12, 16, 20) son 7, 12 y 17, respectivamente. Devuelve la misma matriz percentil.XY = prctile(X,[25 50 75])

Calcular 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 con elementos (2, 3, 4, 5, 6) son 2,75, 4 y 5,25, respectivamente.X

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

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 cotas 1 y 2 como 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 60 º percentil 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 cotas 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 60 º percentil 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.

Cree un datastore para el conjunto de datos.airlinesmall Trate los valores como datos faltantes para que los Reemplace con 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 la información de la tabla alta en un vector alto.

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          :          : 

Calcule 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 =    M×N×... tall double array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    :  Preview deferred. Learn more. 

Calcule el percentil 50 aproximado de x. Especifique si desea utilizar un algoritmo de aproximación basado en para calcular el percentil.'Method','approximate'T-Digest

yApprox = prctile(x,p,'Method','approximate')
yApprox =    M×N×... tall double array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    :  Preview deferred. Learn more. 

Evalúe los arrays altos y traiga los resultados a la memoria usando.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 

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

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

Cree una matriz alta que contenga un subconjunto de variables del conjunto de datos.Xairlinesmall Consulte para obtener más información sobre los pasos para extraer datos de una matriz alta.Percentiles de vector alto para 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: 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           :          :            :           :           :          :            :           : 

Cuando se opera a lo largo de una cota que no es 1, la función calcula solo los percentiles exactos, de modo que puede realizar el cálculo de forma eficiente utilizando un algoritmo basado en ordenación (véase) en lugar de un algoritmo de aproximación basado en.prctileAlgoritmosT-Digest

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

p = [25 50 75]; % Vector of percentages Yexact = prctile(X,p,2)
Yexact =    M×N×... tall double array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    :  Preview deferred. Learn more. 

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

Calcule los percentiles 25º, 50 y 75 aproximados a lo largo 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 =    M×N×... tall double array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    :  Preview deferred. Learn more. 

Evalúe los arrays altos y traiga los resultados a la memoria usando.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 

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

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

Argumentos de entrada

contraer todo

Datos de entrada, especificados como vector o array.

Tipos de datos: double | single

Porcentajes para los que se calculan los percentiles, especificados como un escalar o un vector de escalares de 0 a 100.

Ejemplo: 25

Ejemplo: [25, 50, 75]

Tipos de datos: double | single

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

Tipos de datos: double | single

Vector de cotas, 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, cota) y tiene una longitud de 1 en cada una de las dimensiones operativas restantes.Ylength(p)min(vecdim) Las otras longitudes de cota 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 Dado 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, especificados 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 utiliza.'method','approximate'prctileT-Digest

Tipos de datos: char | string

Argumentos de salida

contraer todo

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

  • 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 TH.XYlength(p)Y(i)p(i)

  • Si es una matriz de cota, entonces 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.multidimensional array Por ejemplo, si X es una matriz de 1 por 3 por 4, X es una matriz 3-D.

Dimensión nonsingleton

A es la primera dimensión de una matriz cuyo tamaño no es igual a 1.first nonsingleton dimension Por ejemplo, si X es una matriz 1-por-2-por-3-por-4, entonces la segunda dimensión es la primera dimensión nonsingleton de X.

Interpolación lineal

La interpolación lineal utiliza polinomios lineales para buscar 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,y1yx2,y2), dondey1 = f (x1) yy2 = f (x2), la interpolación lineal encuentra = f () para un dado entreyxxx1 Yx2 como sigue:

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

Del mismo modo, si el percentil 100 (1.5/) TH esny1.5/n y el percentil 100 (2.5/) TH esny2.5/n, la interpolación lineal encuentra el percentil 100 (2.3/) TH,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ísticos 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 permita una precisión controlable, particularmente cerca de las colas de la distribución de datos.

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

Para estimar cuantiles de una matriz que se distribuye en diferentes particiones, primero compile un t-Digest en cada partición de los datos. Un resumen de t agrupa los datos de la partición y resume cada clúster mediante un valor de centroide y un peso acumulado que representa el número de muestras que contribuyen al clúster. T-Digest utiliza grandes clusters (centroides ampliamente espaciados) para representar áreas de la CDF que están cerca de q = 0.5 y utiliza pequeños racimos (centroides estrechamente espaciados) para representar áreas de la CDF que están cerca de 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 el mapeo es monotónico con valor mínimok k(0,) = 0 y el valor máximo k(1,) = δ.

Función de escalado para = 10

La función de escalado traduce el cuantil al factor de escala con el fin de dar pasos de tamaño variable.qkq Como resultado, los tamaños de los clústeres son desiguales (más grandes alrededor de los cuantiles del centro y más pequeños cerca de 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 resumen t 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 los resúmenes t independientes de cada partición de los datos tomando una Unión de los t-digests y fusionando sus centroides. Para combinar los digests t, primero ordene los clústeres de todos los t-digests independientes en orden decreciente de pesos del cluster. Luego, fusiona los clústeres vecinos, cuando cumplen con la limitación de tamaño, para formar un nuevo t-Digest.

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

Algoritmos

Para un vector de elemento, devuelve percentiles mediante el uso de un algoritmo basado en ordenación de la siguiente manera:nXprctile

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

    • Para un vector de datos de cinco elementos como {6, 3, 2, 10, 1}, los elementos ordenados {1, 2, 3, 6, 10} corresponden respectivamente a los percentiles 10, 30, 50, 70 y 90.

    • Para un vector de datos de seis elementos como {6, 3, 2, 10, 8, 1}, los elementos ordenados {1, 2, 3, 6, 8, 10} corresponden respectivamente a los percentiles (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ínimos o máximos de los elementos de los percentiles correspondientes a los porcentajes fuera de ese intervalo.prctileX

trata a s como valores faltantes 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