O MMM Lab do site é um simulador educacional, com parâmetros ilustrativos — bom para entender o conceito, mas sem dado real por trás. Este estudo é o oposto: adstock, curva de saturação e regressão ajustados de verdade sobre um dataset público (200 semanas, 2018-2021), com validação fora da amostra (treino/teste) e cada limitação documentada honestamente, inclusive os achados negativos.
Marketing Mix Modeling com dados reais: TikTok, Facebook e Google Ads
Adstock, saturação, ROI marginal e validação fora da amostra
Por Thiago Rosa · TSR Insights · código completo no GitHub →
Resultado do modelo completo
0.592
R² (base completa)
0.278
R² (teste, dado nunca visto)
R$ 1.560
MAE no teste
13.7%
erro médio / Sales médio
Resposta por canal
TikTok
95.1%
contribuição / Sales médio
0.12x
ROI marginal
0.45
adstock (λ)
0.16
shape da curva
Maior contribuição total do modelo, mas já na parte achatada da curva (shape < 1, satura quase de imediato) — por isso o ROI marginal é baixo mesmo com contribuição alta.
53.8%
contribuição / Sales médio
0.10x
ROI marginal
0.25
adstock (λ)
0.14
shape da curva
Ajuste de curva mais fraco que o TikTok (R² isolado de 0.099) — padrão semelhante, mas com menos confiança estatística no formato exato da saturação.
Google Ads
17.9%
contribuição / Sales médio
1.26x
ROI (constante, linear)
0.00
adstock (λ)
—
sem saturação detectada
A curva de saturação ajustada isoladamente teve R² negativo (-2.564) — pior que simplesmente usar a média. Tratado como retorno linear por falta de evidência de não-linearidade, não por prova de que o canal nunca satura (o investimento quase não variou no dataset).
Metodologia, em resumo
Adstock (spend[t] + decay × adstock[t-1]) com decay estimado por grid search, não escolhido a dedo. Curva de saturação Hill/logística ajustada por otimização numérica. Regressão múltipla com variável de tendência para isolar crescimento orgânico do efeito de mídia. Validação com split temporal 80/20 — decay e saturação reestimados só com dado de treino, testados em semanas que o modelo nunca viu.
O que a validação fora da amostra revelou
R² caiu de 0.644 (treino) para 0.278 (teste) — sinal real de que parte do ajuste no treino capturava padrão específico daquele período, não só sinal genuíno. O maior erro de previsão no teste coincidiu com a retomada de investimento logo após seis semanas de baixo investimento, bem no Dia dos Namorados — o modelo não tem variável de sazonalidade, então não separa efeito de calendário de efeito de mídia nesse ponto. Investigado e documentado no notebook 04, não escondido atrás de um número de R² isolado.
Crescimento orgânico (Trend)
R$ 3,33 / semana
A regressão inclui uma variável de tendência (a numeração sequencial das semanas) além dos 3 canais de mídia. O coeficiente dela — R$ 3,33 por semana, estimado só com dado de treino — é a leitura de quanto Sales cresce apenas pela passagem do tempo, isolado do efeito de TikTok, Facebook e Google Ads: crescimento que aconteceria de qualquer forma, sem mérito atribuível a investimento em mídia.
Limitações honestas
Dataset pequeno (200 semanas), sem variáveis de controle externas (preço, promoção, sazonalidade). Curva do Google Ads não confiável por falta de variação no investimento observado. Resíduos do modelo completo mostram padrão sistemático, não ruído aleatório puro — sinal de que falta alguma variável que este dataset não tem. Fonte dos dados é um dataset comunitário do Kaggle, sem confirmação oficial de que é 100% real, não sintético.