43 votos

Cómo encontrar los cuartiles en R

Estoy trabajando con un libro de texto de estadística mientras aprendo R y me he encontrado con un obstáculo en el siguiente ejemplo:

enter image description here

Después de ver ?quantile He intentado recrear esto en R con lo siguiente:

> nuclear <- c(7, 20, 16, 6, 58, 9, 20, 50, 23, 33, 8, 10, 15, 16, 104)
> quantile(nuclear)
   0%   25%   50%   75%  100% 
  6.0   9.5  16.0  28.0 104.0 

Dado que el texto y R tienen resultados diferentes, deduzco que R está utilizando la mediana en el cálculo del primer y tercer cuartil.

Pregunta:

¿Debo incluir la mediana en el cálculo del primer y tercer cuartil?

Más concretamente, ¿el libro de texto o la R lo tienen correcto? Si el libro de texto lo tiene correcto, ¿hay una manera de conseguirlo adecuadamente en R?

Gracias de antemano.

56voto

jldugger Puntos 7490

Su libro de texto es confuso. Muy pocas personas o programas informáticos definen los cuartiles de esta manera. (Tiende a hacer que el primer cuartil sea demasiado pequeño y el tercer cuartil demasiado grande).

Le site quantile función en R implementa nueve diferentes formas de calcular los cuantiles Para ver cuál de ellos, si es que hay alguno, corresponde a este método, empecemos por implementarlo. A partir de la descripción podemos escribir un algoritmo, primero matemáticamente y luego en R :

  1. Ordenar los datos $x_1 \le x_2 \le \cdots \le x_n$ .

  2. Para cualquier conjunto de datos el mediana es su valor medio cuando hay un número impar de valores; en caso contrario, es la media de los dos valores medios cuando hay un número par de valores. R 's median lo calcula.

    El índice del valor medio es $m = (n+1)/2$ . Cuando no es un número entero, $(x_l + x_u)/2$ es la mediana, donde $l$ y $u$ son $m$ redondeado hacia abajo y hacia arriba. De lo contrario, cuando $m$ es un número entero, $x_m$ es la mediana. En ese caso tome $l=m-1$ y $u=m+1$ . En cualquier caso $l$ es el índice del valor de los datos inmediatamente a la izquierda de la mediana y $u$ es el índice del valor de los datos inmediatamente a la derecha de la mediana.

  3. El "primer cuartil" es la mediana de todos los $x_i$ para lo cual $i \le l$ . El "tercer cuartil" es la mediana de $(x_i)$ para lo cual $i \ge u$ .

Aquí hay una implementación. Puede ayudarte a hacer los ejercicios de este libro de texto.

quart <- function(x) {
  x <- sort(x)
  n <- length(x)
  m <- (n+1)/2
  if (floor(m) != m) {
    l <- m-1/2; u <- m+1/2
  } else {
    l <- m-1; u <- m+1
  }
  c(Q1=median(x[1:l]), Q3=median(x[u:n]))
}

Por ejemplo, la salida de quart(c(6,7,8,9,10,15,16,16,20,20,23,33,50,58,104)) está de acuerdo con el texto:

Q1 Q3 
 9 33 

Calculemos los cuartiles de algunos conjuntos de datos pequeños utilizando los diez métodos: los nueve de R y la del libro de texto:

y <- matrix(NA, 2, 10)
rownames(y) <- c("Q1", "Q3")
colnames(y) <- c(1:9, "Quart")
for (n in 3:5) {
  j <- 1
  for (i in 1:9) {
    y[, i] <- quantile(1:n, probs=c(1/4, 3/4), type=i)
  }
  y[, 10] <- quart(1:n)
  cat("\n", n, ":\n")
  print(y, digits=2)
}

Cuando se ejecuta esto y se comprueba, se encuentra que los valores del libro de texto no coinciden con tout de la R para los tres tamaños de muestra. (El patrón de desacuerdos continúa en los ciclos del tercer periodo, lo que demuestra que el problema persiste por muy grande que sea la muestra).

Es posible que el libro de texto haya malinterpretado el método de John Tukey para calcular las "bisagras" (también conocido como "cuartos"). La diferencia es que al dividir el conjunto de datos en torno a la mediana, incluye la mediana en ambas mitades. Eso produciría $9.5$ y $28$ para el conjunto de datos del ejemplo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X