Cuantiles en R

Estadística con R Medidas de localización
Cuantiles y percentiles en R

Considerando un valor \(p\), siendo \(0 < p < 1\), el cuantil de orden \(p\) es el valor que deja una proporción de los datos por debajo (\(p\)) y el resto \((1-p)\) por encima de ese valor. Observa que los cuantiles son la generalización de la mediana, que es el cuantil para \(p = 0.5\). En R, se puede hacer uso de la función quantile para calcular cualquier cuantil de cualquier vector numérico.

Sintaxis

La función quantile calcula los cuantiles muestrales de un vector numérico (x). Por defecto, esta función calcula los cuartiles especificados dentro de probs, pero también puedes introducir cualquier otra probabilidad para calcular cualquier percentil.

quantile(x,             # Vector numérico
         probs = seq(0, 1, 0.25), # Cuantiles (Por defecto los cuartiles: 0, 0.25, 0.5, 0.75, 1)
         na.rm = FALSE, # Si TRUE, elimina los datos faltantes
         names = TRUE,  # Si TRUE, el resultado tendrá nombres
         type = 7,      # Entero entre 1 y 9 para seleccionar un algoritmo para calcular los cuantiles
         digits = 7,    # Si names = TRUE, es el número de fígitos de los porcentages
         ...)           # Argumentos adicionales, de ser necesarios

Cuartiles

Los cuartiles son cuantiles de orden 0.25, 0.5 y 0.75 y dividen la muestra en cuatro partes con la misma frecuencia. Normalmente, los cuartiles se denotan por \(Q_1\), \(Q_2\) y \(Q_3\).

# Datos de muestra
set.seed(1)
x <- rnorm(100)

# Calcular los cuartiles de x
quantile(x)
        0%        25%        50%        75%       100% 
-2.2146999 -0.4942425  0.1139092  0.6915454  2.4016178 

Recuerda que el cuartil 0.5 es igual a la mediana:

# Datos de muestra
set.seed(1)
x <- rnorm(100)

# Calcular la mediana de x
median(x) # 0.1139092

Ten en cuenta que puedes eliminar los atributos de nombre de la salida pasando names = FALSE a la función.

# Datos de muestra
set.seed(1)
x <- rnorm(100)

# Calcular los cuartiles de x
quantile(x, names = FALSE)
-2.2146999 -0.4942425  0.1139092  0.6915454  2.4016178

Eliminar datos faltantes

Si tu vector numérico contiene datos faltantes no podrás calcular los cuantiles. Para solucionarlo necesitarás establecer na.rm = TRUE para eliminar los valores perdidos antes del cálculo.

# Datos de muestra
set.seed(1)
x <- rnorm(100)

# Valor faltante
x[1] <- NA

# Calcular los cuartiles de x eliminando valores omitidos
quantile(x, na.rm = TRUE)
        0%        25%        50%        75%       100% 
-2.2146999 -0.4757753  0.1532533  0.6933514  2.4016178 

Algoritmos para estimar cuantiles

El cálculo de los cuantiles se basa en uno de los nueve algoritmos discutidos en Hyndman y Fan (1996). Por defecto, se utiliza el séptimo algoritmo, pero puedes seleccionar otro pasando un entero entre 1 y 9 a type. Lee la referencia anterior para más información sobre cada algoritmo.

# Datos de muestra
set.seed(1)
x <- rnorm(100)

# Calcular los cuartiles de x usando el algoritmo 8
quantile(x, type = 8)
        0%        25%        50%        75%       100% 
-2.2146999 -0.5156992  0.1139092  0.6939534  2.4016178 

Representación visual

Es importante tener en cuenta que se puedes utilizar un diagrama de caja y bigotes para visualizar los cuartiles, pero el método utilizado dentro de la función boxplot no es el mismo que el utilizado dentro de quartile, por lo que la salida puede variar ligeramente.

# Datos de muestra
set.seed(1)
x <- rnorm(100)

quartile <- quantile(x)

# Box plot
boxplot(x, col = 4, horizontal = TRUE)
text(quartile[2], 1.25, expression(Q[1]))
text(quartile[3], 1.25, expression(Q[2]))
text(quartile[4], 1.25, expression(Q[3]))

Cuartiles en un box plot en R

Deciles

Los deciles son cuantiles de orden 0.1, 0.2, …, 0.9 y dividen la muestra en 10 partes de igual frecuencia. Para calcularlos, puedes introducir una secuencia de 0 a 1 con paso 0.1 en probs, como se muestra en el siguiente ejemplo.

# Datos de muestra
set.seed(1)
x <- rnorm(100)

# Calcular los deciles de x
quantile(x, probs = seq(0, 1, by = 0.1))
         0%         10%         20%         30%         40%         50%         60%         70%         80%         90%        100% 
-2.21469989 -1.05265747 -0.61386923 -0.37534202 -0.07670313  0.11390916  0.37707993  0.58121734  0.77125360  1.18106508  2.40161776

Percentiles

Los percentiles son cuantiles del orden 0.01, 0.02, … , 0.99 y dividen la muestra en 100 partes de igual frecuencia. Si quieres calcular los percentiles de un vector numérico tendrás que especificar una secuencia de 0 a 1 con paso 0.01 dentro de probs.

# Datos de muestra
set.seed(1)
x <- rnorm(100)

# Calcular los percentiles de x
quantile(x, probs = seq(0, 1, by = 0.01))
          0%           1%           2%           3%           4%           5%           6%           7%           8% 
-2.214699887 -1.991605178 -1.808646490 -1.532008555 -1.472864961 -1.381744198 -1.282620249 -1.255240517 -1.226934278