Apunte 36 — Data storytelling para ejecutivos: del output a la decisión

Analítica de Personas · Semestre otoño 2026 · Semana 16 · Prof. René Gempp

1. El gráfico no habla solo

Hay una creencia peligrosa entre analistas: "los datos hablan por sí solos". No lo hacen. Un gráfico de rotación al 35% no le dice al directorio si eso es bueno o malo, si sube o baja, ni qué hacer al respecto. Esa interpretación la pones . Cole Nussbaumer Knaflic (2015) lo resume: el analista no presenta datos, cuenta una historia con datos.

Esto no es un detalle cosmético. Es la competencia que separa al analista del consultor. La regresión logística más elegante del mundo, si termina en un odds ratio que nadie en la sala sabe leer, no cambió ninguna decisión. Un análisis que el directorio no entiende es un análisis que, para efectos prácticos, no existe.

El cambio de jerarquía de esta semana. Durante quince semanas lo difícil fue el análisis y comunicar era "el último paso". Hoy se invierte: comunicar es la mitad del trabajo, no su epílogo. El analista que lo entiende tarde descubre que su mejor modelo murió en un slide que nadie comprendió.

2. El framework: contexto → hallazgo → implicancia → recomendación

Toda historia ejecutiva tiene cuatro movimientos. Saltarse cualquiera la rompe.

MovimientoPreguntaEjemplo (Soporte Técnico)
Contexto¿De qué hablamos y por qué importa ahora?"Soporte es el 22% de la dotación y el primer contacto con el cliente."
Hallazgo¿Qué muestran los datos?"Su rotación llegó a 35% y su eNPS cayó de +13 a −23 en un año."
Implicancia¿Y qué? ¿Qué pasa si no hacemos nada?"A este ritmo perdemos un tercio del equipo de cara al cliente al año."
Recomendación¿Qué hacemos, quién y cuándo?"Auditoría de carga y liderazgo en 30 días; bandas salariales en 60."
La prueba del "¿y qué?". El error clásico es quedarse en el hallazgo ("la rotación es 35%") y creer que el dato habla solo. Toma cada hallazgo y pregúntale "¿y qué?" hasta que llegues a una acción. Un hallazgo sin recomendación es trivia; una recomendación sin hallazgo es opinión. La historia los une.

El orden importa por una razón cognitiva: el directorio necesita el contexto antes que el número, o el número no significa nada. "35%" sin saber que Soporte atiende al cliente es ruido. Y necesita la recomendación al final, porque vino a la reunión a decidir, no a aprender estadística.

3. Diseño visual que comunica

Tres principios, heredados de las Clases 1–2 y del Apunte 16, que culminan aquí.

Razón dato-tinta (Tufte, 2001)

Cada gota de tinta debe representar un dato. Bordes triples, sombras 3D, fondos degradados, leyendas redundantes: todo eso es chartjunk que compite con la información. Maximiza la razón dato-tinta; borra todo lo que no informa. Un dashboard ejecutivo limpio se ve casi vacío — y eso es correcto.

Percepción gráfica (Cleveland & McGill, 1984)

El ojo humano compara posiciones a lo largo de un eje común con mucha más precisión que ángulos o áreas. De ahí la jerarquía de gráficos: barras y líneas (posición) > burbujas (área) > tortas (ángulo). El gráfico de torta, salvo para 2–3 categorías, casi siempre pierde contra una barra. Un dashboard de directorio se construye con barras, líneas y números grandes, no con tortas y gauges decorativos.

Color con propósito

En la paleta del curso (Warm Terracotta), el color no decora: codifica. Terracota/rojo para alertas (rotación alta, eNPS negativo), teal/verde para lo saludable, navy para lo neutral. Un KPI que está mal se ve mal. El color es el primer canal que procesa el directorio, antes de leer un solo número.

# El formateo también comunica: ejes legibles, no "0.272"
scale_y_continuous(labels = scales::percent_format(accuracy = 1))
scale_x_continuous(labels = scales::label_comma())
scale_y_continuous(labels = scales::label_dollar(prefix = "$"))
Un número crudo en un eje es una falta de respeto al lector. "0.272" obliga al director a traducir mentalmente a "27%". Hazlo tú: scales::percent(). Cada traducción que le ahorras es atención que dedica a tu recomendación.

4. Traducir el output estadístico al lenguaje del negocio

La competencia más rara y más valiosa: convertir el resultado técnico en una frase que un director sin formación estadística entienda y sobre la que pueda decidir.

Output técnicoTraducción ejecutiva
OR = 2,3 (baja satisfacción)"Quien está insatisfecho tiene más del doble de probabilidad de renunciar."
HR = 1,8 (Soporte)"La gente de Soporte se va a una tasa 80% mayor que el resto, mes a mes."
OR = 0,7 (cada punto de satisfacción)"Cada punto de satisfacción reduce ~30% el riesgo de renuncia."
p < .001, d = 0,15"La diferencia es clara estadísticamente, pero tan pequeña que no cambia ninguna decisión."
R² = 0,12"El modelo explica una parte modesta: hay factores que aún no medimos."
eNPS = −23"Por cada persona que recomendaría trabajar aquí, hay más de dos que no lo harían."

Reglas prácticas de traducción de un odds ratio y un hazard ratio:

Traducir no es inflar. Un d de Cohen de 0,15 con p < .001 es significativo y trivial a la vez; el storyteller honesto dice las dos cosas. La línea entre "comunicar con claridad" y "exagerar para impresionar" es la línea ética de la profesión (se retoma en la Clase 17). Y cuidado con la brecha salarial: reportar la cruda (−6,8%) sin la ajustada de la Clase 5 (−7,8%) es técnicamente cierto y comunicacionalmente engañoso. Da ambos números y deja que el contraste cuente la historia.

5. Exportar al mundo del directorio: officer y openxlsx

El directorio no abre RStudio. Vive en Word, Excel y PowerPoint. La reproducibilidad termina donde empieza el copy-paste manual — y ahí se rompe. Dos paquetes cierran la brecha.

Word con officer

Genera un .docx desde R, capa por capa, con el mismo espíritu del pipe:

library(officer)

memo <- read_docx() |>
  body_add_par("Memo ejecutivo — Estado de personas", style = "heading 1") |>
  body_add_par(historia_soporte, style = "Normal") |>
  body_add_gg(value = g_enps_depto, height = 3.5) |>   # inserta el gráfico
  body_add_table(value = tabla_deptos)                  # inserta una tabla

print(memo, target = "Memo_Ejecutivo_InnovaCo.docx")

Funciones clave: read_docx() abre un documento (en blanco o una plantilla con el membrete de la empresa); body_add_par() agrega texto con un estilo; body_add_gg() incrusta un ggplot; body_add_table() agrega una tabla; print(target=) escribe el archivo.

Excel con openxlsx (varias hojas)

Genera un .xlsx con formato — colores, formatos de número y varias hojas — sin depender de Java (a diferencia del viejo paquete xlsx). Aquí está la potencia de exportar por código: un libro completo, cada hoja con su formato, reproducible. Un helper evita repetir el estilado en cada hoja:

library(openxlsx)

wb  <- createWorkbook()
hdr <- createStyle(fontColour = "#FFFFFF", fgFill = "#1B2A4A",
                   textDecoration = "bold", halign = "center")

# helper: agrega una hoja con encabezado, panel congelado y formatos
add_hoja <- function(nombre, df, pct = NULL, clp = NULL) {
  addWorksheet(wb, nombre)
  writeData(wb, nombre, df, headerStyle = hdr)
  freezePane(wb, nombre, firstRow = TRUE)
  setColWidths(wb, nombre, cols = 1:ncol(df), widths = "auto")
  if (!is.null(pct)) addStyle(wb, nombre, createStyle(numFmt = "0.0%"),
    rows = 2:(nrow(df)+1), cols = pct, gridExpand = TRUE, stack = TRUE)
  if (!is.null(clp)) addStyle(wb, nombre, createStyle(numFmt = "$#,##0"),
    rows = 2:(nrow(df)+1), cols = clp, gridExpand = TRUE, stack = TRUE)
}

add_hoja("Resumen",          resumen_kpi)
add_hoja("Por departamento", tabla_deptos, pct = 3, clp = 4)
add_hoja("Panel mensual",    kpis_mes, pct = c(4, 6))
add_hoja("Detalle activos",  detalle, clp = 6)

saveWorkbook(wb, "Reporte_InnovaCo.xlsx", overwrite = TRUE)
Del libro al botón de descarga. Ese .xlsx multi-hoja puede ofrecerse en un HTML con downloadthis::download_file(path = "Reporte_InnovaCo.xlsx", ...), que incrusta el archivo tal cual. Ver clase16_mini_reporte.qmd para el demo completo (tabla gt + DT con botones + downloadthis).
¿Cuándo vale la pena automatizar la exportación? La primera vez, exportar con officer/openxlsx cuesta más que copiar-pegar. Pero el reporte del directorio se actualiza cada trimestre. A la segunda vez, el flujo reproducible ya ganó: vuelves a correr el script con los datos nuevos y el libro (con sus cuatro hojas formateadas) se regenera idéntico, sin errores de transcripción. La pregunta no es "¿cuánto cuesta?" sino "¿cuántas veces voy a repetir esto?".

6. La presentación de tres minutos

El ejercicio de la clase: toma tu mejor análisis del semestre y cuéntalo en tres minutos. Estructura sugerida, un minuto por bloque más cierre:

  1. (0:00–0:30) Contexto + hallazgo en una frase. "Soporte Técnico, que atiende a nuestros clientes, está perdiendo gente a un ritmo del 35% anual."
  2. (0:30–1:30) Una visualización, una idea. El gráfico de eNPS desagregado. No expliques cómo lo hiciste; muestra qué dice.
  3. (1:30–2:30) Implicancia cuantificada. "Eso significa reemplazar a uno de cada tres cada año; el costo de reemplazo ronda los $X."
  4. (2:30–3:00) Recomendación accionable. Qué, quién, cuándo. Tres acciones máximo.
Una idea por slide. Duarte (2010) y Knaflic (2015) coinciden: si un slide tiene dos ideas, tiene una de más. El directorio recuerda una cosa por lámina, en el mejor de los casos. Decide cuál es esa cosa y borra el resto.

7. La línea ética: comunicar vs. manipular

Un dashboard es un instrumento de poder: decide qué se ve y qué no, qué número va arriba y grande, cuál queda escondido en una pestaña que nadie abre. Las mismas herramientas que comunican con claridad pueden manipular:

Todo eso es técnicamente posible. ggplotly() no tiene moral; el criterio lo pones tú. La diferencia entre informar y manipular no está en la herramienta sino en la intención y la honestidad de quien la usa. El curso planta aquí la pregunta que la Clase 17 desarrolla: ¿es ético todo lo que podemos hacer con estos datos?

8. Checklist de storytelling

9. Referencias

Cleveland, W. S., & McGill, R. (1984). Graphical perception: Theory, experimentation, and application to the development of graphical methods. Journal of the American Statistical Association, 79(387), 531–554.
Duarte, N. (2010). Resonate: Present visual stories that transform audiences. Wiley.
Knaflic, C. N. (2015). Storytelling with data: A data visualization guide for business professionals. Wiley.
Tufte, E. R. (2001). The visual display of quantitative information (2.ª ed.). Graphics Press.
Wilke, C. O. (2019). Fundamentals of data visualization. O'Reilly.