R y Shiny

AdministratorESTADISTICA, SOFTWARE

Hace muchas lunas y muchos soles, o sea hace un chorro de años, en la universidad tuve un maestro que nos enseñaba SPSS (Statistical Package for the Social Sciencies),  ese maestro se presentó ante nosotros de manera muy simpática, nos preguntó el nombre de la materia que íbamos a tomar con él y respondimos que era “Metodología de la investigación I”, acto seguido, nos dijo que no, que con él aprenderíamos “Cómo ganarse la vida I” y si nos gustaba su materia, en los próximos 3 trimestres, cursaríamos “Cómo ganarse la vida II”, “Cómo ganarse la vida III” y “Cómo ganarse la vida IV”; después preguntó y él mismo contestó: “¿Y se come bien?”, “¡Chequen!”, decía, caminando de perfil y haciendo saltar su panza prominente. Estábamos en los albores de las computadoras personales, en ese entonces lo más avanzado que teníamos eran las XT (Tecnología Extendida) así que era todo un reto aprender computación y más para estudiantes de áreas de ciencias sociales, como su humilde servidor que es psicólogo social, sin embargo, ese buen maestro logró entusiasmar y motivar a varios de sus alumnos para que aprendieran SPSS.

Ahora, a tantos años luz, creo que aprender SPSS fue una de las mejores cosas que me pudo haber pasado; sin embargo, esta reflexión me hace recordar que este programa surgió y fue creado para la era PC (Personal Computing) y hoy estamos en la era CC (Cloud Computing); es decir, en la Internet y las redes sociales que tienen un corazón que hace: like, like, like, llamado “SHARE”; estamos en un momento en el cual las herramientas que necesitamos son distintas y en unos casos diametralmente opuestas. SPSS y muchos otros programas líderes, están haciendo grandes esfuerzos para no perder su liderazgo; por ejemplo, SPSS invierte muchos recursos para lograr que programas desarrollados en R, .NET, Python, Java, todos ellos lenguajes de programación, se integren a su software; tal vez piensa que los investigadores y analistas simplemente no van a cambiar una herramienta tan sencilla como es SPSS, la cual se basa en un menú de opciones que los libera de pensar en el cómo y centrarse en el qué, para meterse a desarrollar en R, Python, Java, etc.; en todo caso, si alguien lo hace serán los ingenieros y utilizarán SPSS para trabajar con las aplicaciones desarrolladas por ellos, pero supongo que muchos no están de acuerdo en hacerlo; en otras palabras, SPSS está renunciando al liderazgo para situarse como una simple mesa de trabajo. Por otro lado, se pueden correr muchos procedimientos de SPSS en línea pero la empresa ha olvidado el asunto nodal: Internet no es para alojar o hacer las cosas en línea, es para COMPARTIR, INTERACTUAR y APRENDER.

Hace años que venimos haciendo las cosas en R y hemos advertido de lo que viene, algunos lectores de este blog no están de acuerdo con lo que decimos y así nos lo han hecho saber en los comentarios al blog, dicen que le falta mucho a R para competir con el software comercial o que no es mejor, sin embargo, las cosas se vienen perfilando de una forma diferente; tan solo véase la gráfica de abajo que da cuenta del crecimiento de paquetes que R ha tenido en los últimos años; y es que R tiene paquetes para hacer cualquier cosa que desees, se podría decir que Shiny es uno de tantos paquetes que tiene R pero en este caso es más que eso porque da al clavo en una de las cosas más anheladas por un investigador de mercados cuantitativo: COMPARTIR los análisis de un estudio en Internet, hacerlo de manera INTERACTIVA y que el analista APRENDA y comprenda.

numero de paquetes de R

Hasta el día de hoy, la gran mayoría de agencias de investigación entregan un reporte con gráficos estáticos hechos principalmente en Power Point o Excel, aunque este programa es reactivo y no tendría porque usar gráficos estáticos. Por ejemplo, algo común en un estudio de conjoint, es mostrar la participación que obtiene un producto vs. otros productos en un escenario simulado, los resultados se muestran con gráficas estáticas, si son 10 escenarios se le muestra al cliente 10 gráficas y aunque algunos programas del tipo CBC de Sawtooth tienen un simulador para hacerlo de forma dinámica, éste no se le proporciona al cliente por restricciones de derechos de autor o porque el cliente no sabe operarlo; seguramente no todos lo hacen así, en nuestro caso entregamos un simulador desarrollado en casa con simples herramientas de Excel y R (véase la imagen de abajo). Como cliente ¿qué tan bien te vendría un simulador en línea donde pudieras jugar con escenarios a tu antojo y estimar la preferencia o participación de los productos? ¿Qué te parece estimar la satisfacción de los clientes metiendo distintas variables de tu programa de satisfacción y verlo por áreas de la empresa? ¿Qué tal observar un DQA o mapa de cuadrantes por los segmentos o regiones que se te ocurran? ¿Qué tal tener tu tablero de mandos de tus esfuerzos en línea y verlo de manera interactiva? Las posibilidades son ilimitadas y el cliente no necesita saber R o Shiny para operar los programas en Internet. Aquí puedes ver algunos ejemplos de aplicaciones desarrolladas con R y Shiny.

simulador de conjoint

Antes de que se me olvide, ahí les va una explicación veloz de lo que es R y Shiny. R es un lenguaje de programación estadística que nació por allá de los años de 1993, se compone de paquetes que al día de hoy suman 8,011 y tiene más cada día y es un lenguaje de tipo funcional, en un momento más explico que es eso; por su parte, Shiny es uno de esos 8,011 paquetes que tiene R, es como si R fuera el motor y Shiny algún tipo de transmisión, suponiendo que hubiera 8,011 tipos y no sólo estándar, automática, etc; se utiliza para desarrollar aplicaciones web, es decir, que corre en Internet, no obstante, no se requiere de conocimientos en HTML, CSS o Java, lenguajes de programación en Internet; posiblemente su mejor atributo es que es reactivo. De acuerdo, funcional y reactivo ¿cómo se traducen estos conceptos en términos de R y Shiny? Todos conocemos Excel, ¿Sí? la hoja de cálculo más popular que existe, y hemos hecho cálculos con él, los hacemos utilizando funciones preconstruidas; por ejemplo, supón que quieres sumar 2, columna A1 (véase la figura de abajo), con otro 2, columna B1, y al resultado sacarle raíz cuadrada; por supuesto, que nadie utilizaría excel para una operación tan infantil pero me sirve de ejemplo. El resultado de esos sesudos cálculos es 2, como puedes apreciar en la columna C1 que es donde decidimos introducir las funciones.

programacion funcional

Si observas, sobre la celda C1 hay dos funciones:

  1. La función suma: SUMA(A1,B1); fíjate que esta función no afecta las columnas A1 y B1, únicamente toma de ellas los valores que va a sumar, en programación a los valores que se introducen en la función para que haga lo que se le pide se les llama argumentos o parámetros* y no necesariamente tienen que ser números; ahora, presta atención al paréntesis que contiene a los argumentos, todas las funciones tanto en Excel como en R los utilizan, en otras palabras siempre vas a ver algo así como Función(Argumentos,…Argumentos). Una función puede tener muchos argumentos los cuales van separados por comas. Con lo que sigue te debe quedar más claro.
  2. La función raíz cuadrada: RAIZ(SUMA(A1,B1)); en este caso, el argumento es otra función, que no es sino la suma de las columnas A1 y B1; la cosa se ve más o menos compleja porque se están utilizando dos funciones para obtener un solo resultado pero eso es precisamente lo que le da poder a la programación en Excel y R, que funciona de manera muy similar; también por eso se llaman funciones, porque son como maquinas que funcionan a través de cualesquier valores válidos que se le de, transformándolos y devolviendo un resultado u objeto que puede ser manipulado por otra(s) función(es).

Habrás notado que en cuanto cambias un valor de cualquier celda que sirve de argumento para alguna función, el resultado cambia ipso-facto, sin que tengas que darle el OK o enter. En nuestro caso, si cambias el 2 por el 7 en la celda A1, el resultado de C1 se actualiza automáticamente pero la función o fórmula sigue siendo la misma (véase imagen de abajo). A eso se le llama reactivo y es distinto a la mayoría de los programas estadísticos que requieren que les declares explícitamente que deben correr el análisis. Posiblemente, por eso se dice que Excel es el programa más sorprendente y completo que hay; si viste los ejemplos de Shiny te darás cuenta que opera de la misma forma: cambias los valores y el resultado se actualiza.

programacion reactiva

Se dice que R es difícil de aprender y/o se necesita mucho tiempo, es posible, pero déjame decirte que es peor hacer una y otra vez el mismo análisis, parte por parte, año tras año y no importa que sólo sea cosa de darle clic a nuestro programa favorito, con el paso de los años te vas dando cuenta de todo el tiempo que te hubieras ahorrado si tan sólo hubieses construido las funciones que necesitabas correr comúnmente ¿Qué es difícil? No más que Excel pero no por eso se nos ha ocurrido dejar de usarlo. No importa si lo ves desde una perspectiva temporal evolutiva y Darwiniana o desde una complicada dialéctica Hegeliana, desde hace años estamos mutando y viviendo un nuevo paradigma, no te resistas al cambio, este es inevitable.

Por favor, no te reprimas y déjanos tus comentarios.

Gracias por leernos.

* Te aconsejo que no emplees el vocablo parámetro porque este tiene un significado distinto en estadística del que tiene en programación.

¡Compártelo a tus amigos(as)!...Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someone
AdministratorR y Shiny