meridian.analysis.analyzer.Analyzer

Exécute des calculs pour analyser les données brutes après l'ajustement du modèle.

Classes enfants

class PerformanceData

Méthodes

adstock_decay

Afficher la source

Calcule la diminution de l'adstock pour les canaux de médias, de couverture et de fréquence.

Args
confidence_level Niveau de confiance pour les intervalles crédibles a priori et a posteriori, représenté par une valeur comprise entre zéro et un.

Renvoie
DataFrame Pandas contenant le canal, time_units, la distribution, ci_hi, ci_lo et mean pour la fonction Adstock.

baseline_summary_metrics

Afficher la source

Renvoie les métriques récapitulatives de référence.

Args
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de périodes à inclure. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les régions.
aggregate_times Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les périodes.
confidence_level Niveau de confiance pour les intervalles crédibles des métriques récapitulatives sur les médias, représenté par une valeur comprise entre zéro et un.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Un xr.Dataset avec les coordonnées metric (mean, median, ci_low,ci_high),distribution (a priori et a posteriori) contenant les variables de données suivantes : baseline_outcome, pct_of_contribution.

cpik

Afficher la source

Calcule la distribution du coût par KPI incrémental pour chaque canal.

Le numérateur du CPIK correspond aux dépenses totales sur le canal. Le dénominateur du CPIK désigne la variation du KPI attendu lorsque les dépenses d'un canal sont définies sur zéro, ce qui laisse les dépenses de tous les autres canaux inchangées.

Si new_data=None, cette méthode calcule le CPIK en fonction des valeurs des variables des médias payants avec lesquelles l'objet Meridian a été initialisé. L'utilisateur peut également remplacer ces données historiques par le biais de l'argument new_data, à condition que les dimensions des nouveaux tenseurs correspondent. Par exemple,

new_data = DataTensors(media=new_media, frequency=new_frequency)

Si selected_geos ou selected_times sont spécifiées, le numérateur du CPIK correspond alors aux dépenses totales pour les périodes et les zones géographiques sélectionnées. Une exception est générée si les dépenses des InputData utilisées pour entraîner le modèle ne comportent pas de dimensions géographiques et temporelles. Si les arguments new_data.media_spend et new_data.rf_spend sont utilisés avec des dimensions différentes de celles des dépenses des InputData, une exception sera générée, car il s'agit probablement d'une erreur de l'utilisateur.

Notez que le CPIK est simplement égal à 1/ROI (le ROI étant obtenu à partir d'un appel à la méthode roi avec use_kpi=True).

Args
use_posterior Valeur booléenne. Si True, la distribution a posteriori est calculée. Sinon, c'est celle a priori qui l'est.
new_data Facultatif. DataTensors contenant les données media, media_spend, reach, frequency, rf_spend et revenue_per_kpi. Si cela est fourni, le CPIK est calculé à l'aide des valeurs des tenseurs transmises dans new_data et des valeurs d'origine de tous les autres tenseurs. Les dimensions des nouveaux tenseurs doivent correspondre à celles des tenseurs d'origine correspondants de meridian.input_data. Si la valeur est None, le CPIK est calculé à l'aide des valeurs d'origine de tous les tenseurs.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de périodes à inclure. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, le KPI attendu est cumulé pour toutes les régions.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Tensor de valeurs de CPIK avec des dimensions (n_chains, n_draws, n_geos, (n_media_channels + n_rf_channels)). La dimension n_geos est supprimée si aggregate_geos=True.

expected_outcome

Afficher la source

Calcule le résultat attendu a priori ou a posteriori.

Cela permet de calculer E(Outcome|Media, RF, Organic media, Organic RF, Non-media treatments, Controls) pour chaque tirage de paramètre a posteriori (ou a priori), où Outcome fait référence à revenue si use_kpi=False ou à kpi si use_kpi=True. Lorsque revenue_per_kpi n'est pas défini, use_kpi ne peut pas être False.

Si new_data=None, cette méthode calcule le résultat attendu en fonction des valeurs des variables indépendantes avec lesquelles l'objet Meridian a été initialisé. L'utilisateur peut également remplacer ces données historiques par le biais de l'argument new_data, à condition que les dimensions des nouveaux Tensors correspondent. Exemple :

new_data=DataTensors(reach=new_reach, frequency=new_frequency)

En principe, le résultat attendu peut être calculé avec d'autres dimensions temporelles (pour les prédictions futures, par exemple). Toutefois, cela n'est pas autorisé avec cette méthode en raison des complexités supplémentaires qu'elle engendre :

  1. Les données de prix correspondantes (revenus par KPI) seraient également nécessaires.
  2. Si le modèle contient des paramètres d'effet hebdomadaires, une méthode est nécessaire pour estimer ou prédire ces effets pour les périodes situées en dehors de la fenêtre de données d'entraînement.

Args
use_posterior Valeur booléenne. Si la valeur est True, la distribution a posteriori du résultat attendu est calculée. Sinon, c'est celle a priori qui l'est.
new_data Conteneur DataTensors facultatif avec de nouveaux Tensors facultatifs : media, reach, frequency, organic_media, organic_reach, organic_frequency, non_media_treatments, controls. Si la valeur est None, le résultat attendu est calculé en fonction des valeurs d'origine des Tensors de données avec lesquels l'objet Meridian a été initialisé. Si l'argument new_data est utilisé, le résultat attendu est calculé en fonction des valeurs des Tensors transmis dans new_data et des valeurs d'origine des autres Tensors non définis. Par exemple, expected_outcome(new_data=DataTensors(reach=new_reach, frequency=new_frequency)) calcule le résultat attendu en fonction des tenseurs d'origine media, organic_media, organic_reach, organic_frequency, non_media_treatments et controls, et des nouvelles valeurs données pour les tenseurs reach et frequency. Les dimensions des nouveaux tenseurs doivent correspondre à celles des tenseurs d'origine correspondants de input_data.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de dates à inclure. Les valeurs acceptées ici doivent correspondre aux coordonnées de la dimension temporelle de InputData.time. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les régions.
aggregate_times Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les périodes.
inverse_transform_outcome Valeur booléenne. Si la valeur est True, renvoie le résultat attendu dans le KPI ou le revenu d'origine (en fonction de ce qui est transmis à use_kpi), tel qu'il a été envoyé à InputData. Si la valeur est "False", renvoie le résultat après la transformation par KpiTransformer, ce qui reflète la façon dont il est représenté dans le modèle.
use_kpi Valeur booléenne. Si la valeur est use_kpi = True, le KPI attendu est calculé. Sinon, ce sont les revenus attendus (kpi * revenue_per_kpi) qui le sont. use_kpi = True est obligatoire si revenue_per_kpi n'est pas défini ou si inverse_transform_outcome = False.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Tensor du résultat attendu (KPI ou revenu, en fonction de l'argument use_kpi) avec les dimensions (n_chains, n_draws, n_geos, n_times). Les dimensions n_geos et n_times seront supprimées si aggregate_geos=True ou aggregate_time=True, respectivement.

Génère
NotFittedModelError si sample_posterior() (pour use_posterior=True) ou sample_prior() (pour use_posterior=False) n'a pas été appelé avant cette méthode.

expected_vs_actual_data

Afficher la source

Calcule les données pour le résultat attendu par rapport au résultat réel au fil du temps.

Args
aggregate_geos Valeur booléenne. Si la valeur est True, les valeurs attendues, de référence et réelles sont cumulées pour toutes les régions.
aggregate_times Valeur booléenne. Si la valeur est True, les valeurs attendues, de référence et réelles sont cumulées sur toutes les périodes.
split_by_holdout_id Valeur booléenne. Si True et holdout_id existent, les données sont divisées en sous-sections 'Train', 'Test' et 'All Data'.
confidence_level Niveau de confiance pour les intervalles crédibles du résultat attendu, représenté par une valeur comprise entre zéro et un. Valeur par défaut : 0.9

Renvoie
Un ensemble de données contenant les métriques sur les résultats attendus, de référence et réels.

filter_and_aggregate_geos_and_times

Afficher la source

Filtre et/ou agrège les dimensions géographiques et temporelles d'un Tensor.

Args
tensor Tensor avec des dimensions [..., n_geos, n_times] ou [..., n_geos, n_times, n_channels], où n_channels correspond au nombre de canaux média, de canaux avec couverture et fréquence, de canaux payants ("média" et "avec couverture et fréquence") ou de tous les canaux ("média", "avec couverture et fréquence", "non média", "média naturel", "avec couverture et fréquence naturelles").
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses. Les zones géographiques sélectionnées doivent correspondre à celles de InputData.geo.
selected_times Liste facultative des périodes à inclure. Il peut s'agir d'une liste de chaînes contenant un sous-ensemble de coordonnées de la dimension temporelle de InputData.time ou d'une liste booléenne dont la longueur est égale à la dimension temporelle du Tensor. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, le Tensor est cumulé pour tous les zones géographiques.
aggregate_times Valeur booléenne. Si la valeur est True, le Tensor est cumulé pour toutes les périodes.
flexible_time_dim Valeur booléenne. Si la valeur est True, la dimension temporelle du Tensor ne correspond pas forcément au nombre de périodes dans InputData.time. Dans ce cas, si vous utilisez selected_times, il doit s'agir d'une liste booléenne dont la longueur est égale à la dimension temporelle du Tensor.
has_media_dim Valeur booléenne. Utilisée uniquement si flexible_time_dim=True. Sinon, elles est supposée en fonction des dimensions du Tensor. Si la valeur est True, le Tensor est supposé avoir une dimension média suivant la dimension temporelle. Si la valeur est False, la dernière dimension du Tensor est supposée être la dimension temporelle.

Renvoie
Un Tensor avec des dimensions géographiques et temporelles filtrées et/ou agrégées.

get_aggregated_impressions

Afficher la source

Calcule les valeurs d'impressions agrégées dans les données de tous les canaux.

Args
new_data Objet DataTensors facultatif contenant les nouveaux tenseurs media, reach, frequency, organic_media, organic_reach, organic_frequency et non_media_treatments. Si l'argument new_data est utilisé, les impressions agrégées sont calculées à l'aide des valeurs des tenseurs transmises dans l'argument new_data et des valeurs d'origine de tous les autres tenseurs. Les dimensions des nouveaux tenseurs doivent correspondre à celles des tenseurs d'origine correspondants de meridian.input_data. Si la valeur est None, les tenseurs existants de l'objet Meridian sont utilisés.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de périodes à inclure. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les régions.
aggregate_times Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les périodes.
optimal_frequency Liste facultative avec la dimension n_rf_channels contenant la fréquence optimale par canal, qui maximise le ROI moyen a posteriori. La valeur par défaut est None et la fréquence historique est utilisée pour calculer les métriques.
include_non_paid_channels Valeur booléenne. Si la valeur est True, les canaux média naturel, les canaux avec couverture et fréquence naturelles et les canaux non média sont inclus dans l'agrégation.

Renvoie
Un Tensor de forme (n_selected_geos, n_selected_times, n_channels) (ou (n_channels,) si les zones géographiques et les périodes sont agrégées) avec des valeurs d'impression agrégées par canal.

get_historical_spend

Afficher la source

Récupère les dépenses historiques agrégées en fonction de la période.

Args
selected_times Période associée aux dépenses historiques à obtenir. Si vous n'en sélectionnez aucune, les dépenses historiques seront agrégées pour tous les points temporels.
include_media Indique s'il faut inclure les dépenses des canaux média payants qui ne disposent pas de données de couverture et de fréquence.
include_rf Indique s'il faut inclure les dépenses des canaux média payants comportant des données de couverture et de fréquence.

Renvoie
Un xr.DataArray avec la coordonnée channel et contient la variable de données spend.

Génère
ValueError Une erreur ValueError lorsque include_media et include_rf sont tous les deux définis sur "False".

get_rhat

Afficher la source

Calcule les valeurs R-hat pour chaque paramètre du modèle.

Renvoie
Dictionnaire de valeurs R-hat où chaque paramètre est une clé et les valeurs sont des valeurs R-hat correspondant au paramètre.

Génère
NotFittedModelError Si self.sample_posterior() n'est pas appelé avant cette méthode.

hill_curves

Afficher la source

Estime les tableaux des courbes de Hill utilisés pour représenter les courbes de chaque canal.

Args
confidence_level Niveau de confiance pour les intervalles crédibles a priori et a posteriori, représenté par une valeur comprise entre zéro et un. La valeur par défaut est 0.9.
n_bins Nombre de bins de même largeur à inclure dans l'histogramme pour la représentation graphique. La valeur par défaut est 25.

Renvoie
Courbes de Hill pd.DataFrame avec les colonnes suivantes :

  • channel : nom du canal media ou rf.
  • media_units : unités média (pour les canaux media) ou de fréquence moyenne (pour les canaux rf).
  • distribution : indication d'un tirage posterior ou prior.
  • ci_hi : limite supérieure de l'intervalle crédible de la valeur de la fonction Hill.
  • ci_lo : limite inférieure de l'intervalle crédible de la valeur de la fonction Hill.
  • mean : moyenne point par point de la valeur de la fonction Hill par tirage.
  • channel_type : indication d'un canal media ou rf.
  • scaled_count_histogram : nombre mis à l'échelle d'unités média ou fréquences moyennes dans le bin.
  • count_histogram : nombre d'unités média ou fréquences moyennes dans le bin.
  • start_interval_histogram : point de départ de la fréquence moyenne ou de l'unité média pour un bin d'histogramme.
  • end_interval_histogram : point d'arrivée de la fréquence moyenne ou de l'unité média pour un bin d'histogramme.

incremental_outcome

Afficher la source

Calcule le résultat incrémental a posteriori ou a priori.

Cela permet de calculer le résultat média de chaque canal média pour chaque tirage de paramètre a posteriori ou a priori. Le résultat incrémental est défini comme suit :

E(Outcome|Media_1, Controls) moins E(Outcome|Media_0, Controls)

Ici, Media_1 signifie que l'exécution média pour un canal donné est multipliée par scaling_factor1 (1,0 par défaut) pour l'ensemble des périodes spécifiées par media_selected_times. De même, Media_0 signifie que l'exécution média est multipliée par scaling_factor0 (0,0 par défaut) pour ces périodes.

Pour les canaux disposant de données de couverture et de fréquence, la fréquence est fixe, tandis que la couverture est mise à l'échelle. "Outcome" fait référence à revenue si use_kpi=False ou à kpi si use_kpi=True. Lorsque revenue_per_kpi n'est pas défini, use_kpi ne peut pas être "False".

Si new_data=None, cette méthode calcule le résultat incrémental à l'aide des tenseurs media, reach, frequency, organic_media, organic_reach, organic_frequency, non_media_treatments et revenue_per_kpi avec lesquels l'objet Meridian a été initialisé. Ce comportement peut être remplacé par l'argument new_data. Par exemple, new_data=DataTensors(media=new_media) calcule le résultat incrémental à l'aide du tenseur new_media et des valeurs d'origine des tenseurs reach, frequency, organic_media, organic_reach, organic_frequency, non_media_treatments et revenue_per_kpi.

Le calcul de cette méthode repose sur deux hypothèses clés incluses dans l'implémentation de Meridian :

  1. Additivité des effets média (aucune interaction).
  2. Les modifications additives apportées à l'échelle de KPI du modèle correspondent aux modifications additives apportées à l'échelle de KPI d'origine. En d'autres termes, les effets d'interception et de contrôle n'ont aucune influence sur les effets média. Cette hypothèse est actuellement valable, car la transformation du résultat n'implique que le centrage et la mise à l'échelle (pas de transformations logarithmiques, par exemple).

Args
use_posterior Valeur booléenne. Si la valeur est True, la distribution a posteriori du résultat incrémental est calculée. Sinon, c'est celle a priori qui l'est.
new_data Conteneur DataTensors facultatif avec des tenseurs facultatifs : media, reach, frequency, organic_media, organic_reach, organic_frequency, non_media_treatments et revenue_per_kpi. Si la valeur est None, le résultat incrémental est calculé à l'aide des InputData fournies à l'objet Meridian. Si new_data est fourni, le résultat incrémental est calculé à l'aide des nouveaux tenseurs dans new_data et des valeurs d'origine des autres tenseurs. Par exemple, incremental_outcome(new_data=DataTensors(media=new_media) calcule le résultat incrémental à l'aide de new_media et des valeurs d'origine de reach, frequency, organic_media, organic_reach, organic_frequency, non_media_treatments et revenue_per_kpi. Si l'un des tenseurs de new_data est fourni avec un nombre de périodes différent de celui de InputData, tous les tenseurs doivent être fournis avec le même nombre de périodes.
non_media_baseline_values Liste de formes facultative (n_non_media_channels). Chaque élément est soit un float (la valeur fixe est alors utilisée comme référence pour le canal donné), soit l'une des chaînes "min" ou "max" (la valeur minimale ou maximale globale est alors utilisée comme référence pour les valeurs mises à l'échelle du canal de traitement non_media donné). Si aucune valeur n'est fournie, la valeur minimale est utilisée comme référence pour chaque canal de traitement non_media.
scaling_factor0 Valeur float. Facteur utilisé pour mettre à l'échelle le scénario contrefactuel "Media_0" pendant les périodes spécifiées dans media_selected_times. Doit être non négatif et inférieur à scaling_factor1.
scaling_factor1 Valeur float. Facteur utilisé pour mettre à l'échelle "Media_1" pendant les périodes sélectionnées spécifiées dans media_selected_times. Doit être non négatif et supérieur à scaling_factor0.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de dates à inclure ou des valeurs booléennes dont la durée est égale au nombre de périodes dans les arguments new_XXX, le cas échéant. Le résultat incrémental correspond au KPI incrémental généré lors de l'argument selected_times par le média exécuté lors de l'argument media_selected_times. Notez que si use_kpi=False, selected_times ne peut inclure que les périodes pour lesquelles les données d'entrée sont revenue_per_kpi. Par défaut, toutes les périodes sont incluses lorsque des données revenue_per_kpi sont disponibles.
media_selected_times Liste facultative contenant un sous-ensemble de dates à inclure ou des valeurs booléennes dont la durée est égale au nombre de périodes dans new_media, le cas échéant. Si new_media est fourni, media_selected_times peut sélectionner n'importe quel sous-ensemble de périodes dans new_media. Si new_media n'est pas fourni, media_selected_times effectue une sélection à partir d'InputData.time. Le résultat incrémental correspond au KPI incrémental généré lors de l'argument selected_times par le média exécuté lors de l'argument media_selected_times. Pour chaque canal, le résultat incrémental est défini comme la différence entre le KPI attendu lorsque l'exécution média est mise à l'échelle par scaling_factor1 et lorsqu'elle est mise à l'échelle par scaling_factor0 au cours de ces périodes spécifiées. Par défaut, la différence se fait entre les médias ayant des niveaux d'exécution historiques, ou selon la valeur fournie dans new_media, et ceux n'ayant aucune exécution. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, le résultat incrémental est cumulé pour toutes les régions.
aggregate_times Valeur booléenne. Si la valeur est True, le résultat incrémental est cumulé pour toutes les périodes.
inverse_transform_outcome Valeur booléenne. Si la valeur est True, renvoie le résultat attendu dans le KPI ou le revenu d'origine (en fonction de ce qui est transmis à use_kpi), tel qu'il a été envoyé à InputData. Si la valeur est "False", renvoie le résultat après la transformation par KpiTransformer, ce qui reflète la façon dont il est représenté dans le modèle.
use_kpi Valeur booléenne. Si la valeur est use_kpi = True, le KPI attendu est calculé. Sinon, ce sont les revenus attendus (kpi * revenue_per_kpi) qui le sont. use_kpi = True est obligatoire si les données revenue_per_kpi ne sont pas disponibles ou si inverse_transform_outcome = False.
include_non_paid_channels Valeur booléenne. Si la valeur est True, les traitements non média et les effets naturels sont inclus dans le calcul. Si la valeur est False, seuls les médias payants et les effets de la couverture/fréquence sont inclus.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Tenseur du résultat incrémental (KPI ou revenus, selon l'argument use_kpi) avec les dimensions (n_chains, n_draws, n_geos, n_times, n_channels). Si include_non_paid_channels=True, n_channel correspond au nombre total de canaux média, canaux avec couverture et fréquence, canaux média naturel, canaux avec couverture et fréquence naturelles, et canaux non média. Si include_non_paid_channels=False, n_channels correspond au nombre total de canaux média et de canaux avec couverture et fréquence. Les dimensions n_geos et n_times seront supprimées si aggregate_geos=True ou aggregate_times=True, respectivement.

Génère
NotFittedModelError Si sample_posterior() (pour use_posterior=True) ou sample_prior() (pour use_posterior=False) n'a pas été appelé avant cette méthode.
ValueError Si les arguments new_media n'ont pas la même forme de Tensor que le média.

marginal_roi

Afficher la source

Calcule la distribution a priori et a posteriori du ROI marginal.

Le numérateur du ROI marginal (ROIm) correspond à la variation du résultat attendu (kpi ou kpi * revenue_per_kpi) lorsque les dépenses d'un canal sont augmentées d'une petite fraction. Le dénominateur du ROIm est la petite fraction correspondante des dépenses totales du canal.

Si new_data=None, cette méthode calcule le ROI marginal en fonction des valeurs des variables des médias payants avec lesquelles l'objet Meridian a été initialisé. L'utilisateur peut également remplacer ces données historiques par le biais de l'argument new_data, à condition que les dimensions des nouveaux tenseurs correspondent. Par exemple,

new_data = DataTensors(media=new_media, frequency=new_frequency)

Si selected_geos ou selected_times sont spécifiées, le dénominateur du ROIm est alors basé sur les dépenses totales pour les périodes et les zones géographiques sélectionnées. Une exception est générée si les dépenses des InputData utilisées pour entraîner le modèle ne comportent pas de dimensions géographiques et temporelles. Si les arguments new_data.media_spend et new_data.rf_spend sont utilisés avec des dimensions différentes de celles des dépenses des InputData, une exception sera générée, car il s'agit probablement d'une erreur de l'utilisateur.

Args
incremental_increase Petite fraction par laquelle les dépenses de chaque canal sont augmentées lors du calcul du numérateur de leur ROIm. Le dénominateur du ROIm correspond à cette fraction des dépenses totales du canal. Utilisé uniquement si le ROI marginal est True.
use_posterior Si la valeur est True, la distribution a posteriori est calculée. Sinon, c'est celle a priori qui l'est.
new_data Facultatif. DataTensors contenant les données media, media_spend, reach, frequency, rf_spend et revenue_per_kpi. Si cela est fourni, le ROI marginal est calculé à l'aide des valeurs des tenseurs transmises dans new_data et des valeurs d'origine de tous les autres tenseurs. Les dimensions des nouveaux tenseurs doivent correspondre à celles des tenseurs d'origine correspondants de meridian.input_data. Si la valeur est None, le ROI marginal est calculé à l'aide des valeurs d'origine de tous les tenseurs.
selected_geos Facultatif. Contient un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Facultatif. Contient un sous-ensemble de périodes à inclure. Par défaut, toutes les périodes sont incluses.
aggregate_geos Si la valeur est True, les revenus attendus sont cumulés pour toutes les régions.
by_reach Utilisé pour un canal avec couverture et fréquence. Si la valeur est True, renvoie le ROIm par couverture pour une fréquence fixe donnée. Si la valeur est False, renvoie le ROIm par fréquence pour une couverture fixe donnée.
use_kpi Si la valeur est False, les revenus sont utilisés pour calculer le numérateur du ROIm. Sinon, c'est le KPI qui est utilisé.
batch_size Nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter l'épuisement de la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Tensor de valeurs de ROIm avec des dimensions (n_chains, n_draws, n_geos, (n_media_channels + n_rf_channels)). La dimension n_geos est supprimée si aggregate_geos=True.

optimal_freq

Afficher la source

Calcule la fréquence optimale permettant de maximiser le ROI moyen a posteriori.

Pour cette optimisation, les dépenses historiques sont utilisées et restent fixes. La fréquence est également limitée pour rester constante dans toutes les régions géographiques et les périodes. La couverture est calculée pour chaque zone géographique et chaque période afin que le nombre d'impressions ne change pas lorsque la fréquence varie. Meridian permet de gérer la fréquence à laquelle le ROI moyen a posteriori est optimisé.

Args
freq_grid Liste des valeurs de fréquence. Le ROI de chaque canal est calculé pour chaque valeur de fréquence de la liste. Par défaut, la liste inclut les nombres de 1.0 à la fréquence maximale par incréments de 0.1.
use_posterior Valeur booléenne. Si la valeur est True, les fréquences optimales a posteriori sont générées. Si la valeur est False, celles a priori sont générées.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de périodes à inclure. Par défaut, toutes les périodes sont incluses.
confidence_level Niveau de confiance pour les intervalles crédibles a priori et a posteriori, représenté par une valeur comprise entre zéro et un.

Renvoie
Un ensemble de données xarray contenant les valeurs suivantes :

  • Coordonnées : frequency, rf_channel, metric (mean, median, ci_lo, ci_hi).
  • Variables de données :
    • optimal_frequency : fréquence permettant d'optimiser la moyenne a posteriori du ROI.
    • roi : ROI pour chaque valeur de fréquence dans freq_grid.
    • optimized_incremental_outcome : résultat incrémental basé sur la fréquence optimale.
    • optimized_pct_of_contribution : pourcentage de contribution basé sur la fréquence optimale.
    • optimized_effectiveness : efficacité basée sur la fréquence optimale.
    • optimized_roi : ROI basé sur la fréquence optimale.
    • optimized_mroi_by_reach : ROI marginal avec une légère modification de la couverture et de la fréquence fixe à la fréquence optimale.
    • optimized_mroi_by_frequency : ROI marginal avec une légère variation de la fréquence optimale et de la couverture fixe.
    • optimized_cpik : CPIK basé sur la fréquence optimale.

Génère
NotFittedModelError Si sample_posterior() (pour use_posterior=True) ou sample_prior() (pour use_posterior=False) n'a pas été appelé avant cette méthode.
ValueError Si aucun canal ne dispose de données de couverture et de fréquence.

predictive_accuracy

Afficher la source

Calcule les métriques sur la qualité de l'ajustement R-Squared, MAPE et wMAPE.

R-Squared, MAPE (erreur absolue moyenne en pourcentage) et wMAPE (erreur absolue moyenne pondérée en pourcentage) sont calculés sur l'échelle des revenus (KPI * revenue_per_kpi) lorsque revenue_per_kpi est spécifié, ou sur l'échelle du KPI lorsque revenue_per_kpi = None. Il s'agit de la même échelle que celle utilisée dans le numérateur du ROI (résultat incrémental).

Les erreurs de prédiction dans wMAPE sont pondérées par les revenus réels (KPI * revenue_per_kpi) lorsque revenue_per_kpi est spécifié ou par l'échelle du KPI lorsque revenue_per_kpi = None. Cela signifie que les erreurs en pourcentage avec des revenus élevés sont pondérées plus fortement que celles avec des revenus faibles.

R-Squared, MAPE et wMAPE sont calculés à la fois au niveau du modèle (une seule observation par zone géographique et par période) et au niveau national (agrégation des résultats pour le KPI ou les revenus dans les zones géographiques afin de n'effectuer qu'une seule observation par période).

R-Squared, MAPE et wMAPE sont calculés pour l'ensemble de l'échantillon. Si l'objet du modèle comporte des observations de validation, R-squared, MAPE et wMAPE seront également calculés pour les sous-ensembles Train et Test.

Args
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de dates à inclure. Par défaut, toutes les périodes sont incluses.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. La valeur par défaut de batch_size est 100. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Un ensemble de données xarray contenant les valeurs R_Squared, MAPE et wMAPE calculées, avec les coordonnées metric, geo_granularity et evaluation_set, ainsi que la variable de données value qui les accompagne. Si holdout_id existe, les données sont réparties en sous-sections 'Train', 'Test' et 'All Data', et les trois métriques sont calculées pour chacune d'elles.

response_curves

Afficher la source

Méthode permettant de générer un xarray.Dataset avec des courbes de réponse.

Les courbes de réponse sont calculées au niveau national, en supposant le modèle de diffusion historique dans les zones géographiques et les périodes pour chaque canal média. Une liste de multiplicateurs est appliquée au total des dépenses historiques de chaque canal média pour obtenir les x-values avec lesquelles la courbe de réponse du canal est calculée.

Args
spend_multipliers Liste des multiplicateurs. Le total des dépenses de chaque canal est multiplié par ces facteurs pour obtenir les valeurs avec lesquelles la courbe est calculée pour ce canal.
use_posterior Valeur booléenne. Si la valeur est True, les courbes de réponse a posteriori seront générées. Si la valeur est False, ce sont celles a priori qui seront générées.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de dimensions temporelles à inclure. Par défaut, toutes les périodes sont incluses. Les chaînes et les entiers des dimensions temporelles doivent correspondre à Meridian.n_times.
by_reach Valeur booléenne. Pour les canaux avec couverture et fréquence. Si la valeur est True, la courbe de réponse est représentée en fonction de la couverture. Si la valeur est False, elle est représentée en fonction de la fréquence.
use_optimal_frequency Si la valeur est True, la fréquence optimale est utilisée pour représenter les courbes de réponse. La valeur par défaut est False.
confidence_level Niveau de confiance pour les intervalles crédibles a priori et a posteriori, représenté par une valeur comprise entre zéro et un.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Un xarray.Dataset contenant les données nécessaires pour visualiser les courbes de réponse.

rhat_summary

Afficher la source

Calcule un récapitulatif des valeurs R-hat pour chaque paramètre du modèle.

Résume la réduction potentielle de l'échelle de Gelman et Rubin (1992) pour la convergence de la chaîne, communément appelée R-hat. Il s'agit d'une mesure de diagnostic de convergence qui évalue le degré auquel la variance (des moyennes) entre les chaînes dépasse les résultats que vous pourriez attendre si les chaînes étaient distribuées de manière identique. 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 et Gelman, 1998).

Références
Andrew Gelman et Donald B. Rubin. "Inference from Iterative Simulation Using Multiple Sequences". Statistical Science, 7(4):457-472, 1992. Stephen P. Brooks et Andrew Gelman. "General Methods for Monitoring Convergence of Iterative Simulations". Journal of Computational and Graphical Statistics, 7(4), 1998.

Args
bad_rhat_threshold Seuil permettant de déterminer quelles valeurs R-hat sont considérées comme incorrectes.

Renvoie
Un DataFrame avec les colonnes suivantes :

  • n_params : nombre de paramètres respectifs dans le modèle.
  • avg_rhat : valeur R-hat moyenne pour le paramètre concerné.
  • n_params : nombre de paramètres respectifs dans le modèle.
  • avg_rhat : valeur R-hat moyenne pour le paramètre concerné.
  • max_rhat : valeur R-hat maximale pour le paramètre concerné.
  • percent_bad_rhat : pourcentage de valeurs R-hat pour le paramètre respectif supérieures à bad_rhat_threshold.
  • row_idx_bad_rhat : indices de ligne des valeurs R-hat supérieures à bad_rhat_threshold.
  • col_idx_bad_rhat : indices de colonne des valeurs R-hat supérieures à bad_rhat_threshold.

Génère
NotFittedModelError Si self.sample_posterior() n'est pas appelé avant cette méthode.
ValueError Si le nombre de dimensions du tableau R-hat pour un paramètre n'est pas 1 ni 2.

roi

Afficher la source

Calcule la distribution a priori ou a posteriori du ROI pour chaque canal média.

Le numérateur du ROI correspond à la variation du résultat attendu (kpi ou kpi * revenue_per_kpi) lorsque les dépenses d'un canal sont définies sur zéro et que celles de tous les autres canaux restent les mêmes. Le dénominateur du ROI correspond aux dépenses totales du canal.

Si new_data=None, cette méthode calcule le ROI en fonction des valeurs des variables des médias payants avec lesquelles l'objet Meridian a été initialisé. L'utilisateur peut également remplacer ces données historiques par le biais de l'argument new_data, à condition que les dimensions des nouveaux tenseurs correspondent. Par exemple,

new_data = DataTensors(media=new_media, frequency=new_frequency)

Si selected_geos ou selected_times sont spécifiées, le dénominateur du ROI correspond alors aux dépenses totales pour les périodes et les zones géographiques sélectionnées. Une exception est générée si les dépenses des InputData utilisées pour entraîner le modèle ne comportent pas de dimensions géographiques et temporelles. Si les arguments new_data.media_spend et new_data.rf_spend sont utilisés avec des dimensions différentes de celles des dépenses des InputData, une exception sera générée, car il s'agit probablement d'une erreur de l'utilisateur.

Args
use_posterior Valeur booléenne. Si la valeur est True, la distribution a posteriori est calculée. Sinon, c'est celle a priori qui l'est.
new_data Facultatif. DataTensors contenant les données media, media_spend, reach, frequency, rf_spend et revenue_per_kpi. Si cela est fourni, le ROI est calculé à l'aide des valeurs des tenseurs transmises dans new_data et des valeurs d'origine de tous les autres tenseurs. Les dimensions des nouveaux tenseurs doivent correspondre à celles des tenseurs d'origine correspondants de meridian.input_data. Si la valeur est None, le ROI est calculé à l'aide des valeurs d'origine de tous les tenseurs.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de périodes à inclure. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, les revenus attendus sont cumulés pour toutes les régions.
use_kpi Si la valeur est False, les revenus sont utilisés pour calculer le numérateur du ROI. Sinon, c'est le KPI qui est utilisé.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.

Renvoie
Tensor de valeurs de ROI avec des dimensions (n_chains, n_draws, n_geos, (n_media_channels + n_rf_channels)). La dimension n_geos est supprimée si aggregate_geos=True.

summary_metrics

Afficher la source

Renvoie des métriques récapitulatives.

Si new_data=None, cette méthode calcule toutes les métriques en fonction des valeurs des variables de données avec lesquelles l'objet Meridian a été initialisé. L'utilisateur peut également remplacer ces données historiques par le biais de l'argument new_data, à condition que les dimensions des nouveaux tenseurs correspondent. Par exemple,

new_data = DataTensors(
    media=new_media,
    frequency=new_frequency,
    non_media_treatments=new_non_media_treatments)

Notez que les métriques mroi et effectiveness ne sont pas définies (math.nan) pour la dimension de canal agrégée "All Paid Channels".

Args
new_data Objet DataTensors facultatif avec de nouveaux tenseurs facultatifs : media, reach, frequency, organic_media, organic_reach, organic_frequency, non_media_treatments, controls, revenue_per_kpi. Si cela est fourni, les métriques récapitulatives sont calculées à l'aide des valeurs des tenseurs transmises dans new_data et des valeurs d'origine de tous les autres tenseurs. Les dimensions des nouveaux tenseurs doivent correspondre à celles des tenseurs d'origine correspondants de meridian.input_data. Si la valeur est None, les métriques récapitulatives sont calculées à l'aide des valeurs d'origine de tous les tenseurs.
marginal_roi_by_reach Valeur booléenne. Le ROI marginal (ROIm) correspond au retour sur le prochain euro dépensé. Si cet argument est True, le prochain euro dépensé n'est censé avoir d'impact que sur la couverture, tandis que la fréquence reste constante. Si cet argument est False, le prochain euro dépensé n'est censé avoir d'impact que sur la fréquence, tandis que la couverture reste constante. Cet argument n'est utilisé que lorsque include_non_paid_channels est False.
marginal_roi_incremental_increase Petite fraction par laquelle les dépenses de chaque canal sont augmentées lors du calcul du numérateur de leur ROIm. Le dénominateur du ROIm correspond à cette fraction des dépenses totales du canal. Cet argument n'est utilisé que lorsque include_non_paid_channels est False.
selected_geos Liste facultative contenant un sous-ensemble de zones géographiques à inclure. Par défaut, toutes les zones géographiques sont incluses.
selected_times Liste facultative contenant un sous-ensemble de périodes à inclure. Par défaut, toutes les périodes sont incluses.
aggregate_geos Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les régions.
aggregate_times Valeur booléenne. Si la valeur est True, le résultat attendu est cumulé pour toutes les périodes. Notez que si la valeur est False, le ROI, le ROIm, l'efficacité et le CPIK ne sont pas indiqués, car ils n'ont pas d'interprétation claire par période.
optimal_frequency Liste facultative avec la dimension n_rf_channels contenant la fréquence optimale par canal, qui maximise le ROI moyen a posteriori. La valeur par défaut est None et la fréquence historique est utilisée pour calculer les métriques.
use_kpi Valeur booléenne. Si la valeur est True, les métriques récapitulatives sont calculées à l'aide du KPI. Si la valeur est False, elles sont calculées à l'aide des revenus.
confidence_level Niveau de confiance pour les intervalles crédibles des métriques récapitulatives, représenté par une valeur comprise entre zéro et un.
batch_size Entier représentant le nombre maximal de tirages par chaîne dans chaque lot. Le calcul est exécuté par lots pour éviter d'épuiser la mémoire. Si une erreur de mémoire se produit, essayez de réduire batch_size. Le calcul sera généralement plus rapide avec des valeurs batch_size plus élevées.
include_non_paid_channels Valeur booléenne. Si la valeur est True, les canaux non payants (traitements média naturel, avec couverture et fréquence naturelles, et non média) sont inclus dans le récapitulatif, mais seules les métriques non liées aux dépenses sont indiquées. Si la valeur est False, seuls les canaux payants (média, avec couverture et fréquence) sont inclus, mais le récapitulatif contient également les métriques liées aux dépenses. Valeur par défaut : False.

Renvoie
Un xr.Dataset avec les coordonnées channel, metric (mean, median, ci_low, ci_high), distribution (a priori et a posteriori) contenant les variables de données non payantes suivantes : incremental_outcome, pct_of_contribution, effectiveness, et les variables de données payantes suivantes : impressions, pct_of_impressions, spend, pct_of_spend, CPM, roi, mroi, cpik. Les variables de données payantes ne sont incluses que lorsque include_non_paid_channels est défini sur False. Notez que les métriques roi, mroi, cpik et effectiveness ne sont pas indiquées lorsque aggregate_times=False, car elles n'ont pas d'interprétation claire par période.