Aquí hay una posible solución con base R gráficos:
n <- 1000
x <- runif(n, 0, 100)
y <- 1.1*x + rnorm(n)
library(Hmisc)
xq <- cut2(x, g=10, levels.mean=TRUE)
ym <- tapply(y, xq, mean)
# display the mean for each decile
plot(as.numeric(levels(xq)), ym, pch="x", xlab="x", ylab="y")
# add the boxplots
boxplot(y ~ xq, add=TRUE, at=as.numeric(levels(xq)), axes=FALSE)
abline(v=cut2(x, g=10, onlycuts=TRUE))
Si los datos son los datos.marco, sólo tiene que añadir un data=
argumento al llamar boxplot()
.
Usted puede jugar con la boxwex
argumento para aumentar diagramas de caja anchos. Si prefiere quedarse en el valor predeterminado cut()
función, usted probablemente puede analizar los valores de la derecha de la deciles como en el código siguiente (seguro que hay un modo más limpio para hacer eso!!!):
xq <- cut(x, quantile(x, seq(0, 1, by=.1)))
vx <- gsub("\\(", "", unlist(strsplit(levels(xq), ","))[seq(1, 18, by=2)])
Un simple ggplot solución podría tener este aspecto:
xy <- data.frame(x=x, y=y)
ggplot(xy, aes(x, y, group=xq)) + geom_boxplot() + xlim(0, 100)
No sé de ningún paquete para "decil parcelas", pero me gustaría recomendar a la bpplt()
y panel.bpplot()
de la Hmisc paquete. E. g., intente esto
library(lattice)
bwplot(xq ~ y, panel=panel.bpplot, probs=.25, datadensity=TRUE)