Ir al contenido principal

Comprendiendo el Rol del Adstock en los Modelos de Marketing Mix Modeling (MMM)

Marcelo Ayala avatar
Escrito por Marcelo Ayala
Actualizado hace más de 2 semanas

Introducción

En Marketing Mix Modeling (MMM), el concepto de Adstock es fundamental para capturar la persistencia de los efectos de la publicidad en el tiempo. No todas las ventas generadas por una campaña suceden de inmediato: los consumidores retienen en su memoria los impactos publicitarios, y estos influyen en decisiones de compra futuras. Esta "memoria publicitaria" es lo que modelamos a través del Adstock.

Este documento técnico está orientado a equipos de analistas y data scientists que deseen comprender a fondo:

  • Qué es el Adstock y por qué es clave en el modelado de medios.

  • Cómo se implementa técnicamente, con ejemplos por industria.

Cuáles son las diferencias prácticas entre los enfoques de Robyn, Orbit y Meridian.


1. ¿Qué es el Adstock?

El Adstock representa el efecto acumulativo y retardado de una inversión publicitaria a lo largo del tiempo. En lugar de asumir que el gasto en medios genera una respuesta instantánea y total, el Adstock modela cómo ese impacto se distribuye en el tiempo de forma decreciente (y en algunos casos retardada).

Por ejemplo: si un consumidor ve una campaña de TV hoy, es posible que compre dentro de 3 días. El modelo debe atribuir parte de esa venta a la inversión pasada, no solo al gasto del día de la conversión.



2. Cómo se modela el Adstock

El Adstock se aplica transformando la serie de gasto publicitario para reflejar este efecto. Los enfoques técnicos principales son:

a. Modelo Geométrico (Exponencial)

  • Fórmula: At=Xt+λAt−1A_t = X_t + \lambda A_{t-1}

  • λ\lambda: Parámetro de retención (entre 0 y 1).

  • Refleja una caída constante del efecto en el tiempo.

b. Funciones Weibull (CDF y PDF)

  • Implementadas en Robyn.

  • Weibull CDF: modela curvas en S o L, con decaimiento variable.

  • Weibull PDF: permite retardos en el pico del impacto.

c. Lag fijo

  • Usado por Meridian.

  • Se define una cantidad máxima de semanas de rezago (L).

  • El impacto de cada semana previa se pondera decrecientemente.


3. Ejemplos por industria

Industria

Características del Adstock

Vida Media Típica

FMCG

Corto plazo, respuesta rápida, efecto de 2-3 semanas.

2-3 semanas

Servicios Financieros tradicionales

Largo plazo, alto involucramiento, respuesta retardada.

5-8 semanas o más

Retail

Promociones tácticas con impacto inmediato o picos retardados.

1-2 semanas

Tecnología

Productos de alto costo con ciclos de decisión largos.

4-10 semanas


Un ejemplo que ilustra gráficamente la relevancia de modelar correctamente Adstock lo trabajamos en BunkerDB con el ministerio de Turismo de Dominicana. Sus acciones promocionales para vacacionar en la isla obviamente tienen un efecto retardado (nadie compra un pasaje para mañana por ver un anuncio). En este caso estimamos un pico del efecto a los ≈50 días de la exposición a medios


4. Comparativa técnica: Robyn vs. Orbit vs. Meridian

Característica

Robyn

Orbit

Meridian

Tipo de Adstock

Geométrico, Weibull CDF/PDF

No incluido (se modela manualmente)

Geométrico con lag fijo

Parámetros

Retención (θ\theta), shape, scale

No definidos por defecto

α\alpha (retención), LL (lag)

Retardo en el pico

Sí (PDF de Weibull)

Requiere programación

No

Automatización

Alta (Nevergrad)

Baja (100% custom)

Moderada (modelo Bayesiano fijo)

Flexibilidad

Alta (3 tipos de Adstock)

Total (requiere implementación manual)

Media (función fija, admite priors)

Lenguaje

R

Python

Python

Caso sugerido

Anunciantes FMCG / ecommerce / multicanal

Empresas tech / apps con alta estacionalidad

Retail multi-región / bancos / CPG


5. Recomendaciones del equipo de Marketing Science

  • FMCG y retail: Robyn con Adstock geométrico o Weibull CDF suele capturar bien los efectos.

  • Servicios financieros o tecnología: recomendamos probar Weibull PDF para capturar retardos.

  • Casos con alta estacionalidad: Orbit puede ser útil si el equipo tiene capacidad técnica.

  • Casos multi-región: Meridian permite aprovechar experimentos geolocalizados y ajustar por regiones.


6. Recursos adicionales


Si tenés dudas específicas sobre la configuración de Adstock en tus modelos, contactá al equipo de Marketing Science de BunkerDB o escribinos a [email protected]

Saturación en Marketing Mix Modeling (MMM)

¿Qué es la saturación en el contexto de MMM?

En Marketing Mix Modeling, saturación se refiere al fenómeno de rendimientos decrecientes: a medida que aumentamos la inversión publicitaria en un canal, cada unidad adicional de gasto produce incrementos cada vez menores en el resultado (ventas, conversiones, etc.)[1]. En otras palabras, no podemos simplemente duplicar el gasto y esperar duplicar las ventas, ya que después de cierto punto de inversión el desempeño marginal cae[2]. Este concepto es crucial porque indica que existe un punto de saturación a partir del cual continuar invirtiendo en ese medio es ineficiente – el ROI por cada dólar extra invertido disminuye significativamente[3].

Curva de respuesta que muestra saturación: En este ejemplo conceptual, la respuesta (ventas) aumenta rápidamente con las primeras unidades de publicidad, pero luego la curva se aplana indicando sobre-inversión o saturación, dónde gastos adicionales generan incrementos mínimos. [Fuente: Recast]

La saturación refleja el principio de rendimientos marginales decrecientes en la publicidad[4]. Inicialmente, invertir en un canal capta la audiencia más receptiva (“low hanging fruit”), logrando un gran impacto por dólar. Sin embargo, al seguir gastando se agota la audiencia más fácil y deben alcanzarse usuarios menos relevantes o más costosos, haciendo que la eficiencia caiga (el costo por adquisición sube y el ROI baja)[2][5]. En términos prácticos, identificar la saturación ayuda a optimizar la asignación de presupuesto, deteniendo la inversión en un canal antes de desperdiciar dinero con retornos casi nulos[6].

¿Cómo se modela técnicamente la saturación?

Para incorporar la saturación en un MMM, se aplican transformaciones no lineales a las variables de gasto de medios, de modo que el impacto incremental se desacelere a altos niveles de inversión. Existen varias formas técnicas de modelar este efecto:

  • Funciones cóncavas simples: Por ejemplo, usar un logaritmo (y = log(x)) o una potencia con exponente menor a 1 (y = x^α, 0<α<1). Estas transformaciones producen una curva C (cóncava monótona, donde el crecimiento es rápido al inicio y luego se desacelera. Son sencillas pero no imponen un límite máximo fijo (la respuesta sigue creciendo indefinidamente aunque a ritmo decreciente).

  • Funciones en S (sigmoides): Incorporan un crecimiento lento inicial, aceleración a niveles medios y desaceleración posterior, reflejando que puede haber umbrales donde la publicidad necesita cierta escala para ser efectiva, pero eventualmente alcanza un máximo. Un ejemplo típico es la función logística o función Hill, muy popular en MMM[7][8]. La función Hill es una sigmoide flexible de dos parámetros que define la contribución relativa de una inversión como:

Donde (abreviatura de half-saturation o punto de semi-saturación) es el nivel de inversión al cual se alcanza el 50% del efecto máximo, y slope es la pendiente que controla la forma de la curva[9]. Con esta función, a medida que , la respuesta tiende a 0; y cuando es muy grande, la respuesta se aproxima a 1 (o al efecto máximo escalado por el modelo). El parámetro de pendiente ajusta la curvatura: un slope menor o igual a 1 produce una curva cóncava típica (tipo C), mientras que un slope > 1 genera una curva en S que es convexa en bajos niveles (crecimiento lento inicial) y cóncava en altos niveles (saturación)[10].

En la práctica, muchas herramientas MMM usan la función Hill por su flexibilidad. Por ejemplo, Meta Robyn implementa la saturación con una función Hill de dos parámetros, y equivalentes a la pendiente y el punto de inflexión respectivamente[11]. controla la forma de la curva (a mayor α, más marcada la forma en S; a menor α, curva más cóncava tipo C) y define el punto de inflexión o semi-saturación (una γ grande desplaza la saturación hacia niveles de gasto más altos)[11]. Google Meridian de igual forma utiliza la función Hill con parámetros llamados slope (pendiente) y ec (half-saturation) para modelar las curvas de respuesta saturadas[8][9].

Otras formulaciones: Existen variantes y aproximaciones según cada implementación. Algunos modelos Bayesianos pueden estimar directamente puntos de saturación mediante priors de ROI; otros enfoques más experimentales emplean redes neuronales o funciones spline que aprenden curvas de respuesta sin presuponer una forma funcional fija. Sin embargo, las opciones clásicas (logarítmica, potencia, Hill/logística) siguen siendo las más comunes dado que aportan interpretabilidad (p. ej., saber el punto al que se llega al 50% de efecto máximo).

En resumen, técnicamente la saturación se incorpora transformando la variable de inversión con una función de rendimientos decrecientes. Esta transformación se aplica antes de la regresión, de modo que el modelo reconozca que aumentar de \$10 mil a \$20 mil tiene un efecto incremental menor que pasar de \$0 a \$10 mil, por ejemplo[12].

Relación e interacción con el Adstock

El Adstock es otra transformación clave en MMM, utilizada para modelar el efecto de carryover o lag de la publicidad en el tiempo (ej.: una parte del impacto de un anuncio se prolonga durante semanas posteriores)[13]. Tanto adstock como saturación se aplican a las variables de medios, y no conmutan: el orden en que se apliquen altera el resultado[14]. Por lo tanto, es importante entender cómo combinarlos correctamente.

En la mayoría de implementaciones, se aplica primero el adstock y luego la saturación[15]. Esto significa que primero calculamos una versión “retenida” o acumulada del gasto (que refleja los efectos atrasados de campañas pasadas según una tasa de decaimiento) y después le aplicamos la función de saturación para reflejar los rendimientos decrecientes en cada periodo. Este enfoque tiene sentido cuando el gasto está distribuido de forma relativamente continua a lo largo del tiempo, ya que cada período por sí solo no alcanza altos niveles de inversión comparado al gasto acumulado histórico[16]. Por ejemplo, si invertimos \$1000 cada semana, es mejor modelar cómo ese gasto semanal se acumula (adstock) y luego saturar el efecto acumulado.

Sin embargo, en casos donde el gasto es muy pulsado o concentrado (p. ej. campañas cortas de altísima inversión seguidas de nada), algunos modeladores optan por aplicar la saturación primero y luego el adstock[17]. La lógica es que si en un solo periodo se invirtió una suma muy grande, conviene captar inmediatamente la saturación de ese pico antes de difuminarlo en el tiempo. De lo contrario, el adstock podría “arrastrar” un valor enorme a períodos futuros sin haberlo limitado, sobreestimando el efecto en arrastre. En cualquier caso, la regla general es: adstock primero si los gastos por periodo son pequeños comparados al total en el horizonte temporal, y saturación primero si hay períodos individuales con gastos excepcionalmente altos en comparación al resto[16].

Tanto Robyn como Meridian permiten estas configuraciones. En Meridian, por ejemplo, existe un parámetro booleano hill_before_adstock para elegir el orden de las transformaciones – por defecto es False, indicando que la función de saturación Hill se aplica después del adstock (post-adstock)[18]. En Robyn, la secuencia estándar también es adstock → saturación, usando adstock geométrico o Weibull seguido de la función Hill[15][19]. En cambio, la librería Orbit (ver próxima sección) no fuerza un enfoque específico, dejando al analista decidir cómo preprocesar los datos o construir el modelo con estas transformaciones manualmente.

En resumen, adstock y saturación son efectos complementarios: primero modelamos cómo la publicidad se “memoria” en el tiempo (adstock/carryover) y luego cómo pierde efectividad a altos niveles (saturación). Juntos permiten que el MMM refleje tanto el retardo temporal del impacto publicitario como sus retornos marginales decrecientes.

Ejemplos: impacto de la saturación en ROI incremental

Para visualizar el efecto de la saturación, consideremos ejemplos conceptuales de ROI (retorno sobre la inversión) en diferentes niveles de gasto:

  • Doble inversión vs. doble resultado: Imaginemos que gastar \$50 mil en un canal genera 100 conversiones. Sin saturación, esperaríamos que gastar \$100 mil produjera ~200 conversiones (linealidad). Con saturación, probablemente obtengamos bastante menos de 200. De hecho, un principio clave es que no se puede simplemente duplicar el spend y esperar duplicar las ventas[2]. El ROI disminuye al aumentar el gasto: quizá \$50k→100 conv. implica un ROI de 2 conv/$1k, pero \$100k puede dar, digamos, 150 conv., bajando el ROI a 1.5 conv/$1k. Cada dólar adicional aporta menos que el anterior.

  • Retorno marginal decreciente: Supongamos que las primeras \$10 mil en un canal generan \$30 mil en ingresos (un ROI de 3x o 300%). Si invertimos otros \$10 mil (pasando de 10k a 20k), esos siguientes 10k tal vez solo produzcan \$15 mil adicionales – el ROI marginal de esa tranche cae a 1.5x (150%). Al subir de 20k a 30k, quizá el incremento sea solo \$5 mil más (ROI marginal 0.5x). Finalmente, más allá de cierto punto, invertir más no genera prácticamente nada nuevo (ROI marginal cercano a 0).

  • Saturación total: En algunos casos extremos, la curva de respuesta llega a un techo absoluto. Por ejemplo, si un canal alcanza a toda su audiencia potencial con \$5 millones, gastar \$6 o \$7 millones no traerá clientes nuevos[20]. El ROI incremental después de \$5M es cero, y el ROI promedio global cae conforme se incluyen esos gastos adicionales sin retorno.

Relación entre gasto, ingresos y ROI: La curva azul muestra ingresos incrementales vs. inversión (saturándose cerca de 5.5 unidades monetarias). Los triángulos naranjas (eje derecho) representan el ROI obtenido en cada nivel de gasto – nótese cómo el ROI disminuye de ~13x a ~7x a medida que la inversión crece, ilustrando rendimientos marginales decrecientes. [Fuente: Recast]

En la gráfica anterior, se observa que al inicio el ROI es muy alto (pocos dólares generan un gran retorno), pero conforme nos movemos a mayores niveles de spend, el ROI cae pronunciadamente. Esto refleja la saturación: el ROI incremental (también llamado mROAS, retorno marginal sobre la inversión) se reduce con cada tramo adicional de presupuesto[21]. Identificar estos puntos permite decidir, por ejemplo, que quizás conviene reubicar presupuesto a otro canal una vez que el actual ha alcanzado su saturación y su ROI marginal es bajo.

Comparativa: Saturación en Robyn, Meridian y Orbit

A continuación se presenta una tabla técnica comparativa de cómo tres soluciones MMM de última generación — Meta Robyn, Google Meridian y Uber Orbit — abordan el modelado de la saturación, incluyendo sus funciones utilizadas, parámetros, calibración, interacción con adstock, flexibilidad, plataforma y casos de uso ideales:

Aspecto

Meta Robyn

Google Meridian

Uber Orbit

Función de saturación

Función Hill (S-curve sigmoide) para cada canal[22].

Función Hill de 2 parámetros (idéntica conceptualmente a la de Robyn)[8].

No incluye una función de saturación específica por defecto. El usuario debe incorporarla manualmente si se requiere (p. ej. aplicando una transformación logística a los datos de entrada o en la modelación).

Parámetros de saturación

Dos hiperparámetros por canal: α (alpha) y γ (gamma). α controla la forma de la curva (de concava a S) y γ la inflexión/punto de semi-saturación[11]. Se ajustan durante el entrenamiento (búsqueda de hiperparámetros).

Dos parámetros estimados por canal: slope (pendiente de la curva) y ec (half-saturation, el gasto al 50% del efecto)[9]. Estos parámetros se infieren automáticamente mediante el modelo bayesiano (son parámetros del posterior).

No tiene parámetros de saturación predefinidos, dado que no aplica una función de saturación internamente. Si el analista agrega una curva de saturación (ej. logística), tendría que definir sus parámetros (y decidir si fijarlos o estimarlos dentro de un modelo personalizado).

Calibración / Automatización

Automatizado: Robyn utiliza algoritmos evolutivos (Nevergrad) para optimizar α y γ junto con otros hiperparámetros, buscando el mejor ajuste sin intervención humana[23]. Además, permite calibrar el modelo con datos externos (p. ej. resultados de experimentos de lift o meta-datos de ROI) para ajustar las curvas de respuesta a la realidad empresarial (incluyendo métricas de error de calibración en la optimización)[24].

Bayesiano: Meridian estima directamente en la inferencia los parámetros de saturación a partir de los datos, por lo que no requiere búsqueda externa de hiperparámetros para saturación. Ofrece calibración mediante prior: se pueden incorporar priors informativas de ROI (por ejemplo, basados en experimentos previos) para guiar la estimación de las curvas[25][9].

Manual: Orbit, al ser una librería de propósito general, no proporciona automatización específica para saturación. No realiza tuning automático de hiperparámetros de curva (ni asume ninguno). La calibración dependerá del usuario – por ejemplo, podría ajustarse indirectamente estableciendo priors en un modelo bayesiano custom dentro de Orbit, pero esto recae en la configuración manual del modelador.

Adstock (carryover)

– Robyn aplica primero una función de adstock a cada canal antes de la saturación. Soporta adstock geométrico (1 parámetro de decaimiento) o adstock Weibull (2 parámetros, PDF o CDF) para mayor flexibilidad en la forma de decaimiento[19][26]. El adstock se optimiza como hiperparámetro junto con la saturación. La saturación Hill se aplica post-adstock (por defecto) a los datos adstockeados.

– Meridian incluye de base un adstock geométrico (decaimiento exponencial) con parámetro de retención[27]. Permite especificar hasta qué lag máximo considerar. Por defecto, Meridian aplica primero el adstock y luego la saturación Hill[15], aunque ofrece la opción de invertir el orden si se configura (hill_before_adstock=True).

No nativo – Orbit no tiene adstock incorporado explícitamente[28]. El usuario debe modelar efectos de carryover mediante transformaciones de datos (por ejemplo generar variables laggeadas y decaídas externamente) o extendiendo el modelo de tiempo-varying coefficients para captar persistencia. En resumen, es posible, pero no viene “listo para usar” como en Robyn/Meridian, requiriendo personalización.

Flexibilidad y limitaciones

Enfocado en MMM, con estructura semi-automatizada: muy útil para marketing analysts con muchos canales, ya que evita sesgos humanos optimizando múltiples configuraciones[23]. Ofrece funciones integradas (adstock, saturación, estacionalidad con Prophet, regularización ridge, etc.), pero menos libertad para cambiar la forma del modelo fuera de lo previsto. Requiere cierto dominio de R. Escalable a muchos canales, aunque el espacio de búsqueda de hiperparámetros puede ser computacionalmente costoso.

Altamente personalizable dentro de un marco bayesiano preconstruido: al ser open-source de Google, el código se puede ajustar (por ejemplo, cambiar priors, añadir jerarquías por geo, etc.). Brinda incertidumbre en las estimaciones gracias a la inferencia bayesiana. Sus limitaciones incluyen la complejidad computacional (muestreo MCMC) y la necesidad de expertise estadístico para interpretar/ajustar priors. Sin embargo, al seguir un approach probabilístico, evita sobreajuste clásico y permite incorporar conocimiento externo fácilmente.

Máxima flexibilidad: Orbit es una librería general de series de tiempo (no exclusiva de MMM). Permite construir modelos de coeficientes variantes en el tiempo (BTVC)[29], combinando componentes de tendencia, estacionalidad y regresores con coeficientes dinámicos. Esto le da capacidad de adaptarse a cambios en la efectividad de canales a lo largo del tiempo, algo único de Orbit. Limitación: esa libertad implica que el usuario debe codificar muchos elementos (saturación, adstock, etc.) por su cuenta. Requiere alto conocimiento técnico (Python/Stan, modelos bayesianos) y el esfuerzo de implementación es mayor. No está “listo para usar” para MMM, sino que sirve de base para desarrollar un MMM a medida

Lenguaje y plataforma

Paquete R (open source). Se integra con Python mediante reticulate si es necesario, pero principalmente orientado a R. Dispone de documentación activa y comunidad de usuarios en crecimiento (impulsada por Meta)[30][31]. Corre localmente o en servidores R.

Biblioteca en Python (open source) basada en NumPyro/PyMC. Distribuida vía pip/GitHub. Google proporciona documentación extensa (Google Developers) y recursos comunitarios. Se puede ejecutar en entornos Jupyter, Colab, etc. por su naturaleza Python, facilitando la integración con flujos de datos modernos[30][31].

Framework en Python (desarrollado por Uber) que internamente utiliza Stan/ARVIZ para MCMC. Instalación vía pip. Documentación disponible en ReadTheDocs y comunidad orientada a time-series/forecasting. Por ser agnóstico al dominio, su soporte específico a marketing viene de blogs y guías de terceros (Uber y comunidad bayesiana) más que de documentación de marketing dedicada.[30][32]

Casos de uso ideales

Empresas data-rich con gran cantidad de datos de marketing y múltiples canales a optimizar[33]. Situaciones donde se requiera probar muchas configuraciones de modelo y obtener recomendaciones accionables (p.ej. re-asignación de presupuesto) de forma semiautomatizada. Robyn brilla en entornos donde la velocidad no es crítica (entrenar decenas de modelos puede llevar horas) pero sí la profundidad de insights y robustez del modelo. Ideal para equipos de marketing analytics que deseen un enfoque opensource respaldado por IA de Meta.

Muy útil en contextos que requieran transparencia y rigor estadístico, por ejemplo organizaciones preocupadas por incorporar conocimiento a priori (calibraciones) o con datos limitados donde un enfoque bayesiano aporte estabilidad. Aplicable a diversos sectores (retail, finance, e-commerce, etc.) que busquen una solución de MMM open-source apoyada por Google. También encaja cuando se necesita flexibilidad para extensiones (como modelos jerárquicos por región, o incluir métricas de alcance/frecuencia) dentro de un marco estadístico sólido. En general, industrias variadas donde se requieran insights rápidos y confiables a partir de MMM[34].

Escenarios de mercados dinámicos con cambios rápidos en la efectividad de medios[34]. Por ejemplo, empresas de tecnología o apps donde las relaciones publicidad-ventas evolucionan mes a mes, y es valioso capturar coeficientes que varían en el tiempo. También útil cuando MMM se quiere integrar con forecasting directamente (p.ej. predecir ventas futuras incorporando la inversión óptima). Es la elección para equipos con fuerte capacidad técnica que necesiten un modelo totalmente personalizado y adaptativo en el tiempo, más que una solución estándar de “mix modeling” estático.

Nota: Todas estas herramientas consideran explícitamente la saturación (diminishing returns) y el adstock (lag) en sus metodologías, pero difieren en implementación. La selección suele depender de los recursos del equipo, el volumen de datos y la necesidad de flexibilidad vs. facilidad de uso. Por ejemplo, Robyn automatiza muchas decisiones y facilita la generación de reportes y recomendaciones de presupuesto, mientras Meridian ofrece la solidez de un enfoque bayesiano personalizable, y Orbit brinda máxima flexibilidad para casos especiales (a costa de mayor complejidad de desarrollo). Cada enfoque busca, en última instancia, modelar de manera realista las curvas de respuesta de marketing, asegurando que los análisis de atribución y optimización de presupuesto reflejen correctamente tanto la persistencia temporal de los impactos publicitarios como sus retornos marginales decrecientes (saturación).[1][3]


[1] [23] [28] [29] [30] [31] [32] [33] [34] LightweightMMM vs Robyn vs Orbit: Marketing Mix Model Comparison | evolvingDev

[2] [3] [5] [6] [20] Diminishing Returns: Accounting for Channel Saturation - Recast

[4] [8] [9] [10] [15] [18] [25] [27] Media saturation and lagging | Meridian | Google for Developers

[7] [11] [12] [13] [19] [22] [24] [26] Introduction to Market Mix Model Using Robyn

[14] [16] [17] [21] Media Effect Estimation with PyMC: Adstock, Saturation & Diminishing Returns - Dr. Juan Camilo Orduz

¿Ha quedado contestada tu pregunta?