Afficher la source sur GitHub
|
Contient les distributions a priori pour chaque paramètre du modèle.
meridian.model.prior_distribution.PriorDistribution(
*,
knot_values: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Normal(0.0, \n 5.0, name=constants.KNOT_VALUES)),
tau_g_excl_baseline: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Normal(0.0, \n 5.0, name=constants.TAU_G_EXCL_BASELINE)),
beta_m: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(5.0,\n name=constants.BETA_M)),
beta_rf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(5.0,\n name=constants.BETA_RF)),
beta_om: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(5.0,\n name=constants.BETA_OM)),
beta_orf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(5.0,\n name=constants.BETA_ORF)),
eta_m: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(1.0,\n name=constants.ETA_M)),
eta_rf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(1.0,\n name=constants.ETA_RF)),
eta_om: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(1.0,\n name=constants.ETA_OM)),
eta_orf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(1.0,\n name=constants.ETA_ORF)),
gamma_c: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Normal(0.0, \n 5.0, name=constants.GAMMA_C)),
gamma_n: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Normal(0.0, \n 5.0, name=constants.GAMMA_N)),
xi_c: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(5.0,\n name=constants.XI_C)),
xi_n: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(5.0,\n name=constants.XI_N)),
alpha_m: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Uniform(0.0, \n 1.0, name=constants.ALPHA_M)),
alpha_rf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Uniform(0.0, \n 1.0, name=constants.ALPHA_RF)),
alpha_om: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Uniform(0.0, \n 1.0, name=constants.ALPHA_OM)),
alpha_orf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Uniform(0.0, \n 1.0, name=constants.ALPHA_ORF)),
ec_m: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.\n TruncatedNormal(0.8, 0.8, 0.1, 10, name=constants.EC_M)),
ec_rf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.\n TransformedDistribution(tfp.distributions.LogNormal(0.7, 0.4), tfp.\n bijectors.Shift(0.1), name=constants.EC_RF)),
ec_om: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.\n TruncatedNormal(0.8, 0.8, 0.1, 10, name=constants.EC_OM)),
ec_orf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.\n TransformedDistribution(tfp.distributions.LogNormal(0.7, 0.4), tfp.\n bijectors.Shift(0.1), name=constants.EC_ORF)),
slope_m: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Deterministic(\n 1.0, name=constants.SLOPE_M)),
slope_rf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.LogNormal(0.7,\n 0.4, name=constants.SLOPE_RF)),
slope_om: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.Deterministic(\n 1.0, name=constants.SLOPE_OM)),
slope_orf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.LogNormal(0.7,\n 0.4, name=constants.SLOPE_ORF)),
sigma: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.HalfNormal(5.0,\n name=constants.SIGMA)),
roi_m: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.LogNormal(0.2,\n 0.9, name=constants.ROI_M)),
roi_rf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.LogNormal(0.2,\n 0.9, name=constants.ROI_RF)),
mroi_m: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.LogNormal(0.0,\n 0.5, name=constants.MROI_M)),
mroi_rf: tfp.distributions.Distribution = dataclasses.field(default_factory=lambda : tfp.distributions.LogNormal(0.0,\n 0.5, name=constants.MROI_RF))
)
PriorDistribution est une classe utilitaire pour Meridian. Les formes requises des arguments de PriorDistribution dépendent des options de modélisation et des formes de données transmises à Meridian. Par exemple, ec_m est un paramètre qui représente la demi-saturation de chaque canal média. L'argument ec_m doit comporter soit batch_shape=[], soit batch_shape égal au nombre de canaux média. Dans le premier cas, chaque canal média reçoit le même a priori.
Une erreur est générée lors de la construction de Meridian si la forme d'une distribution a priori ne peut pas être diffusée dans la forme désignée par la spécification du modèle.
Les formes de batch des paramètres sont les suivantes :
| Paramètre | Forme de batch |
|---|---|
knot_values |
n_knots |
tau_g_excl_baseline |
n_geos - 1 |
beta_m |
n_media_channels |
beta_rf |
n_rf_channels |
beta_om |
n_organic_media_channels |
beta_orf |
n_organic_rf_channels |
eta_m |
n_media_channels |
eta_rf |
n_rf_channels |
eta_om |
n_organic_media_channels |
eta_orf |
n_organic_rf_channels |
gamma_c |
n_controls |
gamma_n |
n_non_media_channels |
xi_c |
n_controls |
xi_n |
n_non_media_channels |
alpha_m |
n_media_channels |
alpha_rf |
n_rf_channels |
alpha_om |
n_organic_media_channels |
alpha_orf |
n_organic_rf_channels |
ec_m |
n_media_channels |
ec_rf |
n_rf_channels |
ec_om |
n_organic_media_channels |
ec_orf |
n_organic_rf_channels |
slope_m |
n_media_channels |
slope_rf |
n_rf_channels |
slope_om |
n_organic_media_channels |
slope_orf |
n_organic_rf_channels |
sigma |
(σ) |
roi_m |
n_media_channels |
roi_rf |
n_rf_channels |
mroi_m |
n_media_channels |
mroi_rf |
n_rf_channels |
(σ) n_geos si unique_sigma_for_each_geo, sinon 1
Attributs | |
|---|---|
knot_values
|
Distribution a priori sur les nœuds pour les effets temporels. La distribution par défaut est définie sur Normal(0.0, 5.0).
|
tau_g_excl_baseline
|
Distribution a priori sur les effets géographiques, qui représentent le KPI moyen de chaque zone géographique par rapport à la zone géographique de référence. Ce paramètre est diffusé dans un vecteur de longueur n_geos - 1, en conservant l'ordre géographique et en excluant baseline_geo. Après l'échantillonnage, Meridian.inference_data inclut une version modifiée de ce paramètre appelée tau_g, qui a une longueur de n_geos et contient un zéro à la position correspondant à baseline_geo. Meridian ignore cette distribution si n_geos = 1.
La distribution par défaut est définie sur Normal(0.0, 5.0).
|
beta_m
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux média d'impression (beta_gm). Lorsque media_effects_dist est défini sur 'normal', il s'agit de la moyenne hiérarchique.
Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour la moyenne de la distribution Normal sous-jacente log-transformée. Meridian ignore cette distribution si paid_media_prior_type est 'roi' ou 'mroi' et utilise plutôt l'a priori de roi_m ou mroi_m. La distribution par défaut est définie sur HalfNormal(5.0).
|
beta_rf
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux média avec couverture et fréquence (beta_grf). Lorsque media_effects_dist est défini sur 'normal', il s'agit de la moyenne hiérarchique. Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour la moyenne de la distribution Normal sous-jacente log-transformée. Meridian ignore cette distribution si paid_media_prior_type est 'roi' ou 'mroi' et utilise plutôt l'a priori de roi_m ou mroi_rf. La distribution par défaut est définie sur HalfNormal(5.0).
|
beta_om
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux de type média naturel (beta_gom). Lorsque media_effects_dist est défini sur 'normal', il s'agit de la moyenne hiérarchique.
Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour la moyenne de la distribution Normal sous-jacente log-transformée. La distribution par défaut est définie sur HalfNormal(5.0).
|
beta_orf
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux de type média naturel avec couverture et fréquence (beta_gorf). Lorsque media_effects_dist est défini sur 'normal', il s'agit de la moyenne hiérarchique. Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour la moyenne de la distribution Normal sous-jacente log-transformée. La distribution par défaut est définie sur HalfNormal(5.0).
|
eta_m
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux média d'impression (beta_gm). Lorsque media_effects_dist est défini sur 'normal', il s'agit de l'écart-type hiérarchique. Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour l'écart-type de la distribution Normal sous-jacente log-transformée. La distribution par défaut est définie sur HalfNormal(1.0).
|
eta_rf
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux média de couverture et de fréquence (beta_grf). Lorsque media_effects_dist est défini sur 'normal', il s'agit de l'écart-type hiérarchique. Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour l'écart-type de la distribution Normal sous-jacente log-transformée. La distribution par défaut est définie sur HalfNormal(1.0).
|
eta_om
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux média naturel (beta_gom). Lorsque media_effects_dist est défini sur 'normal', il s'agit de l'écart-type hiérarchique. Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour l'écart-type de la distribution Normal sous-jacente log-transformée. La distribution par défaut est définie sur HalfNormal(1.0).
|
eta_orf
|
Distribution a priori sur un paramètre pour la distribution hiérarchique des effets média au niveau géographique pour les canaux média avec couverture et fréquence naturelles (beta_gorf). Lorsque media_effects_dist est défini sur 'normal', il s'agit de l'écart-type hiérarchique. Lorsque media_effects_dist est défini sur 'log_normal', il s'agit du paramètre hiérarchique pour l'écart-type de la distribution Normal sous-jacente log-transformée. La distribution par défaut est définie sur HalfNormal(1.0).
|
gamma_c
|
Distribution a priori sur la moyenne hiérarchique de gamma_gc, qui est le coefficient sur le contrôle c pour la zone géographique g. La hiérarchie est définie sur les zones géographiques. La distribution par défaut est définie sur Normal(0.0, 5.0).
|
gamma_n
|
Distribution a priori sur la moyenne hiérarchique de gamma_gn, qui est le coefficient sur le canal non média n pour la zone géographique g. La hiérarchie est définie sur les zones géographiques. La distribution par défaut est définie sur Normal(0.0, 5.0).
|
xi_c
|
Distribution a priori sur l'écart-type hiérarchique de gamma_gc, qui est le coefficient sur le contrôle c pour la zone géographique g. La hiérarchie est définie sur les zones géographiques. La distribution par défaut est définie sur HalfNormal(5.0).
|
xi_n
|
Distribution a priori sur l'écart-type hiérarchique de gamma_gn, qui est le coefficient sur le canal non média n pour la zone géographique g.
La hiérarchie est définie sur les zones géographiques. La distribution par défaut est définie sur HalfNormal(5.0).
|
alpha_m
|
Distribution a priori sur le paramètre Adstock geometric decay pour les inputs média. La distribution par défaut est définie sur Uniform(0.0, 1.0).
|
alpha_rf
|
Distribution a priori sur le paramètre Adstock geometric decay pour les inputs RF. La distribution par défaut est définie sur Uniform(0.0, 1.0).
|
alpha_om
|
Distribution a priori sur le paramètre Adstock geometric decay pour les inputs média naturel. La distribution par défaut est définie sur Uniform(0.0, 1.0).
|
alpha_orf
|
Distribution a priori sur le paramètre Adstock geometric decay pour les inputs couverture et fréquence naturelles. La distribution par défaut est définie sur Uniform(0.0, 1.0).
|
ec_m
|
Distribution a priori sur le paramètre Hill half-saturation pour les inputs média. La distribution par défaut est définie sur TruncatedNormal(0.8, 0.8, 0.1, 10).
|
ec_rf
|
Distribution a priori sur le paramètre Hill half-saturation pour les inputs RF. La distribution par défaut est définie sur TransformedDistribution(LogNormal(0.7,
0.4), Shift(0.1)).
|
ec_om
|
Distribution a priori sur le paramètre Hill half-saturation pour les inputs média naturel. La distribution par défaut est définie sur TruncatedNormal(0.8, 0.8,
0.1, 10).
|
ec_orf
|
Distribution a priori sur le paramètre Hill half-saturation pour les inputs couverture et fréquence naturelles. La distribution par défaut est définie sur TransformedDistribution(
LogNormal(0.7, 0.4), Shift(0.1)).
|
slope_m
|
Distribution a priori sur le paramètre Hill slope pour les inputs média.
La distribution par défaut est définie sur Deterministic(1.0).
|
slope_rf
|
Distribution a priori sur le paramètre Hill slope pour les inputs RF.
La distribution par défaut est définie sur LogNormal(0.7, 0.4).
|
slope_om
|
Distribution a priori sur le paramètre Hill slope pour les inputs média naturel. La distribution par défaut est définie sur Deterministic(1.0).
|
slope_orf
|
Distribution a priori sur le paramètre Hill slope pour les inputs couverture et fréquence naturelles. La distribution par défaut est définie sur LogNormal(0.7, 0.4).
|
sigma
|
Distribution a priori sur l'écart-type du bruit. La distribution par défaut est définie sur HalfNormal(5.0).
|
roi_m
|
Distribution a priori sur le ROI pour chaque canal média. Ce paramètre n'est utilisé que lorsque paid_media_prior_type est défini sur 'roi'. Dans ce cas, beta_m est calculé en tant que fonction déterministe de roi_rf, de alpha_rf, de ec_rf, de slope_rf et des dépenses associées à chaque canal média. La distribution par défaut est définie sur LogNormal(0.2, 0.9). Lorsque kpi_type est défini sur 'non_revenue' et que revenue_per_kpi n'est pas fourni, le ROI est interprété comme les unités de KPI incrémentales par unité monétaire dépensée. Dans ce cas, la valeur par défaut pour roi_m et roi_rf sera ignorée, et un a priori de ROI commun sera attribué à tous les canaux pour atteindre une moyenne cible et un écart-type sur la contribution média totale.
|
roi_rf
|
Distribution a priori sur le ROI pour chaque canal avec couverture et fréquence.
Ce paramètre n'est utilisé que lorsque paid_media_prior_type est défini sur 'roi'. Dans ce cas, beta_rf est calculé en tant que fonction déterministe de roi_rf, de alpha_rf, de ec_rf, de slope_rf et des dépenses associées à chaque canal avec couverture et fréquence. La distribution par défaut est définie sur LogNormal(0.2, 0.9). Lorsque kpi_type est défini sur 'non_revenue' et que revenue_per_kpi n'est pas fourni, le ROI est interprété comme les unités de KPI incrémentales par unité monétaire dépensée. Dans ce cas, la valeur par défaut pour roi_m et roi_rf sera ignorée, et un a priori de ROI commun sera attribué à tous les canaux pour atteindre une moyenne cible et un écart-type sur la contribution média totale.
|
mroi_m
|
Distribution a priori sur le mROI pour chaque canal média. Ce paramètre n'est utilisé que lorsque paid_media_prior_type est défini sur 'mroi'. Dans ce cas, beta_m est calculé en tant que fonction déterministe de mroi_m, de alpha_m, de ec_m, de slope_m et des dépenses associées à chaque canal média.
La distribution par défaut est définie sur LogNormal(0.0, 0.5). Lorsque kpi_type est défini sur 'non_revenue' et que revenue_per_kpi n'est pas fourni, le ROIm est interprété comme les unités de KPI incrémentales marginales par unité monétaire dépensée. Dans ce cas, aucune distribution par défaut n'est fournie. L'utilisateur doit donc la spécifier.
|
mroi_rf
|
Distribution a priori sur le mROI pour chaque canal avec couverture et fréquence.
Ce paramètre n'est utilisé que lorsque paid_media_prior_type est défini sur 'mroi'. Dans ce cas, beta_rf est calculé en tant que fonction déterministe de mroi_rf, de alpha_rf, de ec_rf, de slope_rf et des dépenses associées à chaque canal média. La distribution par défaut est définie sur LogNormal(0.0, 0.5). Lorsque kpi_type est défini sur 'non_revenue' et que revenue_per_kpi n'est pas fourni, le mROI est interprété comme les unités de KPI incrémentales marginales par unité monétaire dépensée. Dans ce cas, aucune distribution par défaut n'est fournie. L'utilisateur doit donc la spécifier.
|
Méthodes
broadcast
broadcast(
n_geos: int,
n_media_channels: int,
n_rf_channels: int,
n_organic_media_channels: int,
n_organic_rf_channels: int,
n_controls: int,
n_non_media_channels: int,
sigma_shape: int,
n_knots: int,
is_national: bool,
set_total_media_contribution_prior: bool,
kpi: float,
total_spend: np.ndarray
) -> PriorDistribution
Renvoie une nouvelle PriorDistribution avec des attributs de distribution de diffusion.
| Args | |
|---|---|
n_geos
|
Nombre de zones géographiques. |
n_media_channels
|
Nombre de canaux média utilisés. |
n_rf_channels
|
Nombre de canaux avec couverture et fréquence utilisés. |
n_organic_media_channels
|
Nombre de canaux média naturel utilisés. |
n_organic_rf_channels
|
Nombre de canaux avec couverture et fréquence naturelles utilisés. |
n_controls
|
Nombre de contrôles utilisés. |
n_non_media_channels
|
Nombre de canaux non média utilisés. |
sigma_shape
|
Nombre décrivant la forme du paramètre sigma. Il s'agit de 1 (si sigma_for_each_geo=False) ou de n_geos (si sigma_for_each_geo=True). Pour en savoir plus, consultez ModelSpec.
|
n_knots
|
Nombre de nœuds utilisés. |
is_national
|
Indicateur booléen spécifiant si la distribution a priori sera adaptée à un modèle national. |
set_total_media_contribution_prior
|
Indicateur booléen indiquant si les a priori de ROI doivent être définis pour atteindre un a priori de contribution média totale avec une moyenne cible et un écart-type. |
kpi
|
Somme de l'ensemble des KPI pour toutes les zones géographiques et toutes les périodes. Obligatoire si set_total_media_contribution_prior=True.
|
total_spend
|
Dépenses par canal média, additionnées pour toutes les zones géographiques et toutes les périodes. Obligatoire si set_total_media_contribution_prior=True.
|
| Renvoie | |
|---|---|
Une nouvelle diffusion PriorDistribution à partir de cette distribution a priori, en fonction de la dimensionnalité des données constatée.
|
| Génère | |
|---|---|
ValueError
|
Si des priors personnalisés ne sont pas définis pour tous les canaux. |
has_deterministic_param
has_deterministic_param(
param: tfp.distributions.Distribution
) -> bool
__eq__
__eq__(
other
)
Return self==value.
Afficher la source sur GitHub