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:
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, ) ```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_chainsO 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_chainsde uma chamada parawindowed_adaptive_nuts.n_adaptO 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_burninUm 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_keepO número de extrações de MCMC por cadeia a serem mantidas para a análise e os resultados do modelo. (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_rateA 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 umsampling_rateoun_draws.n_drawsO número de extrações a serem mantidas por cadeia em [1, original_n_draws]. É preciso especificar exatamente umsampling_rateoun_draws.methodO método de seleção da extração. É compatível com ThinningMethod.SYSTEMATIC(padrão).seedUma seed aleatória de número inteiro opcional para a seleção de uma extração reproduzível. preserve_originalUma flag booleana (padrão True). Se forTrue, salva uma cópia da distribuição a posteriori completa para querestore_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.