12 votos

¿Planificación de estadísticas de resumen con media, sd, min y max?

Tengo formación en economía y, por lo general, en esa disciplina los estadísticos resumidos de las variables se presentan en una tabla. Sin embargo, quiero representarlos gráficamente.

Podría modificar un diagrama de caja para permitirle mostrar la media, la desviación estándar, el mínimo y el máximo, pero no deseo hacerlo, ya que los diagramas de caja se utilizan tradicionalmente para mostrar las medianas y los Q1 y Q3.

Todas mis variables tienen diferentes escalas. Sería estupendo si alguien pudiera sugerir una forma significativa de trazar estos estadísticos de resumen. Puedo trabajar con R o Stata.

1 votos

Bienvenido a la lista. Si pregunta por R comandos entonces esta pregunta está fuera de tema aquí. Pero parece que estás preguntando principalmente sobre cómo sería una buena trama y en segundo lugar sobre cómo crearla. Si es así, sugiero eliminar "con R" de su título y tal vez indicando, en el cuerpo, que usted tiene R disponible.

17voto

ismail Puntos 19146

Hay una razón por la que el boxplot de Tukey es universal, puede aplicarse a datos derivados de diferentes distribuciones, desde la gaussiana hasta la de Poisson, etc. La mediana, la MAD (desviación absoluta de la mediana) o el IQR (rango intercuartil) son medidas más robustas cuando los datos se desvían de la normalidad. Sin embargo, la media y la DE son más propensas a los valores atípicos, y deben interpretarse con respecto a la distribución subyacente. La solución que se presenta a continuación es más adecuada para datos normales o log-normales. Puede consultar una selección de medidas robustas aquí y explorar el paquete WRS R aquí .

# simulating dataset
set.seed(12)
d1 <- rnorm(100, sd=30)
d2 <- rnorm(100, sd=10)
d <- data.frame(value=c(d1,d2), condition=rep(c("A","B"),each=100))

# function to produce summary statistics (mean and +/- sd), as required for ggplot2
data_summary <- function(x) {
   mu <- mean(x)
   sigma1 <- mu-sd(x)
   sigma2 <- mu+sd(x)
   return(c(y=mu,ymin=sigma1,ymax=sigma2))
}

# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) + 
geom_crossbar(stat="summary", fun.y=data_summary, fun.ymax=max, fun.ymin=min)

Además, al añadir + geom_jitter() o + geom_point() al código anterior puede visualizar simultáneamente los valores de los datos en bruto.


Gracias a @Roland por señalar el Parcela de violín . Tiene la ventaja de visualizar la densidad de probabilidad al mismo tiempo que la estadística de resumen:

# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) + 
geom_violin() + stat_summary(fun.data=data_summary)

A continuación se muestran ambos ejemplos.

enter image description here

2 votos

Preferiría una trama de violines antes que esto.

1 votos

Dependiendo del propósito del análisis, la media y la desviación estándar es exactamente lo que necesitas. Sin embargo, no entiendo la incoherencia del summary.data.frame de R. Muestra las medias pero no las desviaciones estándar. No se me ocurren muchas situaciones en las que las medias sean útiles y las desviaciones estándar sean engañosas.

0 votos

De hecho, a veces es necesario ver la media y la DE para poder juzgar si son útiles....

9voto

AdamSane Puntos 1825

Hay un sinfín de posibilidades.

Una opción que he visto utilizar y que evita la confusión con los boxplots (suponiendo que se disponga de las medianas o de los datos originales) es trazar un boxplot y añadir un símbolo que marque la media (a ser posible con una leyenda que lo haga explícito). Esta versión del boxplot que añade un marcador para la media se menciona, por ejemplo, en Frigge et al (1989) [1] :

Boxplots showing mean marked as well

El gráfico de la izquierda muestra un símbolo + como marcador de la media y el gráfico de la derecha utiliza un triángulo en el borde, adaptando el marcador de la media del gráfico del haz y el fulcro de Doane y Tracy [2].

Ver también este post de SO y este

Si no tiene (o realmente no quiere mostrar) la mediana será necesario un nuevo gráfico y entonces sería bueno que fuera visualmente distinto de un boxplot.

Quizás algo así:

enter image description here

... que traza el mínimo, el máximo, la media y el promedio $\pm$ sd para cada muestra utilizando diferentes símbolos y luego dibuja un rectángulo, o quizás mejor, algo así:

enter image description here

... que traza el mínimo, el máximo, la media y el promedio $\pm$ sd para cada muestra utilizando diferentes símbolos y luego dibuja una línea (de hecho en la actualidad esto es en realidad un rectángulo como antes, pero dibujado estrecho; debería cambiarse para dibujar una línea)

Si sus números están en escalas muy diferentes, pero todos son positivos, podría considerar trabajar con troncos, o podría hacer pequeños múltiplos con escalas diferentes (pero claramente marcadas)

Código (actualmente no es un código particularmente "bonito", pero por el momento esto es sólo una exploración de ideas, no es un tutorial sobre cómo escribir un buen código R):

fivenum.ms=function(x) {r=range(x);m=mean(x);s=sd(x);c(r[1],m-s,m,m+s,r[2])}
eps=.015

plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-1.2*eps,fivenum.ms(A)[2],1+1.4*eps,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-1.2*eps,fivenum.ms(B)[2],2+1.4*eps,fivenum.ms(B)[4],lwd=2,col=4,den=0)

plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-eps/9,fivenum.ms(A)[2],1+eps/3,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-eps/9,fivenum.ms(B)[2],2+eps/3,fivenum.ms(B)[4],lwd=2,col=4,den=0)

[1] Frigge, M., D. C. Hoaglin y B. Iglewicz (1989),
"Algunas implementaciones del diagrama de caja".
Estadístico americano , 43 (febrero): 50-54.

[2] Doane D.P. y R.L. Tracy (2000),
"Uso de pantallas Beam y Fulcrum para explorar datos"
Estadístico americano , 54 (4):289-290, noviembre

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