Ver código-fonte no GitHub
|
Contém as distribuições a priori de cada parâmetro de modelo.
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" é uma classe de utilitário do Meridian. As dimensões necessárias dos argumentos para PriorDistribution dependem das opções de modelagem e das dimensões de dados transmitidas ao Meridian. Por exemplo, ec_m é um parâmetro que representa a meia saturação de cada canal de mídia. O argumento ec_m precisa ter batch_shape=[] ou batch_shape igual ao número de canais de mídia. No primeiro caso, cada um desses canais recebe a mesma distribuição a priori.
Um erro vai aparecer após a construção do Meridian se qualquer distribuição a priori tiver uma dimensão que não possa ser transmitida para a dimensão designada pela especificação do modelo.
Estas são as dimensões de lote de parâmetros:
| Parâmetro | Dimensão do lote |
|---|---|
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 se for unique_sigma_for_each_geo. Caso contrário, será 1.
Atributos | |
|---|---|
knot_values
|
Distribuição a priori em nós para efeitos temporais. A distribuição padrão é Normal(0.0, 5.0).
|
tau_g_excl_baseline
|
Distribuição a priori nos efeitos geográficos, que representam o KPI médio de cada região em relação à região de referência. Esse parâmetro é enviado para um vetor de comprimento n_geos - 1, preservando a ordem geográfica e excluindo o baseline_geo. Após a amostragem, Meridian.inference_data passa a incluir inclui uma versão modificada desse parâmetro chamada tau_g, que tem comprimento n_geos e contém um "zero" na posição correspondente a baseline_geo. O Meridian vai ignorar essa distribuição no caso de n_geos = 1.
A distribuição padrão é Normal(0.0, 5.0).
|
beta_m
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia de impressão (beta_gm). Quando media_effects_dist é definido como 'normal', trata-se da média hierárquica.
Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para a média da distribuição Normal, que passou a usar transformação logarítmica. O Meridian vai ignorar essa distribuição se paid_media_prior_type for 'roi' ou 'mroi'. Nesse caso, será usada roi_m ou mroi_m. A distribuição padrão é HalfNormal(5.0).
|
beta_rf
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia de alcance e frequência (beta_grf). Quando media_effects_dist é definido como 'normal', trata-se da média hierárquica. Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para a média da distribuição Normal, que passou a usar transformação logarítmica. O Meridian vai ignorar essa distribuição se paid_media_prior_type for 'roi' ou 'mroi'. Nesse caso, será usada roi_m ou mroi_rf. A distribuição padrão é HalfNormal(5.0).
|
beta_om
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia orgânica (beta_gom). Quando media_effects_dist é definido como 'normal', trata-se da média hierárquica.
Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para a média da distribuição Normal, que passou a usar transformação logarítmica. A distribuição padrão é HalfNormal(5.0).
|
beta_orf
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia de alcance e frequência (beta_gorf). Quando media_effects_dist é definido como 'normal', trata-se da média hierárquica. Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para a média da distribuição Normal, que passou a usar transformação logarítmica. A distribuição padrão é HalfNormal(5.0).
|
eta_m
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia de impressão (beta_gm). Quando media_effects_dist é definido como 'normal', trata-se do desvio padrão hierárquico. Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para o desvio padrão da distribuição Normal, que passou a usar transformação logarítmica. A distribuição padrão é HalfNormal(1.0).
|
eta_rf
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia de alcance e frequência (beta_grf). Quando media_effects_dist é definido como 'normal', trata-se do desvio padrão hierárquico. Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para o desvio padrão da distribuição Normal, que passou a usar transformação logarítmica. A distribuição padrão é HalfNormal(1.0).
|
eta_om
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia orgânica (beta_gom). Quando media_effects_dist é definido como 'normal', trata-se do desvio padrão hierárquico. Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para o desvio padrão da distribuição Normal, que passou a usar transformação logarítmica. A distribuição padrão é HalfNormal(1.0).
|
eta_orf
|
Distribuição a priori em um parâmetro para a distribuição hierárquica de efeitos de mídia no nível geográfico para canais de mídia de alcance e frequência orgânicos (beta_gorf). Quando media_effects_dist é definido como 'normal', trata-se do desvio padrão hierárquico. Quando media_effects_dist é definido como 'log_normal', ele é o parâmetro hierárquico para o desvio padrão da distribuição Normal, que passou a usar transformação logarítmica. A distribuição padrão é HalfNormal(1.0).
|
gamma_c
|
Distribuição a priori na média hierárquica de gamma_gc, que é o coeficiente no controle c para a região g. A hierarquia é definida com base em regiões geográficas. A distribuição padrão é Normal(0.0, 5.0).
|
gamma_n
|
Distribuição a priori na média hierárquica de gamma_gn, que é o coeficiente no canal que não é de mídia n para a região geográfica g. A hierarquia é definida com base em regiões geográficas. A distribuição padrão é Normal(0.0, 5.0).
|
xi_c
|
Distribuição a priori no desvio padrão hierárquico de gamma_gc, que é o coeficiente no controle c para a região g. A hierarquia é definida com base em regiões geográficas. A distribuição padrão é HalfNormal(5.0).
|
xi_n
|
Distribuição a priori no desvio padrão hierárquico de gamma_gn, que é o coeficiente no canal que não é de mídia n para a região geográfica g.
A hierarquia é definida com base em regiões geográficas. A distribuição padrão é HalfNormal(5.0).
|
alpha_m
|
Distribuição a priori no parâmetro geometric decay de Adstock para entradas de mídia. A distribuição padrão é Uniform(0.0, 1.0).
|
alpha_rf
|
Distribuição a priori no parâmetro geometric decay de Adstock para entradas de alcance e frequência. A distribuição padrão é Uniform(0.0, 1.0).
|
alpha_om
|
Distribuição a priori no parâmetro geometric decay de Adstock para entradas de mídia orgânica. A distribuição padrão é Uniform(0.0, 1.0).
|
alpha_orf
|
Distribuição a priori no parâmetro geometric decay de Adstock para entradas de alcance e frequência orgânicos. A distribuição padrão é Uniform(0.0, 1.0).
|
ec_m
|
Distribuição a priori no parâmetro half-saturation de Hill para entradas de mídia. A distribuição padrão é TruncatedNormal(0.8, 0.8, 0.1, 10).
|
ec_rf
|
Distribuição a priori no parâmetro half-saturation de Hill para entradas de alcance e frequência. A distribuição padrão é TransformedDistribution(LogNormal(0.7,
0.4), Shift(0.1)).
|
ec_om
|
Distribuição a priori no parâmetro half-saturation Hill para entradas de mídia orgânica. A distribuição padrão é TruncatedNormal(0.8, 0.8,
0.1, 10).
|
ec_orf
|
Distribuição a priori no parâmetro half-saturation de Hill para entradas de alcance e frequência orgânicos. A distribuição padrão é TransformedDistribution(
LogNormal(0.7, 0.4), Shift(0.1)).
|
slope_m
|
Distribuição a priori no parâmetro slope Hill para entradas de mídia.
A distribuição padrão é Deterministic(1.0).
|
slope_rf
|
Distribuição a priori no parâmetro slope de Hill para entradas de alcance e frequência.
A distribuição padrão é LogNormal(0.7, 0.4).
|
slope_om
|
Distribuição a priori no parâmetro slope Hill para entradas de mídia orgânica. A distribuição padrão é Deterministic(1.0).
|
slope_orf
|
Distribuição a priori no parâmetro slope de Hill para entradas de alcance e frequência orgânicos. A distribuição padrão é LogNormal(0.7, 0.4).
|
sigma
|
Distribuição a priori no desvio padrão de ruído. A distribuição padrão é HalfNormal(5.0).
|
roi_m
|
Distribuição a priori no ROI de cada canal de mídia. Esse parâmetro só é usado quando paid_media_prior_type é 'roi'. Nesse caso, beta_m é calculado como uma função determinista de roi_rf, alpha_rf, ec_rf, slope_rf e o gasto associado a cada canal de mídia. A distribuição padrão é LogNormal(0.2, 0.9). Quando kpi_type é 'non_revenue' e revenue_per_kpi não é fornecido, o ROI é interpretado como unidades incrementais de KPI por unidade monetária gasta. Nesse caso, o valor padrão de roi_m e roi_rf será ignorado, e uma distribuição a priori do ROI comum será atribuída a todos os canais para alcançar uma média e um desvio padrão desejados na contribuição total de mídia.
|
roi_rf
|
A distribuição a priori no ROI de cada canal de alcance e frequência.
Esse parâmetro é usado apenas quando paid_media_prior_type é 'roi'. Nesse caso, beta_rf é calculado como uma função determinista de roi_rf, alpha_rf, ec_rf, slope_rf e o gasto associado a cada canal de alcance e frequência. A distribuição padrão é LogNormal(0.2, 0.9). Quando kpi_type é 'non_revenue' e revenue_per_kpi não é fornecido, o ROI é interpretado como unidades incrementais de KPI por unidade monetária gasta. Nesse caso, o valor padrão de roi_m e roi_rf será ignorado, e uma distribuição a priori do ROI comum será atribuída a todos os canais para alcançar uma média e um desvio padrão desejados na contribuição total de mídia.
|
mroi_m
|
Distribuição a priori no mROI de cada canal de mídia. Esse parâmetro só é usado quando paid_media_prior_type é 'mroi'. Nesse caso, beta_m é calculado como uma função determinista de mroi_m, alpha_m, ec_m, slope_m e o gasto associado a cada canal de mídia.
A distribuição padrão é LogNormal(0.0, 0.5). Quando kpi_type é 'non_revenue' e revenue_per_kpi não é fornecido, o mROI é interpretado como as unidades incrementais de KPI marginal por unidade monetária gasta. Nesse caso, uma distribuição padrão não é fornecida, então o usuário precisa especificar uma.
|
mroi_rf
|
A distribuição a priori no mROI de cada canal de alcance e frequência.
Esse parâmetro só é usado quando paid_media_prior_type é 'mroi'. Nesse caso, beta_rf é calculado como uma função determinista de mroi_rf, alpha_rf, ec_rf, slope_rf e o gasto associado a cada canal de mídia. A distribuição padrão é LogNormal(0.0, 0.5). Quando kpi_type é 'non_revenue' e revenue_per_kpi não é fornecido, o mROI é interpretado como as unidades incrementais de KPI marginal por unidade monetária gasta. Nesse caso, uma distribuição padrão não é fornecida, então o usuário precisa especificar uma.
|
Métodos
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
Retorna um novo PriorDistribution com atributos de distribuição de transmissão.
| Args | |
|---|---|
n_geos
|
Número de regiões geográficas. |
n_media_channels
|
Número de canais de mídia usados. |
n_rf_channels
|
Número de canais de alcance e frequência usados. |
n_organic_media_channels
|
Número de canais de mídia orgânica usados. |
n_organic_rf_channels
|
Número de canais de alcance e frequência orgânicos usados. |
n_controls
|
Número de controles usados. |
n_non_media_channels
|
Número de canais que não são de mídia usados. |
sigma_shape
|
Um número que descreve a forma do parâmetro sigma. Será 1 (se for sigma_for_each_geo=False) ou n_geos (se for sigma_for_each_geo=True). Para mais informações, consulte ModelSpec.
|
n_knots
|
Número de nós usados. |
is_national
|
Um indicador booleano que especifica se a distribuição a priori será adaptada para um modelo nacional. |
set_total_media_contribution_prior
|
Um indicador booleano que especifica se as distribuições a priori do ROI precisam ser definidas para alcançar uma distribuição a priori de contribuição total de mídia com a média e a variância desejadas. |
kpi
|
A soma do KPI de todas as regiões geográficas e períodos. Obrigatório se set_total_media_contribution_prior=True.
|
total_spend
|
Gastos por canal de mídia somados em todas as regiões geográficas e períodos. Obrigatório se set_total_media_contribution_prior=True.
|
| Retorna | |
|---|---|
Uma nova PriorDistribution transmitida de acordo com essa distribuição a priori e a dimensionalidade dos dados.
|
| Gera | |
|---|---|
ValueError
|
Se as distribuições a priori personalizadas não estiverem definidas para todos os canais. |
has_deterministic_param
has_deterministic_param(
param: tfp.distributions.Distribution
) -> bool
__eq__
__eq__(
other
)
Retorna self==value.
Ver código-fonte no GitHub