Une fois le modèle créé, vous devez évaluer sa convergence, le déboguer si nécessaire, puis évaluer son ajustement.
Évaluer la convergence
Vous devez évaluer la convergence du modèle pour vous assurer de son intégrité.
La commande plot_rhat_boxplot sous visualizer.ModelDiagnostics() résume et calcule le facteur de réduction d'échelle potentiel développé par Gelman & Rubin (1992), communément appelé R-hat, pour évaluer la convergence des chaînes.
Ce diagnostic de convergence établit dans quelle mesure la variance (des moyennes) entre les chaînes dépasse les résultats attendus si les chaînes étaient distribuées de manière identique.
Une seule valeur R-hat est associée à chaque paramètre du modèle. Le graphique en boîte résume la distribution des valeurs R-hat selon les différents indices. Par exemple, la boîte correspondant au libellé beta_gm de l'axe X résume la distribution des valeurs R-hat pour l'indice géographique g et l'indice de canal m.
Des valeurs proches de 1,0 indiquent une convergence. Une valeur R-hat inférieure à 1,2 indique une convergence approximative et constitue un seuil raisonnable pour de nombreux problèmes (Brooks & Gelman, 1998).
Une absence de convergence s'explique généralement comme suit : soit le modèle est très mal spécifié par rapport aux données (au niveau de la vraisemblance ou des lois a priori), soit la phase de "rodage" (burn-in) n'est pas assez longue (c'est-à-dire que la somme n_adapt + n_burnin est trop faible).
Si vous rencontrez des difficultés à obtenir la convergence, consultez Obtenir la convergence MCMC.
Générer un graphique en boîte de valeurs R-hat
Exécutez les commandes suivantes pour générer un graphique en boîte de valeurs R-hat :
model_diagnostics = visualizer.ModelDiagnostics(mmm)
model_diagnostics.plot_rhat_boxplot()
Exemple de résultat :

Générer des graphiques de tracé et de densité
Vous pouvez générer des graphiques de tracé et de densité pour les échantillons MCMC (Monte-Carlo par chaînes de Markov) afin d'évaluer la convergence et la stabilité des chaînes. Chaque tracé dans un graphique de ce type représente la séquence de valeurs générées par l'algorithme MCMC lorsqu'il explore l'espace des paramètres. Le graphique montre comment l'algorithme parcourt les différentes valeurs des paramètres au fil des itérations successives. Dans les graphiques de tracé, essayez d'éviter les zones plates, où la chaîne reste dans le même état trop longtemps ou comporte trop d'étapes consécutives dans une même direction.
Les graphiques de densité, situés à gauche, permettent de visualiser la distribution de densité des valeurs échantillonnées pour un ou plusieurs paramètres, obtenues via l'algorithme MCMC. L'objectif, dans ces graphiques de densité, est de constater que les chaînes ont convergé vers une distribution de densité stable.
L'exemple suivant montre comment générer des graphiques de tracé et de densité :
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},
)
Exemple de résultat :

Vérifier les distributions a priori et a posteriori
Lorsque les données contiennent peu d'informations, les distributions a priori et a posteriori sont similaires. Pour en savoir plus, consultez Lorsque l'a posteriori est identique à l'a priori.
Les canaux dont les dépenses sont faibles sont particulièrement susceptibles de présenter une distribution a posteriori du ROI proche de sa distribution a priori. Pour résoudre ce problème, nous vous recommandons de supprimer les canaux dont les dépenses sont très faibles ou de les combiner avec d'autres lorsque vous préparez les données pour votre MMM.
Exécutez les commandes suivantes pour tracer la distribution a posteriori du ROI par rapport à celle a priori du ROI pour chaque canal média :
model_diagnostics = visualizer.ModelDiagnostics(mmm)
model_diagnostics.plot_prior_and_posterior_distribution()
Exemple de résultat (cliquez sur l'image pour l'agrandir) :

Par défaut, plot_prior_and_posterior_distribution() génère l'a posteriori et l'a priori pour le ROI. Vous pouvez toutefois transmettre des paramètres de modèle spécifiques à plot_prior_and_posterior_distribution(), comme illustré dans l'exemple suivant :
model_diagnostics.plot_prior_and_posterior_distribution('beta_m')
Évaluer l'ajustement du modèle
Une fois que vous avez optimisé la convergence de votre modèle, évaluez son ajustement. Pour en savoir plus, consultez Évaluer l'ajustement du modèle dans Post-modélisation.
Avec la modélisation du mix marketing (MMM), vous devez vous appuyer sur des mesures indirectes pour évaluer l'inférence causale et rechercher des résultats pertinents. Pour ce faire, vous pouvez :
- exécuter des métriques pour le coefficient de détermination, l'erreur absolue moyenne en pourcentage (MAPE, Mean Absolute Percentage Error) et l'erreur absolue moyenne pondérée en pourcentage (wMAPE, Weighted Mean Absolute Percentage Error) ;
- générer des graphiques comparant les revenus ou KPI attendus par rapport à ceux réellement obtenus, en fonction de
kpi_typeet de la disponibilité derevenue_per_kpi.
Exécuter les métriques de coefficient de détermination, MAPE et wMAPE
Vous pouvez utiliser des métriques de qualité de l'ajustement pour vérifier que la structure du modèle est appropriée et ne contient pas trop de paramètres. ModelDiagnostics calcule les métriques de qualité de l'ajustement R-Squared, MAPE et wMAPE. Si holdout est défini dans ModelSpec, R-squared, MAPE et wMAPE seront également calculés pour les sous-ensembles Train et Test. Notez que ces métriques de qualité de l'ajustement mesurent la précision prédictive, ce qui n'est généralement pas l'objectif d'une MMM. Elles constituent néanmoins un indicateur de confiance utile.
Exécutez les commandes suivantes pour générer les métriques de coefficient de détermination, MAPE et wMAPE :
model_diagnostics = visualizer.ModelDiagnostics(mmm)
model_diagnostics.predictive_accuracy_table()
Exemple de résultat :
Générer des graphiques pour comparer les valeurs attendues et réelles
L'utilisation de graphiques comparant les valeurs attendues et réelles peut s'avérer utile comme méthode indirecte pour évaluer l'ajustement du modèle.
Niveau national : graphiques comparant les valeurs attendues et réelles
Pour évaluer l'ajustement du modèle, vous pouvez tracer les revenus ou le KPI réels à côté de ceux attendus du modèle au niveau national. La référence correspond à l'estimation contrefactuelle des revenus (ou du KPI) du modèle en l'absence d'exécution média. L'objectif d'une MMM n'est pas forcément d'estimer les revenus de manière aussi proche que possible des revenus réels, mais elle permet de vérifier la fiabilité.
Exécutez les commandes suivantes pour comparer les revenus réels (ou le KPI) à ceux attendus pour les données nationales :
model_fit = visualizer.ModelFit(mmm)
model_fit.plot_model_fit()
Exemple de résultat :

Niveau géographique : graphiques comparant les valeurs attendues et réelles
Vous pouvez créer des graphiques comparant les valeurs attendues et réelles au niveau géographique pour évaluer l'ajustement du modèle. Étant donné qu'il peut y avoir de nombreuses zones géographiques, vous pouvez choisir de faire apparaître uniquement les plus importantes.
Exécutez les commandes suivantes pour comparer les revenus réels (ou le KPI) aux revenus (ou au KPI) attendus pour les zones géographiques :
model_fit = visualizer.ModelFit(mmm)
model_fit.plot_model_fit(n_top_largest_geos=2,
show_geo_level=True,
include_baseline=False,
include_ci=False)
Exemple de résultat :

Une fois que vous êtes satisfait de l'ajustement, analysez les résultats du modèle.