Exécuter le diagnostic du modèle

Une fois le modèle créé, vous devez évaluer la 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 la réduction d'échelle potentielle de Gelman & Rubin (1992) pour la convergence de la chaîne, communément appelée R-hat. Ce diagnostic de convergence mesure le degré auquel 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.

Il existe une seule valeur R-hat pour chaque paramètre de modèle. Le graphique en boîte récapitule la distribution des valeurs R-hat pour les index. Par exemple, la boîte correspondant au libellé de l'axe X beta_gm récapitule la distribution des valeurs R-hat pour l'index géographique g et l'index de canal m.

Les valeurs proches de 1,0 indiquent une convergence. Un R-hat inférieur à 1,2 indique une convergence approximative et constitue un seuil raisonnable pour de nombreux problèmes (Brooks & Gelman, 1998). Un manque de convergence s'explique généralement par l'une des deux raisons suivantes. Soit le modèle est très mal spécifié pour les données dans la probabilité (spécification du modèle) ou dans l'a priori, soit le temps de chauffe ("burn-in") n'est pas suffisant (autrement dit, le paramètre n_adapt + n_burnin n'est pas assez grand).

Si vous rencontrez des difficultés pour obtenir la convergence, consultez Obtenir la convergence MCMC.

Générer un graphique en boîte R-hat

Exécutez les commandes suivantes pour générer un graphique en boîte R-hat :

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

Exemple de résultat :

Graphique en boîte R-hat

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é du graphique de tracé représente la séquence de valeurs générées par l'algorithme MCMC lorsqu'il explore l'espace des paramètres. Il montre comment l'algorithme passe d'une valeur de paramètre à une autre au cours d'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é à gauche représentent la distribution de densité des valeurs échantillonnées pour un ou plusieurs paramètres obtenus grâce à l'algorithme MCMC. Dans le graphique de densité, l'objectif est que les chaînes aient 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 :

Graphiques de tracé et de densité

Vérifier les distributions a priori et a posteriori

Lorsque les données contiennent peu d'informations, l'a priori et l'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 d'avoir un a posteriori de ROI semblable à l'a priori de ROI. 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 de 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(meridian)
model_diagnostics.plot_prior_and_posterior_distribution()

Exemple de résultat (cliquez sur l'image pour l'agrandir) :

Distributions

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_type et de la disponibilité de revenue_per_kpi.

Exécuter les métriques de coefficient de détermination, MAPE et wMAPE

Vous pouvez utiliser des métriques d'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 d'ajustement R-Squared, MAPE et wMAPE. Si holdout_id est défini dans Meridian, R-squared, MAPE et wMAPE seront également calculés pour les sous-ensembles Train et Test. Notez que les métriques d'ajustement sont une mesure de la précision prédictive, ce qui n'est généralement pas l'objectif d'une MMM. En revanche, elles sont toujours utiles pour vérifier la fiabilité.

Exécutez les commandes suivantes pour générer les métriques de coefficient de détermination, MAPE et wMAPE :

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

Exemple de résultat :

Résultats des métriques

Générer des graphiques pour comparer les résultats attendus et réels

Les graphiques comparant les résultats attendus et réels peuvent être une bonne méthode indirecte pour évaluer l'ajustement du modèle.

Niveau national : graphiques comparant les résultats attendus et réels

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(meridian)
model_fit.plot_model_fit()

Exemple de résultat :

Graphique comparant les revenus attendus et réels

Niveau géographique : graphiques comparant les résultats attendus et réels

Vous pouvez créer des graphiques comparant les résultats attendus et réels au niveau géographique pour accéder à l'ajustement du modèle. Étant donné qu'il peut y avoir de nombreuses zones géographiques, vous pouvez choisir de n'afficher que 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(meridian)
model_fit.plot_model_fit(n_top_largest_geos=2,
                         show_geo_level=True,
                         include_baseline=False,
                         include_ci=False)

Exemple de résultat :

Graphiques comparant les revenus réels à ceux estimés par zone géographique

Une fois que l'ajustement de votre modèle vous convient, analysez ses résultats.