Executar diagnósticos do modelo

Depois da criação do modelo, você precisa avaliar a convergência, depurar, se necessário, e avaliar o ajuste dele.

Avaliar a convergência

A avaliação ajuda a garantir a integridade do modelo.

O comando plot_rhat_boxplot em visualizer.ModelDiagnostics() resume e calcula a redução de escala potencial de Gelman & Rubin (1992) para a convergência de cadeia, comumente chamada de R-hat. Esse diagnóstico de convergência mede o grau em que a variância (das médias) entre as cadeias excede o valor esperado caso as cadeias fossem distribuídas de maneira idêntica.

Há um único valor de R-hat para cada parâmetro do modelo. O boxplot resume a distribuição desses valores nos índices. Por exemplo, a caixa correspondente ao rótulo do eixo x beta_gm resume a distribuição dos valores de R-hat no índice geográfico g e no índice de canal m.

Valores próximos de 1,0 indicam convergência. R-hat < 1,2 indica a convergência aproximada e é um limite razoável para muitos problemas (Brooks & Gelman, 1998). Geralmente, a falta de convergência ocorre por um destes motivos: o modelo está mal especificado para os dados, o que pode estar na probabilidade (especificação) ou na priori, ou não há burn-in suficiente, ou seja, n_adapt + n_burnin não é grande o suficiente.

Se você tiver dificuldade, consulte Conseguir a convergência de MCMC.

Gerar um boxplot de R-hat

Execute os comandos:

model_diagnostics = visualizer.ModelDiagnostics(meridian)
model_diagnostics.plot_rhat_boxplot()

Exemplo de saída:

Gráfico de caixa do R-hat

Gerar gráficos das trajetórias e de densidade

Crie gráficos das trajetórias e de densidade para amostras de Monte Carlo via cadeias de Markov (MCMC) para avaliar a convergência e a estabilidade nas cadeias. No gráfico das trajetórias, cada traço representa a sequência de valores gerados pelo algoritmo MCMC à medida que ele explora o espaço de parâmetros. Ele mostra como o algoritmo passa por diferentes valores de parâmetros em iterações sucessivas. Nesses gráficos, evite áreas planas, em que a cadeia permanece no mesmo estado por muito tempo ou tem muitas etapas consecutivas em uma direção.

Os gráficos de densidade à esquerda mostram a distribuição de densidade dos valores da amostra para um ou mais parâmetros obtidos pelo algoritmo MCMC. É neles que você vai saber se as cadeias convergiram para uma distribuição de densidade estável.

Este exemplo mostra como gerar gráficos das trajetórias e de densidade:

parameters_to_plot=["roi_m"]
for params in parameters_to_plot:
  az.plot_trace(
      meridian.inference_data,
      var_names=params,
      compact=False,
      backend_kwargs={"constrained_layout": True},
  )

Exemplo de saída:

Gráficos das trajetórias e de densidade

Verificar as distribuições a priori e a posteriori

Quando há poucas informações nos dados, as duas distribuições são parecidas. Para mais informações, consulte Quando as distribuições a priori e a posteriori são iguais.

Canais com poucos gastos são mais suscetíveis a ter as distribuições a priori e a posteriori de ROI parecidas. Para corrigir o problema, recomendamos excluir os canais com gastos muito baixos ou combiná-los com outros canais ao preparar os dados para a MMM.

Execute os comandos a seguir para representar a distribuição a posteriori e a priori de ROI para cada canal de mídia:

model_diagnostics = visualizer.ModelDiagnostics(meridian)
model_diagnostics.plot_prior_and_posterior_distribution()

Exemplo de saída: (clique na imagem para ampliar).

distribuições

Por padrão, plot_prior_and_posterior_distribution() gera as distribuições a posteriori e a priori de ROI. No entanto, é possível transmitir parâmetros específicos do modelo para plot_prior_and_posterior_distribution(), como mostrado neste exemplo:

model_diagnostics.plot_prior_and_posterior_distribution('beta_m')

Avaliar o ajuste do modelo

Depois de otimizar a convergência, avalie o ajuste do modelo. Para mais informações, consulte Avaliar o ajuste do modelo em Pós-modelagem.

Com a Modelagem de Marketing Mix (MMM), você precisa usar medidas indiretas para avaliar a inferência causal e procurar resultados que façam sentido. Sugestões:

  • Executar métricas para R ao quadrado, erro percentual absoluto médio (MAPE) e erro percentual absoluto médio ponderado (WMAPE).
  • Gerar gráficos para a receita ou o KPI esperado x real, dependendo do kpi_type e da disponibilidade da revenue_per_kpi.

Executar métricas R ao quadrado, MAPE e WMAPE

As métricas de qualidade do ajuste podem ser usadas como uma verificação de confiança de que a estrutura do modelo está adequada e não tem muitos parâmetros. ModelDiagnostics calcula as métricas de qualidade do ajuste R-Squared, MAPE e wMAPE. Se holdout_id for definido no Meridian, R-squared, MAPE e wMAPE também serão calculados para os subconjuntos Train e Test. As métricas de qualidade do ajuste são uma medida de acurácia preditiva, o que normalmente não é a meta de uma MMM, mas funcionam como uma verificação de confiança útil.

Execute estes comandos para gerar as métricas R-quadrado, MAPE e WMAPE:

model_diagnostics = visualizer.ModelDiagnostics(meridian)
model_diagnostics.predictive_accuracy_table()

Exemplo de saída:

Saída de métricas

Gerar gráficos de valores esperados x reais

Esses gráficos podem ser úteis como um método indireto para avaliar o ajuste do modelo.

Nacional: gráficos de valores esperados x reais

Represente a receita ou o KPI real ao lado dos valores esperados do modelo no nível nacional para ajudar a avaliar o ajuste do modelo. O valor de referência é a estimativa contrafactual do modelo para receita (ou KPI) se não houvesse execução de mídia. Estimar a receita para que ela seja o mais próximo possível do real não é necessariamente a meta de uma MMM, mas funciona como uma verificação de confiança útil.

Execute estes comandos para representar a receita (ou KPI) real versus os valores esperados para dados nacionais:

model_fit = visualizer.ModelFit(meridian)
model_fit.plot_model_fit()

Exemplo de saída:

Gráfico de receita esperada x real

Região geográfica: gráficos de valores esperados x reais

Crie esses gráficos no nível da região para avaliar o ajuste do modelo. Se houver muitas regiões, mostre apenas as maiores.

Execute estes comandos para representar a receita (ou KPI) real versus os valores esperados para as regiões geográficas:

model_fit = visualizer.ModelFit(meridian)
model_fit.plot_model_fit(n_top_largest_geos=2,
                         show_geo_level=True,
                         include_baseline=False,
                         include_ci=False)

Exemplo de saída:

Gráficos de receita real x estimada por região

Analise os resultados do modelo quando considerar que ele está bem ajustado.