Executar o modelo

Ao gerar o modelo, adicione a especificação dele e execute os comandos para criar amostras das distribuições a priori e a posteriori.

Os algoritmos de Monte Carlo via cadeias de Markov (MCMC) são usados para amostras da distribuição a posteriori. O Meridian usa o método de amostragem No-U-Turn com adaptação de kernel e taxa de aprendizado.

Para gerar o modelo:

  1. Adicione a especificação.

    Exemplo:

     model_spec = spec.ModelSpec(
         prior=prior_distribution.PriorDistribution(),
         media_effects_dist='log_normal',
         hill_before_adstock=False,
         max_lag=8,
         unique_sigma_for_each_geo=False,
         media_prior_type='roi',
         roi_calibration_period=None,
         rf_prior_type='coefficient',
         rf_roi_calibration_period=None,
         organic_media_prior_type='contribution',
         organic_rf_prior_type='contribution',
         non_media_treatments_prior_type='contribution',
         knots=None,
         baseline_geo=None,
         holdout_id=None,
         control_population_scaling_id=None,
         adstock_decay_spec='geometric',
         enable_aks=False,
     )
     ```
    
  2. Execute estes comandos para criar amostras das distribuições a priori e a posteriori. Configure os parâmetros conforme necessário:

    mmm = model.Meridian(input_data=data, model_spec=model_spec)
    mmm.sample_prior(500)
    mmm.sample_posterior(n_chains=7, n_adapt=1000, n_burnin=500, n_keep=1000)
    
    Parâmetro Descrição
    n_chains O número de cadeias de amostra em paralelo. Para reduzir o consumo de memória, use uma lista de números inteiros para permitir chamadas de amostragem sequenciais de MCMC. No caso de uma lista, cada elemento na sequência corresponde ao argumento n_chains de uma chamada para windowed_adaptive_nuts.
    n_adapt O número de extrações de MCMC por cadeia, com adaptação da taxa de aprendizado e do kernel. Essas extrações são sempre excluídas.
    n_burnin Um número adicional de extrações de MCMC por cadeia a serem excluídas após a correção da taxa de aprendizado e do kernel. Essas outras extrações podem ser necessárias para garantir que todas as cadeias atinjam a distribuição estacionária após a adaptação. Na prática, muitas vezes descobrimos que as cadeias atingem essa distribuição durante a adaptação e que n_burnin=0 é suficiente.
    n_keep O número de extrações de MCMC por cadeia a serem mantidas para a análise e os resultados do modelo.
  3. (Opcional) Reduza a distribuição a posteriori para acelerar as iterações.

    Para acelerar as tarefas downstream durante fluxos de trabalho iterativos (como gerar relatórios preliminares de resultados de modelos ou avaliar vários cenários de otimização de orçamento), é possível reduzir as extrações a posteriori usando posterior_thinning(). Dessa forma, é selecionado um subconjunto de extrações a posteriori que preserva cada cadeia de MCMC usando amostragem sistemática para minimizar a autocorrelação:

    # Recommended: 15% sampling rate balances fast iteration with
    # near-approximate inference
    mmm.posterior_thinning(sampling_rate=0.15, preserve_original=True)
    
    # Alternatively, specify the exact number of draws to keep per chain
    # mmm.posterior_thinning(n_draws=150, preserve_original=True)
    

    Se estiver definido como preserve_original=True, será possível restaurar a distribuição a posteriori completa a qualquer momento antes da entrega final:

    mmm.restore_full_posterior()
    
    Parâmetro Descrição
    sampling_rate A fração de extrações a serem mantidas por cadeia em (0, 1]. Recomendado: 0.15 (15%) para fluxos de trabalho exploratórios. É preciso especificar exatamente um sampling_rate ou n_draws.
    n_draws O número de extrações a serem mantidas por cadeia em [1, original_n_draws]. É preciso especificar exatamente um sampling_rate ou n_draws.
    method O método de seleção da extração. É compatível com ThinningMethod.SYSTEMATIC (padrão).
    seed Uma seed aleatória de número inteiro opcional para a seleção de uma extração reproduzível.
    preserve_original Uma flag booleana (padrão True). Se for True, salva uma cópia da distribuição a posteriori completa para que restore_full_posterior() possa restaurá-la.

Em seguida, execute diagnósticos da modelagem para avaliar a convergência e o ajuste do modelo, além de verificar as distribuições.