Analítica web
Reflexiones sobre madurez digital, datos y tecnología

Análisis de tiempo avanzado en Google Analytics

Se lee en 5 minutos

Por defecto Google Analytics dispone de una serie de métricas tales como “Duración media de la sesión” o “Tiempo de espera” que nos permiten medir el comportamiento del usuario en segundos, minutos u horas. Sin embargo, estas métricas se aplican al conjunto de las interacciones del usuario en un sitio web. Desgraciadamente, a día de hoy Google no permite restringir estos componentes a eventos temporales específicos y personalizables. Es decir, podemos saber la duración media de una sesión pero, por ejemplo, no la duración media entre el inicio y el fin de un flujo de conversión.

Del mismo modo, Google Analytics nos muestra en su informe de Tiempos de espera los días que tardó el usuario en realizar una conversión, pero siempre toma como referencia la primera interacción de los clientes con nuestros activos digitales. ¿Qué pasa si queremos saber, digamos, el tiempo medio entre la inserción de un producto en el carrito y la compra final?

Por suerte, es posible dar respuesta a estas preguntas accediendo al dato en bruto. Con un poco de maña y unos pocos conocimientos básicos de SQL, Python o R podemos modelar los componentes de Google Analytics y extraer las conclusiones deseadas. ¿Cómo hacemos esto? No tenemos más que seguir los siguientes pasos.

Paso 1. Descarga la información

El primer paso consiste en extraer la información bruta. Esto puede hacerse de distintas maneras. Si se dispone de una masa de datos relativamente pequeña, el dato puede descargarse directamente desde la interfaz de Google Analytics, ya sea a través de un informe personalizado clásico, desde la beta de Google Analysis o incluso desde Query Explorer. Si el volumen de datos es más grande, es muy probable que los métodos anteriores arrojen sampling, lo cual desvirtuaría el resultado. Por ello, es recomendable utilizar los informes sin muestrear de Google Analytics o, si se dispone de la integración correspondiente, valerse de Google BigQuery. Esta última opción es la más recomendada por motivos que veremos más adelante.

Para poder acceder al dato necesitamos lanzar dos consultas distintas: una para recoger los registros del inicio del proceso y otra para el final del proceso. ¿Y qué datos exactamente necesitamos extraer? Nos basta con una tabla que contenga tres columnas: timestamp, ID de cliente y página. Del mismo modo, cada una de las tablas deberá estar filtrada para recoger únicamente los usuarios que interactúan con el paso deseado. Por ejemplo, si nuestro deseo es analizar el lapso de tiempo medio que tarda un usuario en registrarse en un sitio web, necesitaríamos una primera tabla donde se listen los IDs de usuario y timestamps del momento en que accedieron al primer paso del proceso, y una segunda tabla donde se muestren los IDs y timestamps en los que visitaron la página de confirmación.

Ejemplo de tablas de primer paso y paso final
Imagen 1. Ejemplo de tablas de primer paso y paso final

Dependiendo del proceso, podemos encontrarnos con que un mismo usuario visita en dos momentos distintos un paso y, por lo tanto, que un mismo cliente genere dos filas diferentes. En estos casos, lo deseable es limpiar el conjunto de datos para quedarnos únicamente con la fila que tiene un timestamp más alejado en el tiempo. En cierto modo, lo que nos interesa en este informe es recoger la primera interacción: las instancias duplicadas, que podrían ser refrescos de página o retrocesos en el flujo, no son de nuestro interés. Para eliminar estos registros, lo ideal es tratar el conjunto de datos directamente desde Google BigQuery mediante funciones analíticas como RANK, pero puede obtenerse el mismo resultado trabajando desde R, Python o incluso desde Excel.

Paso 2. Modela el dato

Para modelar el dato, de nuevo lo aconsejable es trabajar desde Google BigQuery, ya que así se gana rapidez y agilidad. El siguiente paso consiste en fusionar las dos tablas resultantes utilizando como clave primaria el ID de cliente. Con esta operación se pretende obtener un único conjunto de datos donde cada fila contenga un único ID, con los dos timestamps como atributos asociados. Un JOIN RIGHT que una la segunda tabla (paso final) con la primera (paso 1) debería bastar para acometer esta operación. Con ello, seleccionamos únicamente aquellos usuarios que finalizaron el proceso, requisito imprescindible para calcular el lapso.

Finalmente, se añade a la tabla una nueva columna donde se restan las dos marcas de tiempo. Así obtenemos el lapso de tiempo entre los dos pasos. Es importante a la hora de acometer esta operación, asegurarnos que el tipo de datos de las columnas de timestamp es de fecha. En el caso de Google BigQuery, las funciones PARSE_DATE y DATE_DIFF pueden sernos de mucha ayuda.

Ejemplo de tabla final con métrica de laps calculada
Imagen 2. Ejemplo de tabla final con métrica de lapso calculada

En algunas ocasiones, esta operación puede arrojar datos negativos en el campo diferencia. Esto se traduce en que el usuario ha visitado antes la página de confirmación que la página del paso 1, lo cual puede parecer una incoherencia. ¿Cómo se explica esto? Pueden existir varias razones: por ejemplo, quizás el usuario visitó la página 1 en un periodo previo al marco de análisis escogido. En todo caso, para no contaminar las conclusiones, se recomienda cuantificar los IDs de cliente que cumplen esta excepción y, si es un número razonablemente bajo, excluirlos de la tabla final.

El último paso consistiría en reagrupar la tabla por la columna diferencia y sumarizar el conjunto por un conteo único de IDs de clientes. Es probable que existan muchos valores distintos en el campo diferencia, y por lo tanto el dato se muestre excesivamente granularizado. Para corregir esto, se recomienda procesar el dato por rangos temporales, más que por los valores absolutos.

Imagen 3. Ejemplo de tabla con lapsos agrupados
Imagen 3. Ejemplo de tabla con lapsos agrupados

Paso 3. Visualiza el dato

Existen muchas maneras de representar el resultado de manera gráfica, pero a efectos prácticos, podemos destacar dos métodos: el histograma y el diagrama de cajas. Para ambos casos, si anteriormente recomendábamos trabajar directamente en Google BigQuery, ahora es preferible importar el dato a R o Python, ya que ofrecen librerías de visualización mucho más potentes.

Empecemos con el histograma: básicamente, un histograma representa la frecuencia de un valor mediante barras proporcionales. El eje vertical o “y”, reproduce el conteo de estas frecuencias, mientras que el eje horizontal o “x” muestra los valores o rangos de valores analizados. Para no saturar el número de valores del eje x, es aconsejable trabajar con rangos de lapsos en vez de rangos absolutos.

Imagen 4. Ejemplo de histograma
Imagen 4. Ejemplo de histograma

Una opción mucho más interesante es la del diagrama de cajas. Este método nos ayuda a representar la frecuencia de valores teniendo en cuenta sus cuartiles. Los diagramas de cajas son de gran utilidad a la hora de visualizar de qué manera se distribuye la muestra: por ejemplo, si existen más valores debajo o por encima de la media de lapsos. Además, nos permite representar la media y mediana del conjunto, y también nos ayuda a identificar y aislar valores atípicos que puedan contaminar nuestras conclusiones.

Ejemplo de diagrama de caja
Imagen 5. Ejemplo de diagrama de caja

Son muchas las aplicaciones que podemos buscar a los análisis de lapsos de tiempo. En nuestro caso hemos analizado el tiempo medio que transcurre entre dos eventos concretos pero, con un poco de esfuerzo, podemos transformar este informe hacia terrenos más complejos, como el análisis de cohortes. ¿Se te ocurre cómo? ¡Esperamos vuestras respuestas!

*Fuente de la imagen de portada: freepik.es

Escribe tu comentario

tres × 2 =

Navegar