Visualización de datos de Google Analytics con R

Por el 18/11/2015 a las 11:33

Ya sea para buscar patrones, ayudar a plantear hipótesis para futuros análisis o para hacer reporting de una forma más elegante, la visualización de datos es esencial en el mundo de la analítica. Con el gráfico adecuado, podemos extraer la información más importante de una tabla de datos de una forma mucho más efectiva. Pero no siempre es tarea fácil: hay que elegir las métricas y dimensiones adecuadas y el tipo de gráfico que mejor exprese el mensaje que queremos transmitir.

Google Analytics ya nos ofrece en su interfície la posibilidad de visualizar nuestros datos en forma de tablas, de gráficos de líneas o de barras, con diagramas de sectores e incluso con bubble charts animados. Sin embargo, el principal problema a la hora de hacer análisis avanzados es su falta de flexibilidad. En ese caso, la solución suele ser recurrir a la API de Google Analytics para descargar los datos que necesitamos para su posterior visualización y análisis en otra herramienta como por ejemplo Excel, Google Sheets o R. Hace un tiempo en doctormetrics ya os explicamos cómo podemos conectar R con la API de Google Analytics y hacer consultas para poder analizar los datos de nuestro site en esta herramienta.

Entre las distintas formas con que se pueden visualizar datos en R, destaca por su flexibilidad y la “belleza” de los gráficos resultantes un package llamado ggplot2. En este post mostraremos algunos gráficos creados mediante este package y algunas situaciones en las que cada uno de estos gráficos podrían ser útiles para analizar nuestros datos de GA. Los gráficos que mostraremos no son ni mucho menos todos los que se pueden crear mediante ggplot2 por lo que si consideráis que otro tipo de gráfico sería más útil para uno de vuestros análisis, solo tenéis que buscar un poco de información por internet para encontrar la forma de crearlo con ggplot2. Por último, y antes de ponernos manos a la obra, quería comentar para los menos familiarizados con R que para poder utilizar las funciones de cualquier package de R, primero teneis que instalarlo, lo cual es muy sencillo (en internet podéis encontrar información sobre cómo hacerlo).

  1. Gráficos de barras

Uno de los tipos de gráficos más conocidos y utilizados por todos son los gráficos de barras. Evidentemente, ggplot2 permite crear este tipo de gráficos de forma muy sencilla. Pero, además, con este package se puede crear casi con la misma facilidad una cuadrícula de gráficos de barras teniendo en cuenta varias dimensiones al mismo tiempo. De este modo, podemos comparar el valor de una métrica entre distintas categorías de una o varias dimensiones.

Por ejemplo, imaginemos que queremos analizar la conversión de nuestros productos; en este caso, podríamos analizar la métrica buy-to-detail rate. Si, además, aprovechando el enhanced ecommerce estamos recogiendo dos categorizaciones distintas mediante la Categoría de producto, nos podría interesar estudiar las diferencias de conversión de los productos en función de sus categorías. En este caso, con ggplot2 nos podríamos un gráfico como el siguiente:

ggplot1.2

Con una sencilla línea de código:

ggplot(df, aes(x=productName, y=buyToDetailRate, fill=productName)) + geom_bar(stat=”identity”) + facet_grid(productCategoryLevel1~productCategoryLevel2)

Veamos con más detalle cada componente:

  • ggplot(df, aes(x=productName, y=buyToDetailRate, fill=productName)):

df es el nombre del data frame de R en el que hemos guardado nuestros datos al hacer la consulta a la API de Google Analytics (tranquilos si no tenéis muy claro de lo que hablo, las tablas se guardan como data.frame por defecto al hacer una consulta a la API desde R). Es decir, df es la tabla con los datos que queremos visualizar. En este caso, es una tabla con 4 columnas: productName, productCategoryLevel1, productCategoryLevel2, buyToDetailRate.

En aes indicaremos el papel de cada variable en nuestro gráfico. En este ejemplo, como eje X utilizaremos el nombre del producto, como eje Y el buy-to-detail rate y, finalmente, “rellenaremos” (en inglés, fill) con un color diferente para cada nombre de producto.

  • geom_bar(stat=”identity”):

Indicamos que queremos un gráfico de barras (geom_bar) en el que la altura de las barras sea el valor de la variable Y en los datos (stat=“identity”). Para que la altura de la barra sea el número total de casos de cada grupo, no se tiene que asignar ninguna variable a y en aes y usar stat=“bin”.

  • facet_grid(productCategoryLevel1~productCategoryLevel2):

Las variables que cruzaremos en la cuadrícula. En este caso, cada categoría de productCategoryLevel1 será una fila distinta (A1, A2, A3), y cada categoría de productCategoryLevel2 será una columna distinta (B1, B2). Esta opción no es exclusiva de los gráficos de barras, de modo que también se puede utilizar con otros tipos de gráficos.

  1. Gráficos de áreas

Otro gráfico muy interesante que se puede crear fácilmente con ggplot es un gráfico de áreas, con el que por ejemplo podemos evaluar unas proporciones a lo largo del tiempo. De esta manera, se puede observar cómo ha evolucionado cada categoría asociada a una dimensión a lo largo de un periodo o, incluso, evaluar de forma visual si alguna acción que se emprendió ha tenido el efecto esperado o no.

Por ejemplo, supongamos que se decidió dar el paso a web responsive porque se observó que, al no estar la web optimizada para móviles y tablets, estos dispositivos no estaban convirtiendo como se esperaba que podrían. En una situación como ésta, podríamos crear un gráfico en el que se viera la evolución de la proporción de transacciones hechas desde cada tipo de dispositivo (desktop, mobile, tablet) en un periodo de tiempo que incluyera el lanzamiento de la web responsive. Con ggplot es muy sencillo:

ggplot2.2

ggplot(df, aes(x=date, y=transactions, fill=deviceCategory)) + geom_area(colour=”black”, position=”fill”, size=.2, alpha=.4)

*donde previamente se han convertido las fechas a números del 1 hasta el número de días totales.

  • ggplot(df, aes(x=date, y=transactions, fill=deviceCategory)):

df es el nombre del data frame de R en el que hemos guardado nuestros datos al hacer la consulta a la API de Google Analytics. En este caso, es una tabla con 3 columnas: date (convertida a número), deviceCategory, transactions.

En aes indicaremos el papel de cada variable en nuestro gráfico. En este ejemplo, como eje X utilizaremos la fecha, como eje Y el número de transacciones y, finalmente, “rellenaremos” con un color diferente cada tipo de dispositivo.

  • geom_area(colour=”black”, position=”fill”, size=.2, alpha=.4):

Indicamos que queremos un gráfico de áreas (geom_area) y añadimos algunos parámetros para que acabe luciendo como en la imagen (son opcionales). Importante destacar que el parámetro position=“fill” es el que permite visualizar las proporciones sin tener en cuenta el valor absoluto.

En el caso en que no se incluyera position=“fill”, es decir, utilizaramos geom_area(colour=”black”, size=.2, alpha=.4) , obtendríamos el gráfico:

ggplot3.2

ggplot(df, aes(x=date, y=transactions, fill=deviceCategory)) + geom_area(colour=”black”, size=.2, alpha=.4)

En el cual se ven las proporciones en valores absolutos, lo cual dificulta el análisis de las proporciones pero nos da información sobre el contexto, que también es importante. Por ejemplo, combinando estos dos gráficos vemos que el hecho de que esté disminuyendo la proporción de transacciones hechas con desktop desde el día 13 del periodo (primer gráfico) no ha sido debido a una disminución en el número de transacciones de desktop (segundo gráfico). De hecho, en este segundo gráfico podemos comprobar que el cambio a web responsive no afectó a las transacciones de desktop, cuya curva se mantiene estable, sino que aumentaron el número de transacciones hechas desde tablets y móviles (como esperábamos al hacer el cambio), aumentando su contribución al volumen total de transacciones.

  1. Boxplots

En doctormetrics también hablamos hace tiempo de la importancia de tener en cuenta la variabilidad de las métricas al hacer un análisis.

Una de las herramientas más interesantes para visualizar la variabilidad de las métricas es un gráfico que se conoce como boxplot o diagrama de caja. Este tipo de gráfico nos permite entender cómo se distribuye una métrica mediante su mínimo, su máximo y sus cuartiles.

Por ejemplo, supongamos que tenemos un negocio estacional, es decir, nuestros usuarios se comportan de forma muy distinta según la época del año. En este caso, si analizamos el número de transacciones que se producen cada mes, es evidente que encontraremos que en algunos meses se produce un volumen de transacciones mucho mayor que en otros. ¿Pero eso significa que en todos los días de un mes con un mayor volumen de transacciones se producen más transacciones que en los de un mes con un total de transacciones total menor? La respuesta normalmente será que no, y la manera de visualizarlo de forma efectiva es utilizando un boxplot. Con este tipo de gráfico, tendremos una visión mucho más completa de la influencia del mes a nuestro volumen de transacciones.

ggplot4.2

ggplot(df, aes(x=factor(month),y=transactions)) + geom_boxplot()

  • ggplot(df, aes(x=factor(month),y=transactions)):

df es el nombre del data frame de R en el que tenemos que guardar nuestros datos al hacer la consulta a la API de Google Analytics. En este caso, es una tabla con 3 columnas: date (para conseguir variabilidad, cada día será una observación), month, transactions.

En aes indicaremos el papel de cada variable en nuestro gráfico. En este ejemplo, como eje X utilizaremos el mes y como eje Y el número de transacciones.

  • geom_boxplot():

Indicamos que queremos crear un boxplot.

  1. Gráficos de puntos / líneas

Finalmente, el último tipo de gráfico del que vamos a hablar es el más que conocido gráfico de líneas. Como no podía ser de otra manera, este tipo de gráficos también se pueden crear con ggplot2.

Además, podemos aprovechar la flexibilidad de R para hacer operaciones sobre las métricas que queramos analizar. Es decir, podemos representar gráficamente métricas calculadas con la misma facilidad que una métrica predefinida. Así, por ejemplo, podríamos visualizar los ingresos de nuestro ecommerce después de descontarle las devoluciones ya que, como muchos sabréis, en Google Analytics se recogen en métricas distintas.

ggplot9.2

ggplot(df, aes(x=factor(date), y=transactionRevenue-refundAmount, group=1)) + geom_line() + geom_point() + theme(axis.text.x = element_text(angle = 35, hjust = 1))

  • ggplot(df, aes(x=factor(date), y=transactionRevenue-refundAmount, group=1)):

df es una tabla con 3 columnas: date, transactionRevenue, refundAmount.

En aes indicaremos el papel de cada variable en nuestro gráfico. En este ejemplo, como eje X utilizaremos la fecha (convertida a factor) y como eje Y la métrica calculada ingresos menos devoluciones. Por último, el parámetro group=1 nos permitirá poder crear la línea que unirá los puntos (sino obtendremos un error y solo podremos crear los puntos).

  • geom_line():

Indicamos que queremos crear un gráfico de líneas.

  • geom_point():

Añadimos puntos al gráfico de líneas.

  • theme(axis.text.x = element_text(angle = 35, hjust = 1)):

Opcional. Modifica el aspecto del texto del eje X para que se puedan leer las fechas correctamente.

 

Esto sólo son cuatro ejemplos muy sencillos de gráficos, pero que sepáis que ggplot2 nos permite modificar casi todo el layout de sus gráficos: cambiar los colores, añadir y personalizar títulos y leyendas, hacer cambios sobre los ejes, etc. Aun así, espero que los ejemplos del post os hayan servido para familiarizaros un poco con la forma en la que se crean mediante ggplot2 y que a partir de aquí os animéis a crear los vuestros. Como siempre, si tenéis alguna duda relacionada con el post o no conseguís crear el gráfico que necesitáis, podéis dejar vuestro comentario y os intentaré ayudar en la medida de lo posible. Hasta la próxima! 🙂