x <- c(7.6, 3.3, 4.4, 5.8, 9.0, 2.3, 0.9, 3.7, 5.7, 4.4) # Datos
n <- length(x) # Número de observaciones
q1 <- quantile(x, 0.25); q1 # Primer cuartil
## 25%
## 3.4
q2 <- quantile(x, 0.50); q2 # segundo cuartil (mediana)
## 50%
## 4.4
q3 <- quantile(x, 0.70); q3 # Tercer cuartil
## 70%
## 5.73
IQR <- q3 - q1; IQR # Rango intercuartil
## 70%
## 2.33
k <- 1.5 # Tamaño de los _bigotes_
par(mar = c(3.5, 1, 1, 1)) # Parámetros gráficos (márgenes)
plot(0,0, type = 'n', xlim = c(0, 10), axes = F, ylab = '', xlab = '')
axis(1, 0:10); box()
rug(x, lwd = 4, ticksize = 0.1)
segments(q3, -0.3, q3, 0.3, lwd = 3) # Extremo derecho
segments(q1, -0.3, q1, 0.3, lwd = 3) # Extremo izquerdo
segments(q1, 0.3, q3, 0.3, lwd = 3) # Tapa superior
segments(q1, -0.3, q3, -0.3, lwd = 3) # Tapa inferior
# Polígono para darle color
aux.x <- c(q1, q1, q3, q3, q1)
aux.y <- c(-0.3, 0.3, 0.3, -0.3, -0.3)
polygon(aux.x, aux.y, col = '#4DB6AC', lwd = 3)
segments(q2, -0.3, q2, 0.3, lwd = 5) # Mediana
segments(q3+k*IQR, -0.1, q3+k*IQR, 0.1, lwd = 3, col = 'red2') # Línea guía
Con el siguiente código calculamos el número de observaciones mayores o iguales al extremo derecho \(Q_3 + kIQR\) y guardamos la observación más extrema menor al extremo derecho.
aux.d <- sum(q3 + k*IQR <= x); aux.d # Observaciones mayores o iguales a q3 + k*IQR
## [1] 0
lim.d <- sort(x)[n-aux.d]; lim.d # Obsrevación más extrema menor a q3 + k*IQR
## [1] 9
segments(q3, 0, lim.d, 0, lwd = 3, lty = 3) # _Bigote_ derecho
segments(lim.d, -0.15, lim.d, 0.15, lwd = 3) # _Bigote_ derecho
segments(q3+k*IQR, -0.1, q3+k*IQR, 0.1, lwd = 5, col = 'white') # Borrar línea guía
if(aux.d != 0)
{
points(x[q3 + k*IQR <= x], rep(0, aux.d), cex = 1.5, lwd = 3)
}
segments(q1-k*IQR, -0.1, q1-k*IQR, 0.1, lwd = 3, col = 'gray') # Línea guía
Observaciones mayores o iguales al extremo izquierdo \(Q_1 - kIQR\) y guardamos la observación más extrema mayor al extremo izquierdo.
aux.i <- sum(q1 - k*IQR >= x); aux.i # Observaciones menores o iguales a q1 - k*IQR
## [1] 0
lim.i <- sort(x)[1+aux.i]; lim.i # Observación más extrema mayor a q1 - k*IQR
## [1] 0.9
segments(q1, 0, lim.i, 0, lwd = 3, lty = 3) # _Bigote_ izquierdo
segments(lim.i, -0.15, lim.i, 0.15, lwd = 3) # _Bigote_ izquerdo
segments(q1-k*IQR, -0.1, q1-k*IQR, 0.1, lwd = 5, col = 'white') # Borrar línea guía
if(aux.i != 0)
{
points(x[q1 - k*IQR >= x], rep(0, aux.i), cex = 1.5, lwd = 3)
}
gcaja
source('http://sigma.iimas.unam.mx/jsantibanez/Cursos/Inferencia/2018_1/gcaja.R')
gcaja
gcaja(x, k = 0.9, color = '#4DB6AC')
boxplot
de R
boxplot(x, horizontal = T, ylim = c(0, 10), col = 'lightgray', lwd = 3, range = 0.9)
rug(x, lwd = 4, ticksize = 0.1)
Archivo .R
con el código anterior diponible aquí.