-
Notifications
You must be signed in to change notification settings - Fork 42
/
01-visualizacion.Rmd
537 lines (405 loc) · 20.8 KB
/
01-visualizacion.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
\mainmatter
# Principios de visualizacion
## El cuarteto de Ascombe {-}
En 1971 un estadístico llamado Frank Anscombe (fundador del departamento de
Estadística de la Universidad de Yale) publicó cuatro conjuntos de dato. Cada
uno consiste de 11 observaciones. La peculariedad de estos conjuntos es
que tienen las mismas propiedades estadísticas.
Sin embargo, cuando analizamos los datos de manera gráfica en un histograma
encontramos rápidamente que los conjuntos de datos son muy distintos.
:::::: {.cols data-latex=""}
::: {.col data-latex="{0.50\textwidth}"}
```{r, message=FALSE, echo=FALSE, warning=FALSE}
library(tidyverse)
theme_set(theme_minimal())
anscombe_long <- anscombe %>%
mutate(n_obs = 1:n()) %>%
gather(key, value, -n_obs) %>%
separate(key, c("var", "dataset"), 1) %>%
spread(var, value)
ggplot(anscombe_long, aes(x, y)) +
geom_smooth(method = "lm", se = FALSE, size = 0.5) +
geom_point() +
facet_wrap(~dataset)
```
:::
::: {.col data-latex="{0.10\textwidth}"}
\
<!-- an empty Div (with a white space), serving as
a column separator -->
:::
::: {.col data-latex="{0.4\textwidth}"}
<br>
<br>
Media de $x$: 9
Varianza muestral de $x$: 11
Media de $y$: 7.50
Varianza muestral de $y$: 4.12
Correlación entre $x$ y $y$: 0.816
Línea de regresión lineal: $y = 3.00 + 0.500x$
:::
::::::
En la gráfica del primer conjunto de datos, se ve clara una
relación lineal simple con un modelo que cumple los supuestos de
normalidad. La segunda gráfica (arriba a la derecha) muestra unos datos que
tienen una asociación pero definitivamente no es lineal. En la tercera gráfica
(abajo a la izquierda) están puntos alineados perfectamente en una línea recta,
excepto por uno de ellos. En la última gráfica podemos ver un ejemplo en el cual
basta tener una observación atípica para que se produzca un coeficiente de
correlación alto aún cuando en realidad no existe una asociación lineal entre
las dos variables.
<!-- :::::: {.cols data-latex=""} -->
<!-- ::: {.col data-latex="{0.40\textwidth}"} -->
El cuarteto de Ascombe inspiró una técnica reciente para crear datos que comparten las
mismas propiedades estadísticas al igual que en el cuarteto, pero que producen gráficas
muy distintas ([Matejka,
Fitzmaurice](https://www.autodeskresearch.com/publications/samestats)).
<!-- ::: -->
<!-- ::: {.col data-latex="{0.10\textwidth}"} -->
<!-- \ -->
<!-- <!-- an empty Div (with a white space), serving as -->
<!-- a column separator -->
<!-- ::: -->
<!-- ::: {.col data-latex="{0.4\textwidth}"} -->
<!-- ```{r datasaurus_gif, eval=FALSE, echo=FALSE, cache=TRUE} -->
<!-- library(datasauRus) -->
<!-- library(gganimate) -->
<!-- library(animation) -->
<!-- ggplot(datasaurus_dozen, aes(x = x, y = y, frame = dataset)) + -->
<!-- geom_point() + -->
<!-- theme(legend.position = "none") + -->
<!-- transition_states( -->
<!-- dataset, -->
<!-- transition_length = 2, -->
<!-- state_length = 1 -->
<!-- ) + -->
<!-- enter_fade() + -->
<!-- exit_shrink() + -->
<!-- ease_aes('sine-in-out') -->
<!-- anim_save("imges/datasaurus.gif") -->
<!-- ``` -->
```{r, echo=FALSE, cache=TRUE, fig.align="center", out.width="95%", fig,height=10, fig.with=10}
library(datasauRus)
library(gganimate)
library(animation)
datasets_plot <- unique(datasaurus_dozen$dataset)[1:9]
ggplot(datasaurus_dozen %>% filter(dataset %in% datasets_plot), aes(x = x, y = y)) +
geom_point() +
theme(legend.position = "none") +
facet_wrap( ~ dataset) + ylab("") + xlab("")
```
<!-- ::: -->
<!-- :::::: -->
<!-- <div style="clear:both"></div> -->
<!-- <div style= "float:right;padding=10px; top:-10px; width:350px"> -->
<!-- ```{r datasaurus_gif, eval=FALSE, echo=FALSE} -->
<!-- library(datasauRus) -->
<!-- library(gganimate) -->
<!-- library(animation) -->
<!-- ggplot(datasaurus_dozen, aes(x = x, y = y, frame = dataset)) + -->
<!-- geom_point() + -->
<!-- theme(legend.position = "none") + -->
<!-- transition_states( -->
<!-- dataset, -->
<!-- transition_length = 2, -->
<!-- state_length = 1 -->
<!-- ) + -->
<!-- enter_fade() + -->
<!-- exit_shrink() + -->
<!-- ease_aes('sine-in-out') -->
<!-- anim_save("imges/datasaurus.gif") -->
<!-- ``` -->
<!-- ![](images/datasaurus.gif) -->
<!-- </div> -->
<!-- El cuarteto de Ascombe inspiró una técnica para crear datos que comparten las -->
<!-- propiedades estadísticas al igual que en el cuarteto, pero que producen gráficas -->
<!-- muy distintas ([Matejka, -->
<!-- Fitzmaurice](https://www.autodeskresearch.com/publications/samestats)). -->
<!-- <div style="clear:both"></div> -->
## Introducción {-}
La visualización de datos no trata de hacer gráficas “bonitas” o “divertidas”,
ni de simplificar lo complejo o ayudar a una persona “que no entiende mucho” a
entender ideas complejas. Más bien, trata de aprovechar nuestra gran capacidad
de procesamiento visual para exhibir de manera clara aspectos importantes de los
datos.
El siguiente ejemplo de [@tufte06], ilustra claramente la diferencia entre estos
dos enfoques. A la izquierda están gráficas (más o menos típicas de Powerpoint)
basadas en la filosofía de simplificar, de intentar no “ahogar” al lector con
datos. El resultado es una colección incoherente, de bajo contenido, que no
tiene mucho qué decir y que es, “indeferente al contenido y la evidencia”.
A la derecha está una variación del rediseño de Tufte en forma de tabla, que en
este caso particular es una manera eficiente de mostrar claramente los patrones
que hay en este conjunto simple de datos.
¿Qué principios son los que soportan la efectividad de esta tabla sobre la
gráfica de la derecha? Veremos que hay dos conjuntos de principios importantes:
unos relacionados con el diseño y otros con la naturaleza del análisis de datos,
independientemente del método de visualización.
```{r, out.width='88%', echo=FALSE, fig.align="center"}
knitr::include_graphics('images/tufte_cancer.jpg')
```
## Visualización popular de datos {-}
Publicaciones populares (periódicos, revistas, sitios internet) muchas veces
incluyen visualización de datos como parte de sus artículos o reportajes. En
general siguen el mismo patrón que en la visión tradicionalista de la
estadística: sirven más para divertir que para explicar, tienden a explicar
ideas simples y conjuntos chicos de datos, y se consideran como una “ayuda”
para los “lectores menos sofisticados”. Casi siempre se trata de gráficas
triviales (muchas veces con errores graves) que no aportan mucho a artículos que
tienen un nivel de complejidad mucho mayor (es la filosofía: lo escrito para el
adulto, lo graficado para el niño).
```{r, echo=FALSE, fig.align="center", out.width="88%"}
knitr::include_graphics('images/nyt.png')
```
## Teoría de visualización de datos {-}
Existe teoría fundamentada acerca de la visualización. Después del trabajo
pionero de Tukey, los principios e indicadores de Tufte se basan en un estudio
de la historia de la graficación y ejercicios de muestreo de la práctica gráfica
a lo largo de varias disciplinas (¿cuáles son las mejores gráficas? ¿por qué?
El trabajo de Cleveland es orientado a la práctica del análisis de datos
(¿cuáles gráficas nos han ayudado a mostrar claramente los resultados del
análisis?), por una parte, y a algunos estudios de percepción visual.
En resumen, hablaremos de las siguientes guías:
### Principios generales del diseño analítico {-}
Aplicables a una presentación o análisis completos, y como guía para construir
nuevas visualizaciones [@tufte06].
```{block, type='caja'}
**Principio 1.** Muestra comparaciones, contrastes, diferencias.
**Principio 2.** Muestra causalidad, mecanismo, explicación, estructura
sistemática.
**Principio 3.** Muestra datos multivariados, es decir, más de una o dos
variables.
**Principio 4.** Integra palabras, números, imágenes y diagramas.
**Principio 5.** Describe la totalidad de la evidencia. Muestra fuentes usadas
y problemas relevantes.
**Principio 6.** Las presentaciones analíticas, a fin de cuentas, se sostienen o
caen dependiendo de la calidad, relevancia e integridad de su contenido.
```
### Técnicas de visualización {-}
Esta categoría incluye técnicas específicas que dependen de la forma de nuestros
datos y el tipo de pregunta que queremos investigar (@tukey77, @cleveland93,
@cleveland94, @tufte06).
```{block, type='caja'}
**Tipos de gráficas:** cuantiles, histogramas, caja y brazos, gráficas de
dispersión, puntos/barras/ líneas, series de tiempo.
**Técnicas para mejorar gráficas:** Transformación de datos, transparencia,
vibración, banking 45, suavizamiento y bandas de confianza.
**Pequeños múltiplos**
```
### Indicadores de calidad gráfica {-}
Aplicables a cualquier gráfica en particular. Estas son guías concretas y
relativamente objetivas para evaluar la calidad de una gráfica [@tufte86].
```{block, type='caja'}
**Integridad Gráfica.** El factor de engaño, es decir, la distorsión gráfica de
las cantidades representadas, debe ser mínimo.
**Chartjunk.** Minimizar el uso de decoración gráfica que interfiera con la
interpretación de los datos: 3D, rejillas, rellenos con patrones.
**Tinta de datos.** Maximizar la proporción de tinta de datos vs. tinta total de
la gráfica. *For non-data- ink, less is more. For data-ink, less is a bore.*
**Densidad de datos.** Las mejores gráficas tienen mayor densidad de datos, que
es la razón entre el tamaño del conjunto de datos y el área de la gráfica. Las
gráficas se pueden encoger mucho. Percepción visual. Algunas tareas son más
fáciles para el ojo humano que otras [@cleveland94].
```
### Factor de engaño y Chartjunk {-}
:::::: {.cols data-latex=""}
::: {.col data-latex="{0.55\textwidth}"}
El **factor de engaño** es el cociente entre el efecto mostrado en una gráfica y
el efecto correspondiente en los datos. Idealmente, el factor de engaño debe ser
1 (ninguna distorsión).
El **chartjunk** son aquellos elementos gráficos que no corresponden a variación
de datos, o que entorpecen la interpretación de una gráfica.
Estos son los indicadores de calidad más fáciles de entender y aplicar, y
afortunadamente cada vez son menos comunes.
Un diseño popular que califica como chartjunk y además introduce factores de
engaño es el *pie* de 3D. En la gráfica de la derecha, podemos ver como la
rebanada C se ve más grande que la rebanada A, aunque claramente ese no es el
caso (factor de engaño). La razón es la variación en la perspectiva que no
corresponde a variación en los datos (chartjunk).
#### Crítica gráfica: Gráfica de *pie* {-}
Todavía elementos que pueden mejorar la comprensión de nuestra
gráfica de *pie*: se trata de la
decodificiación que hay que hacer categoría - color - cuantificación. Podemos
agregar las etiquetas como se muestra en la serie de la derecha, pero entonces:
¿por qué no mostrar simplemente la tabla de datos? ¿qué agrega el *pie* a la
interpretación?
La deficiencias en el *pie* se pueden ver claramente al intentar graficar más
categorías (13) . En el primer *pie* no podemos distinguir realmente cuáles son
las categorías grandes y cuáles las chicas, y es muy difícil tener una imagen
mental clara de estos datos. Agregar los porcentajes ayuda, pero entonces, otra
vez, preguntamos cuál es el propósito del pie. La tabla de la izquierda hace
todo el trabajo (una vez que ordenamos las categrías de la más grande a la más
chica). Es posible hacer una gráfica de barras como la de abajo a la izquierda.
:::
::: {.col data-latex="{0.05\textwidth}"}
\
<!-- an empty Div (with a white space), serving as
a column separator -->
:::
::: {.col data-latex="{0.45\textwidth}"}
```{r, echo=FALSE, out.width="70%", fig.align="center"}
knitr::include_graphics('images/pies.jpg')
```
:::
::::::
:::::: {.cols data-latex=""}
::: {.col data-latex="{0.40\textwidth}"}
```{r, out.width='100%', echo=FALSE }
knitr::include_graphics('images/barras_pie.jpg')
```
:::
::: {.col data-latex="{0.05\textwidth}"}
\
<!-- an empty Div (with a white space), serving as
a column separator -->
:::
::: {.col data-latex="{0.50\textwidth}"}
Hay otros tipos de **chartjunk** comunes: uno es la textura de barras, por ejemplo.
El efecto es la producción de un efecto moiré que es desagradable y quita la
atención de los datos, como en la gráfica de barras de abajo. Otro común son las
rejillas, como mostramos en las gráficas de la izquierda. Nótese como en estos
casos hay efectos ópticos no planeados que degradan la percepción de los
patrones en los datos.
:::
::::::
```{r, out.width='100%', echo=FALSE }
knitr::include_graphics('images/barras_moire.jpg')
```
### Pequeños múltiplos y densidad gráfica {-}
La densidad de una gráfica es el tamaño del conjunto de datos que se grafica
comparado con el área total de la gráfica. En el siguiente ejemplo, graficamos
en logaritmo-10 de cabezas de ganado en Francia (cerdos, res, ovejas y
caballos). La gráfica de la izquierda es pobre en densidad pues sólo representa
4 datos. La manera más fácil de mejorar la densidad es hacer más chica la
gráfica:
```{r, out.width='100%', echo=FALSE }
knitr::include_graphics('images/france_plot.jpg')
```
La razón de este encogimiento es una que tiene qué ver con las oportunidades perdidas de una gráfica grande. Si repetimos este mismo patrón (misma escala, mismos tipos de ganado) para distintos países obtenemos la siguiente gráfica:
```{r, out.width='100%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/europe_plot.jpg')
```
Esta es una gráfica de puntos. Es útil como sustituto de una gráfica de barras,
y es superior en el sentido de que una mayor proporción de la tinta que se usa
es tinta de datos. Otra vez, mayor proporción de tinta de datos representa más
oportunidades que se pueden capitalizar, como muestra la gráfica de punto y
líneas que mostramos al principio (rendimiento en campos de cebada).
### Más pequeños múltiplos {-}
Los pequeños múltiplos presentan oportunidades para mostrar más acerca
de nuestro problema de interés. Consideramos por ejemplo la relación
de radiación solar y niveles de ozono:
```{r, message=FALSE, warning = FALSE, fig.width = 5, fig.asp=0.7, out.width="55%", fig.align="center"}
ggplot(airquality, aes(x=Solar.R, y=Ozone)) + geom_point() +
geom_smooth(method = "loess", span = 1)
```
En el ejemplo anterior incluyendo
una variable adicional (velocidad del viento) podemos entender más
acerca de la relación de radiación solar y niveles de ozono:
```{r, message=FALSE, warning = FALSE, fig.width = 7, fig.asp=0.4, out.width="95%", fig.align="center"}
airquality$Wind_cat <- cut(airquality$Wind,
breaks = quantile(airquality$Wind, c(0, 1/3, 2/3, 1)),
include.lowest = TRUE)
ggplot(airquality, aes(x=Solar.R, y=Ozone)) + geom_point() +
facet_wrap(~Wind_cat) +
geom_smooth(method = "loess", span = 0.8, se = FALSE,
method.args = list(degree = 1, family="symmetric"))
```
### Tinta de datos {-}
Maximizar la proporción de tinta de datos en nuestras gráficas tiene beneficios
inmediatos. La regla es: si hay tinta que no representa variación en los datos,
o la eliminación de esa tinta no representa pérdidas de significado, esa tinta
debe ser eliminada. El ejemplo más claro es el de las rejillas en gráficas y
tablas:
```{r, out.width='95%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/tinta_datos.jpg')
```
```{r, out.width='63%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/tabla_tinta_datos.jpg')
```
¿Por qué usar grises en lugar de negros? La respuesta tiene qué ver con el
principio de tinta de datos: si marcamos las diferencias sutil pero claramente,
tenemos más oportunidades abiertas para hacer énfasis en lo que nos interesa: a
una gráfica o tabla saturada no se le puede hacer más - es difícil agregar
elementos adicionales que ayuden a la comprensión. Si comenzamos marcando con
sutileza, entonces se puede hacer más. Los mapas geográficos son un buen ejemplo
de este principio.
El espacio en blanco es suficientemente bueno para indicar las fronteras en una
tabla, y facilita la lectura:
```{r, out.width='63%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/tabla_2_tinta_datos.jpg')
```
Para un ejemplo del proceso de rediseño de una tabla, ver [aquí](https://www.darkhorseanalytics.com/blog/clear-off-the-table).
Finalmente, podemos ver un ejemplo que intenta incorporar
los elementos del diseño analítico, incluyendo pequeños múltiplos:
```{r, out.width='95%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/ejemplo_enigh.png')
```
### Decoración {-}
```{r, out.width='95%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/ejemplo_csi.png')
```
### Percepción de escala {-}
Entre la percepción visual y la interpretación de una gráfica están implícitas
tareas visuales específicas que las personas debemos realizar para ver
correctamente la gráfica. En la década de los ochenta, William S. Cleveland y
Robert McGill realizaron algunos experimentos identificando y clasificando estas
tareas para diferentes tipos de gráficos [@cleveland84].
En estos, se le pregunta a la persona que compare dos valores dentro de una
gráfica, por ejemplo, en dos barras en una gráfica de barras, o dos rebanadas de
una gráfica de pie.
```{r, out.width='95%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/cleveland_tasks.png')
```
Los resultados de Cleveland y McGill fueron replicados por Heer y Bostock en
2010 y los resultados se muestran en las gráficas de la derecha:
```{r, out.width='75%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/heer-bostock_results.png')
```
## Ejemplo: gráfica de Minard {-}
Concluimos esta sección con una gráfica que, aunque poco común, ejemplifica
los principios de una buena gráfica, y es reconocida como una de las mejores
visualizaciones de la historia.
> Una gráfica excelente, presenta datos interesantes de forma bien
diseñada: es una cuestión de fondo, de diseño, y estadística... [Se] compone de
ideas complejas comunicadas con claridad, precisión y eficiencia. ... [Es] lo
que da al espectador la mayor cantidad de ideas, en el menor tiempo, con
la menor cantidad de tinta, y en el espacio más pequeño. ... Es casi siempre
multivariado. ... Una excelente gráfica debe decir la verdad acerca de los
datos. (Tufte, 1983)
La famosa visualización de Charles Joseph Minard de la marcha de Napoleón sobre
Moscú, ilustra los principios de una buena gráfica. Tufte señala que esta imagen
"bien podría ser el mejor gráfico estadístico jamás dibujado", y sostiene que
"cuenta una historia rica y coherente con sus datos multivariados, mucho más
esclarecedora que un solo número que rebota en el tiempo". Se representan seis
variables: el tamaño del ejército, su ubicación en una superficie bidimensional,
la dirección del movimiento del ejército y la temperatura en varias fechas
durante la retirada de Moscú".
```{r, out.width='95%', echo=FALSE, fig.align="center" }
knitr::include_graphics('images/minard.png')
```
Hoy en día Minard es reconocido como uno de los principales contribuyentes a la
teoría de análisis de datos y creación de **infografías** con un fundamento
estadístico.
Se grafican 6 variables: el número de tropas de Napoleón, la distancia, la
temperatura, la latitud y la longitud, la dirección en que viajaban las tropas
y la localización relativa a fechas específicas.
La gráfica de Minard, como la describe E.J. Marey, parece "desafiar la pluma del
historiador con su brutal elocuencia", la combinación de datos del mapa, y la
serie de tiempo, dibujados en 1869, "retratan una secuencia de pérdidas
devastadoras que sufrieron las tropas de Napoleón en 1812". Comienza en la
izquierda, en la frontera de Polonia y Rusia, cerca del río Niemen. La línea
gruesa dorada muestra el tamaño de la Gran Armada (422,000) en el momento en que
invadía Rusia en junio de 1812.
El ancho de esta banda indica el tamaño de la armada en cada punto del mapa. En
septiembre, la armada llegó a Moscú, que ya había sido saqueada y dejada
desértica, con sólo 100,000 hombres.
El camino del retiro de Napoleón desde Moscú está representado por la línea
oscura (gris) que está en la parte inferior, que está relacionada a su vez con
la temperatura y las fechas en el diagrama de abajo. Fue un invierno muy frío,
y muchos se congelaron en su salida de Rusia. Como se muestra en el mapa, cruzar
el río Berezina fue un desastre, y el ejército de Napoleón logró regresar a
Polonia con tan sólo 10,000 hombres.
También se muestran los movimientos de las tropas auxiliaries, que buscaban
proteger por atrás y por la delantera mientras la armada avanzaba hacia Moscú.
La gráfica de Minard cuenta una historia rica y cohesiva, coherente con datos
multivariados y con los hechos históricos, y que puede ser más ilustrativa que
tan sólo representar un número rebotando a lo largo del tiempo.