Los gráficos de barras apilados suelen ser bien comprendidos por quienes no son estadísticos, siempre que se introduzcan con suavidad. Es útil escalarlos en una métrica común (por ejemplo, 0-100%), con un color gradual para cada categoría si se trata de elementos ordinales (por ejemplo, Likert). Prefiero gráfico de puntos (diagrama de puntos de Cleveland), cuando no hay demasiados elementos y no hay más de 3-5 categorías de respuestas. Pero en realidad es una cuestión de claridad visual. Generalmente proporciono el %, ya que es una medida estandarizada, y sólo informo tanto del % como de los recuentos con un gráfico de barras no apilado. He aquí un ejemplo de lo que quiero decir:
data(Environment, package="ltm")
Environment[sample(1:nrow(Environment), 10),1] <- NA
na.count <- apply(Environment, 2, function(x) sum(is.na(x)))
tab <- apply(Environment, 2, table)/
apply(apply(Environment, 2, table), 2, sum)*100
dotchart(tab, xlim=c(0,100), xlab="Frequency (%)",
sub=paste("N", nrow(Environment), sep="="))
text(100, c(2,7,12,17,22,27), rev(na.count), cex=.8)
mtext("# NA", side=3, line=0, at=100, cex=.8)
Se podría conseguir una mejor representación con lattice
o ggplot2
. Todos los ítems tienen las mismas categorías de respuesta en este ejemplo particular, pero en un caso más general podríamos esperar que fueran diferentes, de modo que mostrarlas todas no parecería redundante como ocurre aquí. No obstante, sería posible dar el mismo color a cada categoría de respuesta para facilitar la lectura.
Pero yo diría que los gráficos de barras apilados son mejores cuando todos los ítems tienen la misma categoría de respuesta, ya que ayudan a apreciar la frecuencia de una modalidad de respuesta en todos los ítems:
También se me ocurre algún tipo de mapa de calor, que es útil si hay muchos artículos con una categoría de respuesta similar.
Las respuestas perdidas (especialmente cuando no son insignificantes o están localizadas en un ítem/pregunta específico) deben ser reportadas, idealmente para cada ítem. Generalmente, el porcentaje de respuestas para cada categoría se calcula sin NA. Esto es lo que se suele hacer en encuesta o psicometría (se habla de "respuestas expresadas u observadas").
P.D. Se me ocurren cosas más rebuscadas como la foto que se muestra a continuación (la primera fue hecha a mano, la segunda es de ggplot2
, ggfluctuation(as.table(tab))
), pero no creo que transmita una información tan precisa como el dotplot o el barchart, ya que las variaciones superficiales son difíciles de apreciar.