Robyn a fondo: lo que puede y lo que no puede decirte
Probamos Robyn en 60 negocios sintéticos donde conocemos el retorno real de cada canal. Sin calibrar, sus planes no fueron mejores que no hacer nada. Con cinco geolifts, decidió tan bien como PyMC-Marketing y Meridian.
En este artículo
- Cómo lo probamos
- Cómo funciona Robyn
- Python o R: corrimos ambos y nos quedamos con R
- Sin calibrar, Robyn sobreestima los medios
- La calibración es lo que vuelve útil a Robyn
- Coeficientes fijos: Robyn promedia el canal en el tiempo
- Un mundo aditivo: los medios se suman a la base, nunca escalan con ella
- Qué puede y qué no puede decir esta evaluación
- Si usas Robyn
Robyn es uno de los MMM de código abierto más usados, y suele ser el primero que un equipo instala. Lo probamos en 60 negocios sintéticos donde conocemos el retorno real de cada canal, y le hicimos una sola pregunta: si mueves el presupuesto como dice Robyn, ¿vendes más?
Sin calibrar, no de forma confiable. En nuestro mundo real, seguir el ranking de Robyn capturó prácticamente nada de la ganancia disponible, y en la mitad de los negocios perdió ventas contra dejar el presupuesto como estaba. Con cinco geolifts, Robyn tomó decisiones tan buenas como PyMC-Marketing y Meridian con los mismos cinco lifts, y tuvo el menor sesgo de los tres.
El resto de este texto cubre cómo funciona Robyn, qué versión correr, por qué la calibración pesa tanto, y dos supuestos que Robyn hace sobre el mundo y que ningún ajuste elimina: coeficientes fijos y una respuesta aditiva.
Cómo lo probamos
Construimos tres mundos sintéticos con 20 negocios cada uno. Cada negocio tiene entre 3 y 20 canales de medios, dos o tres años de datos semanales, precios, promociones y su propio margen. Como nosotros generamos las ventas, conocemos el retorno real de cada canal y el presupuesto que maximiza las ventas.
| Mundo | Canales | Semanas | Qué lo hace difícil |
|---|---|---|---|
| Laboratorio limpio | 3 a 5 | 156 | Nada. La inversión no depende de la demanda; poco ruido. |
| Mundo real | 5 a 10 | 104 | Los planners suben la inversión cuando la demanda ya viene; los canales se mueven juntos; promociones y competidores cambian qué tan bien funcionan los medios. |
| Adversarial | 10 a 20 | 104 | Los mismos problemas, más fuertes, y además cambios estructurales. |
En los mundos difíciles, la inversión en medios se mueve con la demanda
r = correlación de la inversión semanal con la demanda. Entre más alta, más difícil saber qué causaron los medios.
Lo que cambia de un mundo a otro es qué tan de cerca sigue la inversión a la demanda. En el laboratorio limpio, la inversión se mueve con su propio calendario, así que un modelo puede ver lo que aportan los medios. En los otros dos, la inversión sube cuando sube la demanda, y en el mundo adversarial un quiebre además mueve ambas al mismo tiempo.
Calificamos cada modelo con un índice de arrepentimiento. Tomamos el ranking de canales del modelo, movemos hasta 30% del presupuesto de sus peores canales a los mejores (con el mismo presupuesto total) y simulamos las ventas. Un índice de 0 significa que el plan del modelo capturó toda la ganancia disponible; 1 significa que le fue igual que no mover nada; arriba de 1, seguir al modelo hizo perder ventas. Reportamos la mediana de los 20 negocios de cada mundo. También reportamos el sesgo, el error relativo promedio del ROAS de cada canal, contra un límite de ±30%.
El índice de arrepentimiento: cuánto de la ganancia posible deja un plan en la mesa
Negocio ilustrativo. Cada plan mueve hasta 30% del presupuesto, mismo total. Barras = ventas contra no mover nada.
El índice se lee como la parte de las ventas incrementales disponibles que un plan deja de capturar. El plan del modelo A obtiene 6 de los 10 puntos disponibles, así que deja 40% en la mesa: índice 0.40. El plan del modelo B vende menos que no hacer nada, así que su índice queda arriba de 1.
Los mundos son sintéticos a propósito. Un negocio real nunca te dice su ROAS verdadero; un conjunto de datos real puede decirte qué modelo reproduce mejor la historia, pero no cuál da la respuesta correcta.
Cómo funciona Robyn
Robyn no ajusta un modelo. Ajusta miles y luego escoge uno. Cada candidato transforma la inversión con un adstock (arrastre) y una curva de saturación, y luego ajusta una regresión ridge de las ventas sobre los medios transformados, una tendencia y estacionalidad de Prophet, y tus variables de contexto. Una búsqueda evolutiva (Nevergrad) propone los parámetros de transformación; cada candidato se califica con dos objetivos: qué tan bien reproduce la historia (NRMSE) y qué tan lejos está su reparto de medios del reparto de la inversión (DECOMP.RSSD). Con pruebas de lift se suma un tercer objetivo: qué tan lejos están los efectos de cada canal de los lifts medidos (MAPE.LIFT).
Robyn ajusta miles de modelos candidatos, los califica y se queda con uno
Cada candidato es una elección de parámetros de adstock y saturación; los lifts solo agregan un puntaje
De este diseño salen dos consecuencias. Primero, la respuesta depende de cómo eliges entre candidatos, un paso que la mayoría de los usuarios hace a ojo sobre los one-pagers de Robyn. Segundo, en Robyn las pruebas de lift son un filtro sobre qué candidato gana, no una restricción dentro del ajuste. Ese segundo punto explica casi todo lo que pasa en el mundo adversarial.
Python o R: corrimos ambos y nos quedamos con R
Empezamos con robynpy 0.3.6, la versión en Python, porque el resto de nuestro stack está en Python. Antes de confiar en cualquier número, la revisamos línea por línea contra Robyn en R, y encontramos un problema que es de la versión en Python y tres que eran de nuestra configuración. La tabla compara la versión en Python como la corrimos al inicio con Robyn en R como lo corrimos en el estudio.
| Diferencia | robynpy 0.3.6 | Robyn en R | De quién |
|---|---|---|---|
| Calibración | No implementada: MAPE.LIFT está fijo en 0 y el calibrador nunca se llama | Nativa; MAPE.LIFT es un tercer objetivo | De la versión en Python |
| Tendencia y estacionalidad | Apagadas | Tendencia y estacionalidad de Prophet | Nuestra |
| Signo de medios | Sin restricción; 7% de los canales salió negativo | Positivo (default de R) | Nuestra |
| Búsqueda y selección | 3 corridas × 1,000 iteraciones; primera solución de Pareto | 5 corridas × 2,000 iteraciones; mejor representante de cluster en NRMSE + DECOMP.RSSD (+ MAPE.LIFT) | Nuestra |
La de calibración es la que más pesa. En robynpy 0.3.6, pasarle pruebas de lift al modelo no cambia nada; cualquier corrida "calibrada" de Robyn en Python, en realidad, no está calibrada. El propio equipo de Robyn en Meta ha dicho que la versión en Python no está lista para uso en producción; por ahora, usa R.
Solo agregar Prophet movió mucho a la versión en Python: en el mundo real, su índice de arrepentimiento pasó de 1.21 a 0.84. Todos los números de Robyn a partir de aquí vienen del paquete oficial en R (CRAN), con Prophet, signo positivo y calibración nativa, corrido sobre los mismos 60 negocios que los otros modelos.
Sin calibrar, Robyn sobreestima los medios
Sin pruebas de lift, a Robyn solo le fue bien donde nada es difícil. En el laboratorio limpio, su índice de arrepentimiento mediano fue 0.34. En el mundo real fue 1.02: su plan no hizo nada mejor que dejar el presupuesto como estaba, y perdió ventas en 50% de los negocios. En el mundo adversarial fue 0.96.
Cinco lifts llevaron a Robyn de 1.02 a 0.43 en el mundo real
Índice de arrepentimiento, mediana de 20 negocios por mundo; línea = mitad central de los negocios. Menor es mejor.
Los errores van en una sola dirección. El sesgo mediano de ROAS de Robyn fue +160% en el laboratorio limpio, +408% en el mundo real y +1,514% en el adversarial, contra un límite de ±30%. PyMC-Marketing y Meridian con su configuración por default también sobreestimaron, por +738% y +653% en el mundo real. La causa es la misma para los tres: cuando los planners suben la inversión en las semanas en que la demanda ya está subiendo, el modelo ve que medios y ventas se mueven juntos y le da el crédito a los medios. La regresión ridge no te protege de eso; encoge todos los coeficientes hacia cero, pero no puede distinguir qué parte de un pico estacional causaron los medios. Ninguna estructura de modelo ni configuración puede separar esto con datos observacionales; solo un experimento que mueva la inversión independientemente de la demanda, como un geolift, puede hacerlo. Por eso las pruebas de incrementalidad no son opcionales.
El ajuste no nos ayudó a encontrar los buenos modelos. Dentro de cada mundo, la correlación de rangos entre el NRMSE de un modelo y su índice de arrepentimiento fue 0.10, 0.15 y 0.04 (Spearman, todos con p > 0.5). Un modelo de Robyn que reprodujo mejor la historia no produjo un mejor plan.
Esto importa porque el flujo de trabajo de Robyn, y buena parte de la guía que lo rodea, lleva a los analistas hacia los candidatos con mejor R² y menor error (NRMSE y DECOMP.RSSD). Esos puntajes miden qué tan bien un modelo reproduce el pasado, no si sus efectos por canal son correctos. Un modelo sirve solo si sus recomendaciones venden más, y en nuestros datos el ajuste no nos dijo casi nada sobre eso.
La calibración es lo que vuelve útil a Robyn
Cinco geolifts hicieron más por Robyn que cualquier configuración que cambiamos. En el mundo real, su sesgo pasó de +408% a +16% y su índice de arrepentimiento de 1.02 a 0.43. Nuestros lifts simulados se comportan como geo-holdouts reales: cuatro semanas de prueba más cuatro de cooldown, con ruido de medición. Robyn los recibió por su entrada nativa de calibración, con scope total.
Cinco lifts dejaron a Robyn dentro del límite de ±30% en dos de tres mundos
Sesgo mediano de ROAS por canal, antes (gris) y después (verde) de cinco lifts. Escala logarítmica: cada línea es ~3× la anterior.
Con los mismos cinco lifts, las decisiones de Robyn fueron tan buenas como las de los modelos bayesianos en el mundo real: 0.43 contra 0.41 de PyMC-Marketing y 0.42 de Meridian. Fue el único de los tres con sesgo dentro de ±30%. La salvedad está en la cola: aun calibrado, Robyn dejó al 20% de los negocios del mundo real peor que sin hacer nada, contra 0% de PyMC-Marketing y 5% de Meridian.
Con cinco lifts, Robyn empató con los modelos bayesianos en el mundo real
Índice con cinco lifts, mediana de 20 negocios. Menor es mejor; 1 = igual que no mover el presupuesto.
El mundo adversarial es donde Robyn se queda atrás. Los lifts llevaron su índice de 0.96 a 0.88; PyMC-Marketing pasó de 1.00 a 0.68 y Meridian de 1.15 a 0.58. Creemos que la razón es el lugar por donde entran los lifts al modelo.
Robyn usa los lifts para escoger un modelo; los bayesianos ajustan con ellos
En PyMC-Marketing y Meridian, un lift es evidencia dentro del ajuste: la posterior tiene que coincidir con los datos y con el experimento al mismo tiempo, así que el lift jala el coeficiente de su canal y, a través de él, el resto. En Robyn, un lift es un puntaje más para ordenar candidatos que ya se ajustaron sin él. Si la confusión es tan fuerte que ningún candidato de la búsqueda reproduce la historia y los lifts a la vez, Robyn escoge el menos malo, y los lifts no pueden jalarlo más. Más iteraciones amplían la búsqueda, pero no cambian ese mecanismo.
Coeficientes fijos: Robyn promedia el canal en el tiempo
Robyn le da a cada canal un solo coeficiente para toda la ventana del modelo. El adstock y la saturación también son fijos. El modelo supone que un peso en Meta en el primer año vendió lo mismo que un peso en Meta en el tercer año, al mismo nivel de inversión.
Eso casi nunca es cierto. El mismo canal cambia en dos o tres años por razones que los datos muestran solo de forma indirecta: la demanda de la categoría sube o baja; el equipo cambia creativos, audiencias y estrategia de puja; una plataforma cambia su algoritmo; el negocio abre tiendas o cambia su catálogo. Cada uno de esos cambios mueve cuánto vende un peso en ese canal. Robyn no puede ver el cambio, así que devuelve el promedio del canal a lo largo de la ventana, y defines el presupuesto del siguiente trimestre con un promedio que no describe al canal de hoy.
Un solo coeficiente promedia un canal que cambió, y lo sobrevalora hoy
Canal ilustrativo, ROAS semanal en tres años. Después de la semana 72 el equipo cambia creativos y operación.
En este ejemplo, el coeficiente de tres años dice que el canal devuelve 2.32 por peso. En el último año devolvió 1.59. Un optimizador de presupuesto que lee el coeficiente fijo sobrevalora el canal en 46% y lo sigue alimentando, justo cuando el canal merece menos.
El coeficiente fijo tiene una ventaja real: da una curva por canal, y una curva es fácil de optimizar y fácil de explicarle a un CFO. El costo aparece en la práctica. Cuando el negocio tuvo un cambio de régimen dentro de los datos, la solución habitual es recortar la ventana del modelo (window_start y window_end en Robyn) al periodo posterior al cambio. Eso quita el problema del promedio y crea uno de datos: un modelo ajustado con 12 meses en lugar de 36 tiene un tercio de la historia para separar los medios de la estacionalidad y entre sí. En nuestra experiencia, llegar a un modelo de Robyn que se sostenga en un negocio con cambios de régimen toma varias rondas de recortar ventanas y volver a ajustar, y limita cuánta historia de largo plazo puedes usar.
PyMC-Marketing ofrece otra opción: coeficientes que cambian en el tiempo (time_varying_media y time_varying_intercept, construidos sobre un proceso gaussiano). El efecto del canal se vuelve una curva en el tiempo en lugar de un solo número, y el modelo estima cuánto se le permite moverse. Eso cuesta más datos por parámetro y más cuidado con los priors, y no lo probamos en este benchmark. A cambio, permite conservar tres años de historia sin suponer que el primer año se parece al tercero. Meridian deja que la línea base se mueva en el tiempo (knots), mientras que sus efectos de medios se quedan fijos, igual que en Robyn.
Un lift calibrado también ayuda aquí, con una condición: un lift mide el canal en el momento de la prueba. Un lift de hace 18 meses, metido en un modelo con coeficientes fijos, jala el promedio, no el presente. Corre lifts con regularidad y dale más peso a los recientes.
Un mundo aditivo: los medios se suman a la base, nunca escalan con ella
Robyn escribe las ventas como una suma: base (tendencia, estacionalidad, días festivos, variables de contexto) más la contribución de cada canal. La misma inversión en un canal suma las mismas ventas en una semana floja y en la temporada alta. Precio, promociones y competidores entran como términos adicionales de la suma, así que pueden mover la base, pero no pueden cambiar qué tan bien funcionan los medios.
La mayoría de los negocios con los que trabajamos no se comporta así. Un peso de medios vende más en diciembre que en febrero porque hay más gente lista para comprar; una promoción hace que el mismo anuncio convierta mejor; un competidor que duplica su inversión hace que la tuya funcione peor. En nuestro simulador, las ventas son base × (1 + medios), y los medios dependen de promociones, distribución y presión competitiva.
La misma inversión vende más en temporada alta, y un modelo aditivo no lo ve
Ventas semanales ilustrativas, misma inversión en ambas semanas. Gris: demanda base. Verde: ventas por medios.
Cuando el mundo multiplica y el modelo suma, el modelo no tiene dónde poner las ventas extra de las semanas pico. Se las da a lo que también sube en esas semanas, que suele ser la inversión. En nuestro laboratorio limpio, cambiar solo ese supuesto en el mismo modelo movió el sesgo de ROAS de +340% (aditivo) a +130% (multiplicativo).
Para ser justos, la forma multiplicativa no es gratis. Si tu negocio se parece más a uno aditivo, un modelo multiplicativo se equivoca en la dirección contraria, y lo confirmamos en una prueba pre-registrada con un mundo aditivo. Lo que se sostuvo en ambos mundos fue la calibración: con cinco lifts, las dos familias tomaron buenas decisiones, sumara o multiplicara el mundo. Esa es la lectura práctica para quien usa Robyn. No puedes cambiar la estructura de Robyn, pero sí puedes corregir sus números con experimentos, y a los experimentos no les importa el álgebra del modelo.
Qué puede y qué no puede decir esta evaluación
Lo que Robyn hace bien, en nuestros datos: te muestra cada candidato que probó y por qué lo ordenó así, su calibración funciona en R, y con lifts alcanzó el menor sesgo de todos los modelos que corrimos en el mundo real. Lo que no puede hacer: representar un canal cuyo efecto cambia en el tiempo, representar medios que escalan con la demanda, o usar un lift como algo más que un filtro de candidatos.
Los límites de nuestra prueba:
- Mundos sintéticos. Están construidos para parecerse a los negocios que vemos, pero son nuestros. Un mundo donde la inversión no sigue a la demanda favorecería a todos los modelos.
- Nuestro simulador es multiplicativo. Es deliberado: creemos que los negocios reales multiplican, con efectos que cambian en el tiempo y canales y eventos que modifican el retorno de los demás. Aun así, pone en desventaja a la estructura aditiva de Robyn antes de calibrar. Lo decimos arriba, y la prueba pre-registrada con un mundo aditivo es nuestro control.
- Una regla de selección fija. Escogemos el representante de cluster con el mejor puntaje combinado. Un analista real escoge leyendo los one-pagers de Robyn, algo que ningún benchmark puede reproducir. Un buen analista puede hacerlo mejor que nuestra regla; uno con prisa, peor.
- Una sola configuración. Adstock geométrico, saturación Hill, 5 corridas × 2,000 iteraciones, sin días festivos (nuestras fechas son sintéticas). Un adstock Weibull o una búsqueda más larga pueden cambiar algunos números.
- Los intervalos no son comparables. Los intervalos de Robyn son la dispersión del ROI entre los modelos del cluster elegido, no incertidumbre posterior, así que no comparamos su cobertura con la de los modelos bayesianos.
- Lo que no guardamos. En esta corrida guardamos las métricas resumen de cada modelo, no sus estimaciones por canal, así que todavía no podemos mostrar en qué parte del ranking de canales están los errores de Robyn.
- El cambio de signo no está explicado. La versión en Python, como la corrimos al inicio, subestimó los medios (−56%); Robyn en R los sobreestimó (+408%). Entre las dos corridas cambiaron cuatro cosas, así que no podemos atribuir el cambio a ninguna en particular.
Si usas Robyn
- Usa Robyn en R. Mientras la versión en Python no implemente la calibración, usa el paquete de CRAN. Si tienes que usar la versión en Python, confirma en tu versión que MAPE.LIFT no es una constante.
- Prende Prophet y mantén el signo positivo en medios. Sin tendencia ni estacionalidad, ridge reparte la demanda estacional entre el intercepto y los medios de forma inconsistente.
- No escojas por ajuste. El NRMSE no predijo qué modelos tomaron buenas decisiones. Escoge entre los candidatos que coinciden con tus lifts.
- Calibra antes de mover presupuesto. Cinco lifts llevaron a Robyn de no ser mejor que no hacer nada al nivel de los modelos bayesianos en el mundo real. Sin lifts, trata su ROAS como una hipótesis de ranking, no como un número.
- Vigila los cambios de régimen. Si un canal cambió (nuevos creativos, nueva estrategia de puja, un mercado nuevo), Robyn va a promediar el antes y el después. Recorta la ventana o renueva los lifts, y ten claro cuál de las dos elegiste.
- Espera que le dé de más a los medios en temporada alta. Es la estructura aditiva. Los lifts corrigen el nivel de cada canal; no cambian la estructura, así que lee con cuidado las contribuciones de temporada alta.
- En negocios con mucha confusión, considera un modelo donde los lifts entren en la verosimilitud. En nuestro mundo adversarial, los lifts ayudaron menos a Robyn que a PyMC-Marketing y Meridian.
La pregunta con la que empezamos fue en qué MMM confiar. Después de 120 ajustes de Robyn, creemos que esa pregunta importa menos que si calibras o no. Robyn sin lifts tomó decisiones que no fueron mejores que no hacer nada; Robyn con cinco lifts las tomó tan bien como los otros dos. El modelo que eliges pone el techo; los experimentos que corres deciden qué tan cerca llegas a él.
También de Entropy Labs.
ArtículoTu MMM probablemente está mal: lo que aprendimos calibrando con geoliftsConstruimos negocios simulados donde conocemos el ROAS real y calificamos contra él a los MMM más populares. Cinco geolifts bajaron el sesgo de PyMC de +7.6 a +0.88. Correr experimentos importó más que elegir el modelo.Leer el artículo →
Estudio · PDF gratisMeta en 2026: qué funciona y qué no.Más de 10,000 creatividades de 32 marcas, cada anuncio comparado solo contra otros de la misma marca, campaña y mes. Exactamente una lección creativa viajó entre marcas. El estudio completo se descarga gratis.Descargar el estudio completo →