class: left, middle, my-title, title-slide # {8:30}§2v|0i|2s|3u|2a|1l|0[-]i|1z|2a|1c|3[++]i|2o|1n|2{8abril}[26°c[10°c] ## desde el análsis de datos ###
Joshua Kunst
@jbkunst
--- class: left top background-image: url(imgs/hello.gif) background-size: 100% # Hola! <br/> Soy Joshua <style type="text/css"> @import url('https://fonts.cdnfonts.com/css/datalegreya'); .title-slide { background-image: url(imgs/title-slide-bg.png); background-size: cover; } .title-slide > h1, .title-slide > h2, .remark__tile-view__header { font-family: 'Datalegreya', sans-serif; font-weight: 400; } .title-slide > h1, .remark__tile-view__header { font-size: 6em; } .title-slide > h1, .title-slide > h2 { padding: 0px; margin: 0px; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } .highlight-last-item > ul > li, .highlight-last-item > ol > li { opacity: 0.5; } .highlight-last-item > ul > li:last-of-type, .highlight-last-item > ol > li:last-of-type { opacity: 1; } </style> --- class: highlight-last-item # Hola! <br/> Soy Joshua -- - Soy estadístico. -- - Me gusta programar (en R!). -- - Escribo código para comer. Y como para escribir código. -- - Mi __misión__ es motivarlos en los que veremos hoy! --- class: left top background-image: url(imgs/yay.gif) background-size: 100% # <span style="background-color:white;margin:5px">Yay!</span> --- # Visualización en el análisis de datos <br> <br> <img src="imgs/data-science.svg" width="80%" style="display: block; margin: auto;" /> --- # Visualización __de datos__ Herramienta que codifica información a través... <br> <img src="imgs/data-viz.jpg" width="60%" style="display: block; margin: auto;" /> --- # Visualización __de datos__ Cada atributo de un círculo -posición, tamaño- es representado por un valor de los datos. <br> <img src="imgs/viz-mapping-vars.png" width="70%" style="display: block; margin: auto;" /> --- # Antes de seguir Un poco de jerga: -- - Una __variable__ es una cantidad, que puede ser medida: estatura, magnitud de un sismo, velocidad. - Un __valor__ es un estado de la variable cuando se mide: 1.20 metros, 8° Richter. - Una __observación__ o caso es un conjunto de mediciones -no de la misma variable necesariamente- pero si en un mismo instante y a un mismo objeto. -- <img src="imgs/tidy-1.png" width="70%" style="display: block; margin: auto;" /> --- class: left middle background-image: url(imgs/legobricks.jpg) background-size: 100% # <span style="background-color:white;margin:5px">Un primer ejemplo</span> --- # Datos <img src="imgs/legoscsv.png" width="90%" style="display: block; margin: auto;" /> --- # Explorar ¿Qué vemos? <img src="imgs-r/knitr-img-unnamed-chunk-7-1.svg" style="display: block; margin: auto;" /> --- # Intento inicial Codificamos mayor información. <img src="imgs-r/knitr-img-unnamed-chunk-8-1.svg" style="display: block; margin: auto;" /> --- # Otro intento Cada visualización cuenta una historia distinta. <img src="imgs-r/knitr-img-unnamed-chunk-9-1.svg" style="display: block; margin: auto;" /> --- # Otro intento 2 O podemos concentrarnos en el grueso antes que los detalles... <img src="imgs-r/knitr-img-unnamed-chunk-10-1.svg" style="display: block; margin: auto;" /> --- # Otro intento 2 O podemos concentrarnos en el grueso antes que los detalles... <img src="imgs-r/knitr-img-unnamed-chunk-11-1.svg" style="display: block; margin: auto;" /> --- # O intento 3 O simplemente contar una historia más clara/sencilla, pero no menos importante. <img src="imgs-r/knitr-img-unnamed-chunk-12-1.svg" style="display: block; margin: auto;" /> --- class: right top background-image: url(imgs/metro.jpg) background-size: 100% # <span style="color:white">Entendimiento de los datos <br/>con la visualización</span> --- # Datos Ingresos de usuarios a estaciones de metros cada media hora. <img src="imgs/metrocsv.png" width="45%" style="display: block; margin: auto;" /> --- # Partamos por lo simple Visualicemos los datos de una estación: <img src="imgs-r/knitr-img-unnamed-chunk-14-1.svg" style="display: block; margin: auto;" /> --- # ¿Simple? Es bueno equivocarse (?). <img src="imgs-r/knitr-img-unnamed-chunk-15-1.svg" style="display: block; margin: auto;" /> --- # Ahora sí ?? Quizás mucha **tinta**? (_Data-Ink Ratio_). <img src="imgs-r/knitr-img-unnamed-chunk-16-1.svg" style="display: block; margin: auto;" /> --- # Ahora sí!! Hay ciertas convenciones que no son malas seguir. <img src="imgs-r/knitr-img-unnamed-chunk-17-1.svg" style="display: block; margin: auto;" /> --- # Combinemos Importante observar patrones/relaciones en los datos. <img src="imgs-r/knitr-img-unnamed-chunk-18-1.svg" style="display: block; margin: auto;" /> --- # Correlación Es una _métrica_ de asociación lineal. Nos ayuda a _cuantificar_ la asociación. -- <img src="imgs-r/knitr-img-unnamed-chunk-19-1.svg" style="display: block; margin: auto;" /> --- # Correlación Un valor calculado con dos valores numéricos. Va de -1 a 1. <img src="imgs-r/knitr-img-unnamed-chunk-20-1.svg" style="display: block; margin: auto;" /> --- # Entonces... <img src="imgs-r/knitr-img-unnamed-chunk-21-1.svg" style="display: block; margin: auto;" /> --- # Otro par de estaciones <img src="imgs-r/knitr-img-unnamed-chunk-22-1.svg" style="display: block; margin: auto;" /> --- # Correlaciones Calculamos con 106 estaciones 11,130 correlaciones. Visualización vía __heatmap__. -- <img src="imgs-r/knitr-img-unnamed-chunk-24-1.svg" style="display: block; margin: auto;" /> --- # Correlaciones El orden, en este caso, importa. <img src="imgs-r/knitr-img-unnamed-chunk-25-1.svg" style="display: block; margin: auto;" /> --- # Redes y comunidades Considerando las 250 correlaciones más altas realizamos una red donde el peso del vértice es la correlación y el tamaño es la cantidad de subidas. <img src="imgs-r/knitr-img-unnamed-chunk-27-1.svg" style="display: block; margin: auto;" /> --- # Reducción de Dimensionalidad Hasta ahora hemos usado solamente *correlaciones* que miden asociacion lineal y no es un indicador necesariamente robusto para usarlo como métrica de distancia. -- Usaremos todos los datos por estacion y usaremos __UMAP__, un algoritmo para _resumir_ toda la información en *2* columnas/variables. -- Lleva de una tabla con muchas columnas por observación a 2 columnas: <small><small><small><small><small><small> .pull-left[ <table> <thead> <tr> <th style="text-align:left;"> paraderosubida </th> <th style="text-align:right;"> 05:30 </th> <th style="text-align:right;"> 06:00 </th> <th style="text-align:right;"> 06:30 </th> <th style="text-align:right;"> 07:00 </th> <th style="text-align:right;"> 07:30 </th> <th style="text-align:right;"> 08:00 </th> <th style="text-align:right;"> 08:30 </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> ALCANTARA </td> <td style="text-align:right;"> 2.6 </td> <td style="text-align:right;"> 13.2 </td> <td style="text-align:right;"> 53.4 </td> <td style="text-align:right;"> 184.8 </td> <td style="text-align:right;"> 364.0 </td> <td style="text-align:right;"> 546.2 </td> <td style="text-align:right;"> 478.6 </td> </tr> <tr> <td style="text-align:left;"> BAQUEDANO L1 </td> <td style="text-align:right;"> 86.6 </td> <td style="text-align:right;"> 125.4 </td> <td style="text-align:right;"> 208.4 </td> <td style="text-align:right;"> 397.8 </td> <td style="text-align:right;"> 521.6 </td> <td style="text-align:right;"> 589.0 </td> <td style="text-align:right;"> 561.2 </td> </tr> <tr> <td style="text-align:left;"> BAQUEDANO L5 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 7.2 </td> <td style="text-align:right;"> 26.2 </td> <td style="text-align:right;"> 95.6 </td> <td style="text-align:right;"> 199.8 </td> <td style="text-align:right;"> 193.2 </td> <td style="text-align:right;"> 173.6 </td> </tr> <tr> <td style="text-align:left;"> BARRANCAS </td> <td style="text-align:right;"> 37.0 </td> <td style="text-align:right;"> 195.4 </td> <td style="text-align:right;"> 406.4 </td> <td style="text-align:right;"> 736.8 </td> <td style="text-align:right;"> 799.6 </td> <td style="text-align:right;"> 660.4 </td> <td style="text-align:right;"> 490.4 </td> </tr> <tr> <td style="text-align:left;"> BELLAS ARTES </td> <td style="text-align:right;"> 6.6 </td> <td style="text-align:right;"> 37.0 </td> <td style="text-align:right;"> 92.2 </td> <td style="text-align:right;"> 177.6 </td> <td style="text-align:right;"> 282.2 </td> <td style="text-align:right;"> 295.2 </td> <td style="text-align:right;"> 230.4 </td> </tr> <tr> <td style="text-align:left;"> BELLAVISTA DE LA FLORIDA </td> <td style="text-align:right;"> 157.6 </td> <td style="text-align:right;"> 297.8 </td> <td style="text-align:right;"> 565.8 </td> <td style="text-align:right;"> 1113.6 </td> <td style="text-align:right;"> 1162.8 </td> <td style="text-align:right;"> 1303.4 </td> <td style="text-align:right;"> 1009.2 </td> </tr> <tr> <td style="text-align:left;"> BLANQUEADO </td> <td style="text-align:right;"> 35.8 </td> <td style="text-align:right;"> 199.6 </td> <td style="text-align:right;"> 411.4 </td> <td style="text-align:right;"> 646.4 </td> <td style="text-align:right;"> 736.8 </td> <td style="text-align:right;"> 620.6 </td> <td style="text-align:right;"> 443.8 </td> </tr> <tr> <td style="text-align:left;"> CAL Y CANTO </td> <td style="text-align:right;"> 103.0 </td> <td style="text-align:right;"> 575.2 </td> <td style="text-align:right;"> 1281.0 </td> <td style="text-align:right;"> 2309.0 </td> <td style="text-align:right;"> 2640.2 </td> <td style="text-align:right;"> 2484.0 </td> <td style="text-align:right;"> 1873.0 </td> </tr> </tbody> </table> ] .pull-right[ <table> <thead> <tr> <th style="text-align:left;"> paraderosubida </th> <th style="text-align:right;"> V1 </th> <th style="text-align:right;"> V2 </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> ALCANTARA </td> <td style="text-align:right;"> 0.7841239 </td> <td style="text-align:right;"> 0.6194443 </td> </tr> <tr> <td style="text-align:left;"> BAQUEDANO L1 </td> <td style="text-align:right;"> -0.0766196 </td> <td style="text-align:right;"> 2.3275863 </td> </tr> <tr> <td style="text-align:left;"> BAQUEDANO L5 </td> <td style="text-align:right;"> 1.0706558 </td> <td style="text-align:right;"> 0.1709780 </td> </tr> <tr> <td style="text-align:left;"> BARRANCAS </td> <td style="text-align:right;"> 1.8057389 </td> <td style="text-align:right;"> -2.3425911 </td> </tr> <tr> <td style="text-align:left;"> BELLAS ARTES </td> <td style="text-align:right;"> 0.7961735 </td> <td style="text-align:right;"> 0.5936810 </td> </tr> <tr> <td style="text-align:left;"> BELLAVISTA DE LA FLORIDA </td> <td style="text-align:right;"> -1.9081488 </td> <td style="text-align:right;"> 0.3556561 </td> </tr> <tr> <td style="text-align:left;"> BLANQUEADO </td> <td style="text-align:right;"> 1.6293506 </td> <td style="text-align:right;"> -3.0070179 </td> </tr> <tr> <td style="text-align:left;"> CAL Y CANTO </td> <td style="text-align:right;"> -0.2660237 </td> <td style="text-align:right;"> 3.7753796 </td> </tr> </tbody> </table> ] </small></small></small></small></small></small> --- # Reducción de Dimensionalidad De esta forma: <img src="imgs-r/knitr-img-unnamed-chunk-30-1.svg" style="display: block; margin: auto;" /> --- # Clustering De vez en cuando es relevante agrupar información/perfilar. __Diagramas de Voronoi__. <img src="imgs-r/knitr-img-unnamed-chunk-31-1.svg" style="display: block; margin: auto;" /> --- # ¿Por qué 4 grupos? El algoritmo para encontrar grupos usado fue __K-means__. Uno usualmente da el número de grupos y determina que observación queda en que grupo. -- Una regla para decidir el número de cluster es realizando el proceso varias veces con distintas cantidad de centros. <img src="imgs-r/knitr-img-unnamed-chunk-32-1.svg" style="display: block; margin: auto;" /> --- # Clustering (ver. 2) __Dendograma__ visualiza la forma de agrupación a medida que aumento distancia. <img src="imgs-r/knitr-img-unnamed-chunk-33-1.svg" style="display: block; margin: auto;" /> --- # Clustering (ver. 3) Otra visualización con los mismos datos del dendograma. __Árbol filogenético__. <img src="imgs-r/knitr-img-unnamed-chunk-35-1.svg" style="display: block; margin: auto;" /> --- # Clustering (ver. 3) No sirve de mucho si las etiquetas. <img src="imgs-r/knitr-img-unnamed-chunk-36-1.svg" style="display: block; margin: auto;" /> --- # Entonces, ¿significan algo los cluster generados? -- Revisamos _nuestro primer gráfico_ para cada estación y separados por grupo. <img src="imgs-r/knitr-img-unnamed-chunk-37-1.svg" style="display: block; margin: auto;" /> --- # Contextualizar <img src="imgs-r/knitr-img-unnamed-chunk-38-1.svg" style="display: block; margin: auto;" /> --- # Contextualizar (ver. 2) <img src="imgs-r/knitr-img-unnamed-chunk-39-1.svg" style="display: block; margin: auto;" /> --- <img src="imgs-r/knitr-img-unnamed-chunk-40-1.svg" style="display: block; margin: auto;" /> --- class: left top background-image: url(imgs/charts.gif) background-size: 100% # <span style="background-color:white;margin:5px">Hay muchos mas!</span> --- # Resumiendo La __visualización de datos__: <br/> -- - Lleva información, es un mensaje. - Ejercicio mental para decodificar información. - Herramienta exploratoria. - Distintas visualizaciones en mismos datos es una distinta historia. --- # Gracias! Conversemos! <br/> -- - Más ideas en http://jkunst.com/blog - Presentación: http://jkunst.com/slides/202107-visualizacion-desde-el-analsis-de-datos/index.html - Código para hacer _toooodos_ los gráficos y análisis: http://jkunst.com/slides/202107-visualizacion-desde-el-analsis-de-datos/index.R