Pregunta

¿Alguien sabe de una manera de generar un diagrama de caja en R con una línea (o otro símbolo) en el valor correspondiente a la media?

Gracias!

¿Fue útil?

Solución

abline(h=mean(x))

para una línea horizontal (v uso en lugar de h para los verticales Si orienta su gráfico de caja horizontal), o

points(mean(x))

para un punto. Usar la pch parámetro para cambiar el símbolo. Es posible que desee colorearlos para mejorar la visibilidad también.

Tenga en cuenta que estos son llamados después de haber dibujado el diagrama de caja.

Si está utilizando la interfaz de fórmula, que tendría que construir el vector de medios. 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 los datos contienen valores que faltan, es posible que desee reemplazar el último argumento de la función tapply con function(x) mean(x,na.rm=T)

Otros consejos

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)

chart.Boxplot de PerformanceAnalytics paquete . Se le permite definir el símbolo para el uso de la media de la distribución.

alt text http: //bm2.genes .nig.ac.jp / RGM2 / R_current / library / PerformanceAnalytics / hombre / imágenes / big_chart.Boxplot_001.png

En base a las respuestas por @ James y @Jyotirmoy Bhattacharya me ocurrió con 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)

(Véase este post para más detalles)

Si desea añadir puntos a diagramas de cajas horizontales, consulte este enviar.

También creo chart.Boxplot es la mejor opción, le da la posición de la media, pero si usted tiene una matriz con retornos todo lo que necesita es una línea de código para obtener todos los diagramas de caja en un solo gráfico.

Aquí hay un pequeño ejemplo 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)

Vuelta Matrix

ret.mat = coredata(returnscc.z)
class(ret.mat)
colnames(ret.mat)
head(ret.mat)

Diagrama de cajas de Retorno Matrix

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 quitar o cambiar el median.symbol. Espero que ayudó. :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top