studio - Cuadro de caja en R que muestra la media
plot en r (5)
Con ggplot2
:
p<-qplot(spray,count,data=InsectSprays,geom=''boxplot'')
p<-p+stat_summary(fun.y=mean,shape=1,col=''red'',geom=''point'')
print(p)
¿Alguien sabe de una forma de generar un diagrama de caja en R con una línea (u otro símbolo) en el valor correspondiente a la media?
¡Gracias!
En base a las respuestas de @James y @Jyotirmoy Bhattacharya, se me ocurrió esta solución:
zx <- replicate (5, rnorm(50))
zx_means <- (colMeans(zx, na.rm = TRUE))
boxplot(zx, horizontal = FALSE, outline = FALSE)
points(zx_means, pch = 22, col = "darkgrey", lwd = 7)
(Ver this publicación para más detalles)
Si desea agregar puntos a los gráficos de cajas horizontales, consulte this publicación.
También creo que chart.Boxplot es la mejor opción, te da la posición de la media, pero si tienes una matriz con retornos, todo lo que necesitas es una línea de código para obtener todos los diagramas de caja en un gráfico.
Aquí hay un pequeño ejemplo de cartera de ETF.
library(zoo)
library(PerformanceAnalytics)
library(tseries)
library(xts)
VTI.prices = get.hist.quote(instrument = "VTI", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01",
compression = "m", retclass = c("zoo"))
VEU.prices = get.hist.quote(instrument = "VEU", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01",
compression = "m", retclass = c("zoo"))
VWO.prices = get.hist.quote(instrument = "VWO", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01",
compression = "m", retclass = c("zoo"))
VNQ.prices = get.hist.quote(instrument = "VNQ", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01",
compression = "m", retclass = c("zoo"))
TLT.prices = get.hist.quote(instrument = "TLT", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01",
compression = "m", retclass = c("zoo"))
TIP.prices = get.hist.quote(instrument = "TIP", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01",
compression = "m", retclass = c("zoo"))
index(VTI.prices) = as.yearmon(index(VTI.prices))
index(VEU.prices) = as.yearmon(index(VEU.prices))
index(VWO.prices) = as.yearmon(index(VWO.prices))
index(VNQ.prices) = as.yearmon(index(VNQ.prices))
index(TLT.prices) = as.yearmon(index(TLT.prices))
index(TIP.prices) = as.yearmon(index(TIP.prices))
Prices.z=merge(VTI.prices, VEU.prices, VWO.prices, VNQ.prices,
TLT.prices, TIP.prices)
colnames(Prices.z) = c("VTI", "VEU", "VWO" , "VNQ", "TLT", "TIP")
returnscc.z = diff(log(Prices.z))
start(returnscc.z)
end(returnscc.z)
colnames(returnscc.z)
head(returnscc.z)
Matriz de retorno
ret.mat = coredata(returnscc.z)
class(ret.mat)
colnames(ret.mat)
head(ret.mat)
Diagrama de caja de la matriz de retorno
chart.Boxplot(returnscc.z, names=T, horizontal=TRUE, colorset="darkgreen", as.Tufte =F,
mean.symbol = 20, median.symbol="|", main="Return Distributions Comparison",
element.color = "darkgray", outlier.symbol = 20,
xlab="Continuously Compounded Returns", sort.ascending=F)
Puede intentar cambiar el mean.symbol y eliminar o cambiar el median.symbol. Espero que haya ayudado. :)
Verifique el chart.Boxplot . chart.Boxplot del paquete PerformanceAnalytics
. Le permite definir el símbolo a usar para la media de la distribución.
abline(h=mean(x))
para una línea horizontal (use v en lugar de h para la vertical si orienta su casilla de cuadro horizontalmente), o
points(mean(x))
por un punto. Use el parámetro pch
para cambiar el símbolo. Es posible que desee colorearlos para mejorar la visibilidad también.
Tenga en cuenta que estos se invocan después de dibujar el diagrama de caja.
Si está utilizando la interfaz de fórmulas, debería construir el vector de medias. Por ejemplo, tomando el primer ejemplo de ?boxplot
:
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
means <- tapply(InsectSprays$count,InsectSprays$spray,mean)
points(means,col="red",pch=18)
Si sus datos contienen valores perdidos, es posible que desee reemplazar el último argumento de la función de tapply
con la function(x) mean(x,na.rm=T)