Cuando ejecutas el modelo, debes agregar la especificación del modelo y, luego, ejecutar los comandos para crear muestras de la distribución a priori y la distribución a posteriori.
Los algoritmos del método Monte Carlo basado en cadenas de Markov (MCMC) se usan para obtener muestras de la distribución posterior. Meridian usa el método de muestreo No-U-Turn con adaptación de kernel y tamaño del paso.
Para ejecutar el modelo, haz lo siguiente:
Agrega la especificación de tu modelo.
Ejemplo:
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, ) ```Ejecuta los siguientes comandos para obtener muestras de las distribuciones a priori y a posteriori. Configura los parámetros según sea necesario:
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 Descripción n_chainsEs la cantidad de muestras de cadenas que se tomarán en paralelo. Para reducir el consumo de memoria, puedes usar una lista de números enteros para permitir las llamadas de muestreo secuenciales del método de MCMC. Una vez que se proporciona una lista, cada elemento de la secuencia corresponde al argumento n_chainspara una llamada awindowed_adaptive_nuts.n_adaptEs la cantidad de extracciones del método de MCMC por cadena durante las cuales se adaptan el tamaño del paso y el kernel. Estas muestras a posteriori se excluyen siempre. n_burninEs una cantidad adicional de muestras a posteriori MCMC por cadena que se debe excluir una vez que se fijen el tamaño del paso y el kernel. Estas extracciones adicionales pueden ser necesarias para garantizar que todas las cadenas alcancen la distribución estacionaria una vez que se complete la adaptación, pero, en la práctica, a menudo descubrimos que las cadenas alcanzan la distribución estacionaria durante la adaptación y que n_burnin=0es suficiente.n_keepEs la cantidad de extracciones del método de MCMC por cadena que se deben conservar para el análisis y los resultados del modelo. (Opcional) Adelgaza la distribución a posteriori para obtener iteraciones más rápidas.
Para acelerar las tareas downstream durante los flujos de trabajo iterativos (como generar informes preliminares de resultados del modelo o evaluar varias situaciones de optimización del presupuesto), puedes reducir el muestreo de las extracciones de la distribución a posteriori con
posterior_thinning(). Esto selecciona un subconjunto de extracciones de la distribución a posteriori que preserva la estructura de cada cadena de MCMC mediante un muestreo sistemático para minimizar la autocorrelación:# 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)Si se establece
preserve_original=True, puedes restablecer la distribución a posteriori completa en cualquier momento antes de la entrega final:mmm.restore_full_posterior()Parámetro Descripción sampling_rateEs la fracción de extracciones que se conservarán por cadena en (0, 1]. Se recomienda0.15(15%) para los flujos de trabajo exploratorios. Se debe especificar exactamente uno de los valoressampling_rateon_draws.n_drawsEs la cantidad de extracciones que se deben conservar por cadena en [1, original_n_draws]. Se debe especificar exactamente uno de los valoressampling_rateon_draws.methodEs el método de selección de extracción. Admite ThinningMethod.SYSTEMATIC(predeterminado).seedEs un número entero opcional que se usa como semilla aleatoria para la selección reproducible de extracciones. preserve_originalEs una marca booleana ( Truede forma predeterminada). Si esTrue, guarda una copia de la distribución a posteriori completa para querestore_full_posterior()pueda restablecerla.
A continuación, ejecuta diagnósticos de modelado para analizar la convergencia, verificar las distribuciones y evaluar el ajuste del modelo.