A blog about data, information and Tech by Mario Alberich

        

abr. 27
2014

Enlaces de interés 2014-17

abr. 22
2014

Visualizar para inducir, analizar para deducir

Quieres comerte una naranja y la pelas, porque la corteza de naranja es amarga y no te gusta, ¿cierto? Pero claro, luego viene tu madre, o tu abuela, y te dice que no tires la pela. Y con eso ellas te cocinan una especie de almíbar que luego añadirán al bizcocho que vas a disfrutar de lo lindo. Y así te das cuenta que te has estado perdiendo algo, tirando a la basura todas las pelas de naranjas anteriores.

Acéptalo: en el mismo momento en que empiezas a muestrear y analizar, descartas una información para centrarte en otra. Eso es la estadística y en general el método científico: tratar de separar y aislar (analizar significa etimológicamente separar) el grano de la paja, la información del ruido.

Pero esa separación requiere un conocimiento previo, que minimice el sesgo (desviaciones de la media) y el ruido (incremento de la varianza). Se trata de evitar que la muestra de datos quede envenenada, extirpando lo mejor posible el ruido, como si cocináramos un pez Fugu.

¿Visualizar datos o analizarlos?


Nuestros sentidos se han adaptado al mundo en el que nuestros antepasados sobrevivieron. Un mundo en tres dimensiones, y en los que sólo nos fue necesario oír un rango de colores y sonidos para detectar a nuestras presas y evitar amenazas. Ese cerebro que busca patrones sensoriales desde que nacemos es a veces muy limitado para otras tareas más abstractas.

Por ejemplo, sólo es capaz de ver en tres dimensiones. En realidad puede ver cuatro, si una de ellas puede ser representada en un eje temporal, y unas cuantas más si utilizamos colores y tamaños. Pero en lo relativo a la representación puramente espacial, tenemos esa limitación, por lo que los modelos con más variables no son representables gráficamente.

Esa es la limitación de la geometría, y el motivo de la importancia del álgebra. Ante esas situaciones, el álgebra y otros métodos de análisis entran en juego. El cálculo matricial, los sistemas de cambios de coordenadas y cambios de base en general, nos permiten reorganizar los datos según convenga (en el sentido más científico posible) para según nuestros objetivos.

Sin embargo todos estos métodos tienen más bien un carácter poco visual. Es difícil intuir (en el mirar hacia dentro en un sentido etimológico) analizando los datos a base de cálculos puros. Es más, en cuanto se pierde el contacto con la intuición, la maquinaria de los métodos numéricos nos puede conducir a errores por seguir a ciegas una metodología. Creo que este es el punto en el que muchos estudiantes de asignaturas de estadística se quedan colgados y empiezan a odiar la estadística, pero eso es un tema para otro post.

Entonces, veamos: ¿y si sacamos lo mejor de ambos mundos? ¿Qué tal analizar para simplicar y reducir las dimensiones, y luego representar visualmente esos datos para ver si nuestras operaciones tienen sentido?

Analizar para Visualizar


Este enfoque permite que ambas aproximaciones cooperen en nuestra búsqueda de conclusiones:

  • Representaciones en dos dimensiones, especialmente mediante gráficos de dispersión o scatter plots, que permiten identificar fácilmente relaciones de causa y efecto.
  • En ciertos casos se acostumbra a presentar una matriz de gráficos de dispersión, para representar el cruce de más de dos variables.
  • Generar modelos lineales y no lineales, para agregar varios factores en un solo modelo, y así poderlo representar en un solo gráfico. Lo que se aplica en este caso es un cambio de base: la recta de regresión se puede convertir en un eje.
  • Gráficos que representen los indicadores estadísticos más básicos. Por ejemplo gráficos blox-plot y similares.


Existe una gran cantidad de métodos para representar visualmente los datos, muchos de los cuales son específicos de la metodología de análisis o del tipo de datos que se están analizando. Sin embargo, ante el debate sobre cuál de los dos es mejor, la respuesta es sencilla: combinar ambos en el punto adecuado es mucho mejor.

Read more »

abr. 20
2014

Enlaces de interés 2014-16

abr. 14
2014

Richard Sennett: La corrosión del carácter

He acabado de leer hace apenas unos días este libro y no quiero dejar pasar la oportunidad de hacer una pequeña reseña. A pesar de que libro fue publicado en 1998 (la edición española fue en el año 2000), el planteamiento de base del libro es sin duda vigente, más aún si cabe.

Flexibilidad, liquidez


La flexibilidad que expone Richard Sennett en el libro recuerda bastante al concepto de liquidez de Baumann, sólo que esta vez aplicado especialmente al mercado laboral.  Flexibilidad para cambiar de tarea, de horarios, de lugar de trabajo (algo más acentuado en EE.UU. que en Europa). Flexibilidad que lleva a la deriva a sus protagonistas.

Esa deriva viene causada en primer lugar por el hecho de perder unos hábitos que dan una seguridad y se encauzan en una rutina. Las ya míticas 10.000 horas de práctica que son necesarias para llegar a dominar una disciplina, son inasumibles si nuestro día a día se ve alterado continuamente. Ese proceso de mejorar en el día a día hasta conseguir el conocimiento personal, desaparece, y deja paso a lo que el autor llama la especialización flexible.

Teorías, ética y modelos


Sennett hace un repaso por las diversas teorías del trabajo, empezando desde la ilustración hasta nuestros días.  Ese repaso se centra en un aspecto clave: cómo la flexibilidad (del mismo modo que en su momento el trabajo repetitivo) afecta a las personas. En ese modelo aparece la confrontación entre dos modelos organizativos: la jerarquía burocrática y las redes. ¿Cuál de las dos es más eficiente?

Estos dos modelos organizativos tienen sus bases en dos modelos culturales distintos (según Michel Albert): el modelo renano (Países Bajos, Alemania y Francia) y el angloamericano, respectivamente. Ambos modelos presentan diferencias notables en cuanto a la respuesta al cambio, desigualdades salariales, etc.

También hace un interesante repaso por la ética del trabajo protestante y sobre su promesa de recompensa.  También incluye reflexiones en la religión cristiana, con menciones a Pico della Mirandola, San Agustín, que contrastan con la ética protestante. Cada cual sabrá extraer sus conclusiones.

Autoconocimiento, autocrítica, iniciativa, apego


En el proceso de flexibilización al que se ve sometida la persona, tienen lugar una serie de sucesos interesantes:

  • Deja de tener un conocimiento propio sobre sus capacidades y limitaciones a la hora de hacer algo. Simplemente intenta hacerlo lo mejor posible, hasta que cambie de tarea.
  • Su capacidad de autocrítica para entender los factores clave de su actividad desciende, ya que no es posible establecer una idea progreso en sus habilidades debido al cambio constante.
  • Fruto de lo anterior, la iniciativa desciende bruscamente ante una situación imprevista. La persona desconoce la forma de resolver situaciones fuera de lo común en su lugar de trabajo.
  • Como reacción a todo lo anterior, desciende el apego, tanto hacia su actividad como hacia la empresa. La flexibilidad impide identificar un conjunto de valores a los que aferrarse.

Reflexiones finales sobre el libro de Richard Sennet


El libro da mucho más de sí. Lo que de hecho está descrito aquí son varios (no todos) elementos clave que para el autor ayudan a entender la situación actual y a analizar las vías para reenfocar las circunstancias en las que las personas pierden el norte en la flexibilidad.

Quizá para mí la reflexión final más importante es el papel de las habilidades sociales, la gestión de los conflictos y la comprensión de las necesidades de los demás para saber encontrar un espacio más social y menos superficial en el lugar de trabajo. Pero como siempre en estos casos, seguro que cada cual podrá extraer sus conclusiones.

Read more »

abr. 13
2014

Enlaces de interés 2014-15

abr. 8
2014

D3 + Crossfilter = DC

En un artículo anterior ya comentaba las posibilidades de Crossfilter, una herramienta especialmente aplicable a datasets de un tamaño mayor que el habitual para un navegador web. Con esta biblioteca tenemos una parte muy importante de la tarea de la sala de máquinas, cargando y filtrando los datos según nos convenga.

Muy bien, podemos filtrar y procesar los datos más rápidamente, ¿y ahora qué?

DC.js = Dimensional Charting Javascript Library


Pues nos falta la representación visual de los datos. Especialmente en combinación con una herramienta de representación visual como D3.js, Crossfilter se convierte en una herramienta muy potente. Y es así como surge la biblioteca DC.

Así que sacamos lo mejor de dos bibliotecas muy complementarias:

  • Filtrado y manipulación de los datos con Crossfilter.
  • Representación visual con D3.


¿A nivel de código fuente, cómo se combinan ambas bibliotecas? Puedes encontrar un punto de partida muy interesante en este ejemplo de código comentado para DC.js. Desde luego puedes ir a ver el paso a paso de ese código.

La inicialización de los gráficos se realiza mediante DC, y no directamente sobre D3. DC actúa como envoltorio de D3, simplificando así la generación de la tipología de gráficos disponibles por defecto.  La carga de los datos se realiza mediante la carga de un archivo CSV disponible vía HTTP, tras lo cual se transfieren los datos a crossfilter y se empieza a generar los datos de las dimensiones y agrupaciones de datos.

Se asignan las dimensiones y criterios de agrupación a cada uno de los gráficos según corresponda. Esta asignación es lo que en realidad acaba vinculando todos los gráficos.  También es posible generar una tabla (datatable) con los datos que se están están utilizando para generar las vistas actuales de los gráficos.

El resto de instrucciones son a grandes rasgos muy habituales en la generación de los gráficos mediante D3. Aunque como comentaba antes, las instrucciones se ejecutan a través de DC, podemos identificar fácilmente los parámetros de tamaño, colores, animaciones.

Se siguen viendo muchos ejemplos de maridajes entre D3 y cualquier otra biblioteca que complemente, simplifique o mejore sus funcionalidades. Espero poder seguir hablando de ello por aquí en breve :-).

Read more »

abr. 6
2014

Enlaces de interés 2014-14

abr. 2
2014

Siete años

Hoy, día de aniversario, siete añitos desde el primer post.

Han sido, para qué negarlo, siete años irregulares. Durante un año y medio, de Septiembre del 2011 a Mayo del 2013, lo mantuve inactivo. Obviamente las estadísticas de visitas se han resentido de esta inactividad, pero eso no es lo importante. Lo importante es seguir disfrutando al escribir artículos y tratar de aclarar conceptos mientras, de paso, me los aclaro a mí mismo ;-).

En el futuro cercano, como ya ha ido sucediendo en los últimos meses, el foco oscilará entre diversos aspectos de la programación (cliente y servidor), con javascript como protagonista; y por otro lado la visualización y tratamientos de datos. Pero la serendipia da paso a las más dispersas disertaciones, y a los más variopintos mestizajes interdisciplinares.

Así que... Muchas gracias por seguirme y leerme. No se vayan todavía, que aún hay más :-P.

 

Read more »

mar. 31
2014

Crossfilter, múltiples vistas sincronizadas de datos

El análisis exploratorio que tiene lugar durante la primera toma de contacto con un conjunto de datos tiene un objetivo muy concreto: familiarizarnos con su estructura. Por un lado la distribución de algunas variables clave, por el otro los valores extremos, y también las relaciones entre pares de variables. Esta familiarización permite aplicar el sentido común y la intuición a la verificación del análisis.  No es un momento para las conclusiones, sino para la toma de contacto.

Vistas coordinadas


Al representar gráficamente la distribución de valores en gráficos, podemos identificar patrones. Ahora bien, ¿cómo cambian esos patrones si cambiamos la selección de los datos? ¿De qué forma se altera el gráfico de barras y el gráfico de dispersión si elimino los valores más altos de una variable? Interacciones del tipo Linking and brushing en las vistas múltiples coordinadas permite a un usuario/analista disponer de detalles más reveladores sobre el comportamiento de los datos.

Este proceso no está falto de complejidad. Para que la interacción tenga sentido, es necesario que el sistema responda rápidamente. Necesitamos que un dataset de varios miles de registros tenga una representación y filtrado ágil. Y si eso lo queremos implementar vía javascript en el navegador web, el reto es aún mayor.

Crossfilter


La biblioteca Crossfilter permite gestionar esta carga inicial de datos para luego aplicar filtros y agrupaciones de datos (utilizando MapReduce) de una forma ágil.  Según los autores de la biblioteca, las interacciones pueden ejecutarse en tiempos inferiores a 30 milisegundos, incluso con datasets de más de un millón de registros.

Es posible consultar la referencia de la API para más detalles. También podéis ver el siguiente video explicativo de las ideas y soluciones que puede proporcionar crossfilter:

Es posible imaginarse un matrimonio muy bien avenido entre Crossfilter y D3, aunque eso lo podemos dejar para otro artículo.

Read more »

mar. 30
2014

Enlaces de interés 2014-13

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.