Visualizza il codice sorgente su GitHub
|
Contiene le distribuzioni a priori per ogni parametro del modello.
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))
)
PriorDistribution è una classe di utilità per Meridian. Le forme richieste degli argomenti per PriorDistribution dipendono dalle opzioni di modellazione e dalle forme dei dati passati a Meridian. Ad esempio, ec_m è un parametro che rappresenta la metà della saturazione per ciascun canale multimediale. L'argomento ec_m deve avere batch_shape=[] o batch_shape uguale al numero di canali media. Nel caso del primo, ogni canale media riceve lo stesso prior.
Viene generato un errore durante la costruzione di Meridian se una distribuzione precedente ha una forma che non può essere trasmessa alla forma designata dalla specifica del modello.
Le forme dei batch di parametri sono le seguenti:
| Parametro | Forma del 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 |
(σ) n_geos se unique_sigma_for_each_geo, altrimenti 1
Attributi | |
|---|---|
knot_values
|
Distribuzione a priori sui nodi per gli effetti del tempo. La distribuzione predefinita è Normal(0.0, 5.0).
|
tau_g_excl_baseline
|
Distribuzione a priori degli effetti geografici, che rappresentano il KPI medio di ogni località rispetto alla località di riferimento. Questo parametro viene trasmesso a un vettore di lunghezza n_geos - 1, mantenendo l'ordine geografico ed escludendo baseline_geo. Dopo il campionamento, Meridian.inference_data include una versione modificata di questo parametro chiamata tau_g, che ha una lunghezza di n_geos e contiene uno zero nella posizione corrispondente a baseline_geo. Meridian ignora questa distribuzione se n_geos = 1.
La distribuzione predefinita è Normal(0.0, 5.0).
|
beta_m
|
Distribuzione a priori su un parametro per la distribuzione gerarchica
degli effetti dei media a livello geografico per i canali media delle impressioni (beta_gm). Quando
media_effects_dist è impostato su 'normal', si tratta della media gerarchica.
Quando media_effects_dist è impostato su 'log_normal', si tratta del parametro gerarchico per la media della distribuzione Normal sottostante trasformata in logaritmo. Meridian ignora questa distribuzione se paid_media_prior_type è 'roi' o 'mroi' e utilizza roi_m. La distribuzione predefinita è HalfNormal(5.0).
|
beta_rf
|
Distribuzione a priori per un parametro per la distribuzione gerarchica
degli effetti dei media a livello geografico per i canali media di copertura e frequenza
(beta_grf). Quando media_effects_dist è impostato su 'normal', si tratta della mediana gerarchica. Quando media_effects_dist è impostato su 'log_normal',
si tratta del parametro gerarchico per la media della distribuzione Normal sottostante trasformata in logaritmo. Meridian ignora questa distribuzione se paid_media_prior_type è 'roi' o 'mroi' e utilizza invece roi_m. La distribuzione predefinita è HalfNormal(5.0).
|
beta_om
|
Distribuzione a priori per un parametro per la distribuzione gerarchica
degli effetti dei media a livello geografico per i canali di media organici (beta_gom). Quando
media_effects_dist è impostato su 'normal', si tratta della media gerarchica.
Quando media_effects_dist è impostato su 'log_normal', si tratta del parametro gerarchico per la media della distribuzione Normal sottostante trasformata in logaritmo. Meridian ignora questa distribuzione se use_roi_prior è
True e utilizza invece la prior roi_om. La distribuzione predefinita è
HalfNormal(5.0).
|
beta_orf
|
Distribuzione a priori per un parametro per la distribuzione gerarchica degli effetti dei media a livello geografico per i canali media di frequenza e copertura organica (beta_gorf). Quando media_effects_dist è impostato su
'normal', si tratta della media gerarchica. Quando media_effects_dist è impostato su 'log_normal', si tratta del parametro gerarchico per la media della distribuzione Normal sottostante trasformata in logaritmo. Meridian ignora questa distribuzione se use_roi_prior è True e utilizza invece il prior roi_orf. La distribuzione predefinita è HalfNormal(5.0).
|
eta_m
|
Distribuzione a priori su un parametro per la distribuzione gerarchica
degli effetti dei media a livello geografico per i canali media delle impressioni (beta_gm). Quando
media_effects_dist è impostato su 'normal', si tratta della deviazione standard
gerarchica. Quando media_effects_dist è impostato su 'log_normal', si tratta del
parametro gerarchico per la deviazione standard della distribuzione Normal di base, trasformata in logaritmo. La distribuzione predefinita è
HalfNormal(1.0).
|
eta_rf
|
Distribuzione a priori per un parametro per la distribuzione gerarchica
degli effetti dei media a livello geografico per i canali media RF (beta_grf). Quando
media_effects_dist è impostato su 'normal', si tratta della deviazione standard
gerarchica. Quando media_effects_dist è impostato su 'log_normal', si tratta del
parametro gerarchico per la deviazione standard della distribuzione Normal di base, trasformata in logaritmo. La distribuzione predefinita è
HalfNormal(1.0).
|
eta_om
|
Distribuzione a priori di un parametro per la distribuzione gerarchica
degli effetti dei media a livello geografico per i canali media organici (beta_gom). Quando
media_effects_dist è impostato su 'normal', si tratta della deviazione standard
gerarchica. Quando media_effects_dist è impostato su 'log_normal', si tratta del
parametro gerarchico per la deviazione standard della distribuzione Normal di base, trasformata in logaritmo. La distribuzione predefinita è
HalfNormal(1.0).
|
eta_orf
|
Distribuzione a priori per un parametro per la distribuzione gerarchica
degli effetti dei media a livello geografico per i canali media RF organici (beta_gorf).
Quando media_effects_dist è impostato su 'normal', si tratta della deviazione standard
gerarchica. Quando media_effects_dist è impostato su 'log_normal',
si tratta del parametro gerarchico per la deviazione standard della
distribuzione Normal sottostante trasformata in logaritmo. La distribuzione predefinita è HalfNormal(1.0).
|
gamma_c
|
Distribuzione a priori sulla media gerarchica di gamma_gc, ovvero il coefficiente del gruppo di controllo c per la località g. La gerarchia è definita su
gli elementi geografici. La distribuzione predefinita è Normal(0.0, 5.0).
|
gamma_n
|
Distribuzione a priori sulla media gerarchica di gamma_gn, ovvero il coefficiente per il canale non multimediale n per la località g. La gerarchia è definita su dati geografici. La distribuzione predefinita è Normal(0.0, 5.0).
|
xi_c
|
Distribuzione a priori sulla deviazione standard gerarchica di
gamma_gc, che è il coefficiente del gruppo di controllo c per la località g. La gerarchia
viene definita in base ai dati geografici. La distribuzione predefinita è HalfNormal(5.0).
|
xi_n
|
Distribuzione a priori della deviazione standard gerarchica di
gamma_gn, ovvero il coefficiente del canale non multimediale n per la località g.
La gerarchia è definita in base ai dati geografici. La distribuzione predefinita è HalfNormal(5.0).
|
alpha_m
|
Distribuzione a priori del parametro geometric decay Adstock per input media. La distribuzione predefinita è Uniform(0.0, 1.0).
|
alpha_rf
|
Distribuzione a priori del parametro geometric decay Adstock per input RF. La distribuzione predefinita è Uniform(0.0, 1.0).
|
alpha_om
|
Distribuzione a priori del parametro geometric decay Adstock per
l'input dei media organici. La distribuzione predefinita è Uniform(0.0, 1.0).
|
alpha_orf
|
Distribuzione a priori del parametro geometric decay Adstock per input RF organico. La distribuzione predefinita è Uniform(0.0, 1.0).
|
ec_m
|
Distribuzione a priori del parametro half-saturation Hill per l'input media. La distribuzione predefinita è TruncatedNormal(0.8, 0.8, 0.1, 10).
|
ec_rf
|
Distribuzione a priori del parametro di Hill half-saturation per l'input RF. La distribuzione predefinita è TransformedDistribution(LogNormal(0.7,
0.4), Shift(0.1)).
|
ec_om
|
Distribuzione a priori del parametro di Hill half-saturation per input di media organici. La distribuzione predefinita è TruncatedNormal(0.8, 0.8,
0.1, 10).
|
ec_orf
|
Distribuzione a priori del parametro half-saturation Hill per input RF organico. La distribuzione predefinita è TransformedDistribution(
LogNormal(0.7, 0.4), Shift(0.1)).
|
slope_m
|
Distribuzione a priori sul parametro di Hill slope per l'input multimediale.
La distribuzione predefinita è Deterministic(1.0).
|
slope_rf
|
Distribuzione a priori sul parametro di Hill slope per l'input RF.
La distribuzione predefinita è LogNormal(0.7, 0.4).
|
slope_om
|
Distribuzione a priori del parametro di Hill slope per l'input dei media organici. La distribuzione predefinita è Deterministic(1.0).
|
slope_orf
|
Distribuzione a priori del parametro di Hill slope per l'input di annunci organici basati su ricerca. La distribuzione predefinita è LogNormal(0.7, 0.4).
|
sigma
|
Distribuzione a priori sulla deviazione standard del rumore. La distribuzione predefinita è HalfNormal(5.0).
|
roi_m
|
Distribuzione a priori del ROI o del mROI (a seconda del valore di paid_media_prior_type) di ciascun canale multimediale. Meridian ignora questa distribuzione se paid_media_prior_type è 'coefficient' e utilizza beta_m. Quando paid_media_prior_type è 'roi' o 'mroi', beta_m viene calcolato come funzione deterministica di roi_m, alpha_m, ec_m, slope_m e della spesa associata a ciascun canale media.
La distribuzione predefinita è LogNormal(0.2, 0.9) quando paid_media_prior_type
== "roi" e LogNormal(0.0, 0.5) quando paid_media_prior_type ==
"mroi". Quando kpi_type è 'non_revenue' e revenue_per_kpi non viene fornito, il ROI viene interpretato come unità KPI incrementali per unità monetaria spesa. In questo caso: 1) se paid_media_prior_type='roi', il valore predefinito per roi_m e roi_rf verrà ignorato e un ROI precedente comune verrà assegnato a tutti i canali per raggiungere una media e una deviazione standard target per il contributo totale dei media e 2)
paid_media_prior_type='mroi' non è supportato.
|
roi_rf
|
Distribuzione a priori del ROI o del ROI medio (a seconda del valore di paid_media_prior_type) di ciascun canale Copertura e frequenza. Meridian
ignora questa distribuzione se paid_media_prior_type è 'coefficient'
e utilizza beta_rf. Quando paid_media_prior_type è 'roi' o
'mroi', beta_rf viene calcolato come funzione deterministica di
roi_rf, alpha_rf, ec_rf, slope_rf e della spesa associata a
ogni canale media. La distribuzione predefinita è LogNormal(0.2, 0.9) quando
paid_media_prior_type == "roi" e LogNormal(0.0, 0.5) quando
paid_media_prior_type == "mroi". Quando kpi_type è 'non_revenue' e
revenue_per_kpi non viene fornito, il ROI viene interpretato come unità di KPI
incrementali per unità monetaria spesa. In questo
caso: 1) se paid_media_prior_type='roi', il valore predefinito per roi_m
e roi_rf verrà ignorato e verrà assegnato un ROI predefinito comune a tutti i canali per raggiungere una media e una deviazione standard target per il contributo totale dei media e 2) paid_media_prior_type='mroi' non è supportato.
|
Metodi
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,
paid_media_prior_type: str,
set_roi_prior: bool,
kpi: float,
total_spend: np.ndarray
) -> PriorDistribution
Restituisce un nuovo PriorDistribution con gli attributi di distribuzione della trasmissione.
| Args | |
|---|---|
n_geos
|
Numero di elementi geografici. |
n_media_channels
|
Numero di canali media utilizzati. |
n_rf_channels
|
Numero di canali di copertura e frequenza utilizzati. |
n_organic_media_channels
|
Numero di canali media organici utilizzati. |
n_organic_rf_channels
|
Numero di canali organici di copertura e frequenza utilizzati. |
n_controls
|
Numero di controlli utilizzati. |
n_non_media_channels
|
Numero di canali non multimediali utilizzati. |
sigma_shape
|
Un numero che descrive la forma del parametro sigma. Deve essere 1 (se sigma_for_each_geo=False) o n_geos (se sigma_for_each_geo=True). Per ulteriori informazioni, consulta ModelSpec.
|
n_knots
|
Numero di nodi utilizzati. |
is_national
|
Un indicatore booleano che indica se la distribuzione a priori verrà adattata per un modello nazionale. |
paid_media_prior_type
|
Una stringa che specifica il tipo precedente per i coefficienti medi. |
set_roi_prior
|
Un indicatore booleano che indica se deve essere impostato il ROI precedente. |
kpi
|
Somma dell'intero KPI per aree geografiche e periodo di tempo. Obbligatorio se
set_roi_prior=True.
|
total_spend
|
Spesa per canale media sommata per aree geografiche e periodo di tempo. Obbligatorio
se set_roi_prior=True.
|
| Resi | |
|---|---|
Una nuova distribuzione PriorDistribution da questa distribuzione precedente,
in base alla dimensione dei dati specificata.
|
| Aumenti | |
|---|---|
ValueError
|
Se le probabilità a priori personalizzate non sono impostate per tutti i canali. |
has_deterministic_param
has_deterministic_param(
param: tfp.distributions.Distribution
) -> bool
__eq__
__eq__(
other
)
Restituisce self==value.
Visualizza il codice sorgente su GitHub