Ver el código fuente en GitHub
|
Contiene distribuciones a priori para cada parámetro del 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 es una clase de utilidad de Meridian. Las formas requeridas de los argumentos de PriorDistribution dependen de las opciones de modelado y las formas de datos que se pasan a Meridian. Por ejemplo, ec_m es un parámetro que representa la mitad de la saturación para cada canal de medios. El argumento ec_m debe tener una forma batch_shape=[] o batch_shape igual a la cantidad de canales de medios. En el primer caso, cada canal de medios obtiene la misma distribución a priori.
Se producirá un error durante el proceso de construcción de Meridian si alguna distribución a priori tiene una forma que no se puede adaptar a la forma designada en la especificación del modelo.
Estas son las opciones para el parámetro de formas de lotes:
| Parámetro | Forma del 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 si se usa unique_sigma_for_each_geo. De lo contrario, es 1.
Atributos | |
|---|---|
knot_values
|
Es la distribución a priori sobre los nudos en relación con los efectos del tiempo. La distribución predeterminada es Normal(0.0, 5.0).
|
tau_g_excl_baseline
|
Es la distribución a priori sobre los efectos geográficos, la cual representa el KPI promedio de cada ubicación geográfica en relación con la ubicación geográfica de referencia. Este parámetro se adapta a un vector de longitud n_geos - 1, en el que se conserva el orden geográfico y se excluye baseline_geo. Tras el muestreo, Meridian.inference_data incluye una versión modificada de este parámetro llamada tau_g, que tiene la longitud n_geos y contiene un cero en la posición correspondiente a baseline_geo. Meridian ignora esta distribución si se usa n_geos = 1.
La distribución predeterminada es Normal(0.0, 5.0).
|
beta_m
|
Es la distribución a priori sobre un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios con datos de impresiones (beta_gm). Cuando media_effects_dist se establece en 'normal', es la media jerárquica.
Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la media de la distribución Normal subyacente transformada logarítmicamente. Meridian ignora esta distribución si paid_media_prior_type es 'roi' o 'mroi' y, en su lugar, usa la distribución a priori de roi_m o mroi_m. La distribución predeterminada es HalfNormal(5.0).
|
beta_rf
|
Es la distribución a priori sobre un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios con datos de alcance y frecuencia (beta_grf). Cuando media_effects_dist se establece en 'normal', es la media jerárquica. Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la media de la distribución Normal subyacente transformada logarítmicamente. Meridian ignora esta distribución si paid_media_prior_type es 'roi' o 'mroi' y, en su lugar, usa la distribución a priori de roi_m o mroi_rf. La distribución predeterminada es HalfNormal(5.0).
|
beta_om
|
Es la distribución a priori de un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios orgánicos (beta_gom). Cuando media_effects_dist se establece en 'normal', es la media jerárquica.
Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la media de la distribución Normal subyacente transformada logarítmicamente. La distribución predeterminada es HalfNormal(5.0).
|
beta_orf
|
Es la distribución a priori sobre un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios con datos de alcance orgánico y frecuencia (beta_gorf). Cuando media_effects_dist se establece en 'normal', es la media jerárquica. Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la media de la distribución subyacente Normal transformada en logaritmos. La distribución predeterminada es HalfNormal(5.0).
|
eta_m
|
Es la distribución a priori sobre un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios con datos de impresiones (beta_gm). Cuando media_effects_dist se establece en 'normal', es la desviación estándar jerárquica. Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la desviación estándar de la distribución subyacente Normal transformada en logaritmos. La distribución predeterminada es HalfNormal(1.0).
|
eta_rf
|
Es la distribución a priori sobre un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios con datos de alcance y frecuencia (beta_grf). Cuando media_effects_dist se establece en 'normal', es la desviación estándar jerárquica. Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la desviación estándar de la distribución subyacente Normal transformada en logaritmos. La distribución predeterminada es HalfNormal(1.0).
|
eta_om
|
Es la distribución a priori sobre un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios orgánicos (beta_gom). Cuando media_effects_dist se establece en 'normal', es la desviación estándar jerárquica. Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la desviación estándar de la distribución subyacente Normal transformada en logaritmos. La distribución predeterminada es HalfNormal(1.0).
|
eta_orf
|
Es la distribución a priori de un parámetro relacionado con la distribución jerárquica de los efectos de los medios a nivel geográfico para los canales de medios de RF orgánica (beta_gorf). Cuando media_effects_dist se establece en 'normal', es la desviación estándar jerárquica. Cuando media_effects_dist se establece en 'log_normal', es el parámetro jerárquico para la desviación estándar de la distribución subyacente Normal transformada en logaritmos. La distribución predeterminada es HalfNormal(1.0).
|
gamma_c
|
Es la distribución a priori sobre la media jerárquica de gamma_gc, que es el coeficiente de la variable de control c para la ubicación geográfica g. La jerarquía se define en función de las ubicaciones geográficas. La distribución predeterminada es Normal(0.0, 5.0).
|
gamma_n
|
Es la distribución a priori de la media jerárquica de gamma_gn, que es el coeficiente del canal que no es de medios n para la ubicación geográfica g. La jerarquía se define en función de las ubicaciones geográficas. La distribución predeterminada es Normal(0.0, 5.0).
|
xi_c
|
Es la distribución a priori sobre la desviación estándar jerárquica de gamma_gc, que es el coeficiente de la variable de control c para la ubicación geográfica g. La jerarquía se define en función de las ubicaciones geográficas. La distribución predeterminada es HalfNormal(5.0).
|
xi_n
|
Es la distribución a priori de la desviación estándar jerárquica de gamma_gn, que es el coeficiente del canal que no es de medios n para la ubicación geográfica g.
La jerarquía se define en función de las ubicaciones geográficas. La distribución predeterminada es HalfNormal(5.0).
|
alpha_m
|
Es la distribución a priori sobre el parámetro de Adstock geometric decay para los datos de entrada de medios. La distribución predeterminada es Uniform(0.0, 1.0).
|
alpha_rf
|
Es la distribución a priori sobre el parámetro de Adstock geometric decay para los datos de entrada de frecuencia y alcance. La distribución predeterminada es Uniform(0.0, 1.0).
|
alpha_om
|
Es la distribución a priori del parámetro de Adstock geometric decay para los datos de entrada de medios orgánicos. La distribución predeterminada es Uniform(0.0, 1.0).
|
alpha_orf
|
Es la distribución a priori del parámetro de Adstock geometric decay para los datos de entrada de RF orgánica. La distribución predeterminada es Uniform(0.0, 1.0).
|
ec_m
|
Es la distribución a priori sobre el parámetro de Hill half-saturation para los datos de entrada de medios. La distribución predeterminada es TruncatedNormal(0.8, 0.8, 0.1, 10).
|
ec_rf
|
Es la distribución a priori sobre el parámetro de Hill half-saturation para los datos de entrada de alcance y frecuencia. La distribución predeterminada es TransformedDistribution(LogNormal(0.7,
0.4), Shift(0.1)).
|
ec_om
|
Es la distribución a priori del parámetro de Hill half-saturation para los datos de entrada de medios orgánicos. La distribución predeterminada es TruncatedNormal(0.8, 0.8,
0.1, 10).
|
ec_orf
|
Es la distribución a priori del parámetro de Hill half-saturation para los datos de entrada de RF orgánica. La distribución predeterminada es TransformedDistribution(
LogNormal(0.7, 0.4), Shift(0.1)).
|
slope_m
|
Es la distribución a priori sobre el parámetro de Hill slope para los datos de entrada de medios.
La distribución predeterminada es Deterministic(1.0).
|
slope_rf
|
Es la distribución a priori sobre el parámetro de Hill slope para los datos de entrada de alcance y frecuencia.
La distribución predeterminada es LogNormal(0.7, 0.4).
|
slope_om
|
Es la distribución a priori del parámetro de Hill slope para los datos de entrada de medios orgánicos. La distribución predeterminada es Deterministic(1.0).
|
slope_orf
|
Es la distribución a priori del parámetro de Hill slope para los datos de entrada de RF orgánica. La distribución predeterminada es LogNormal(0.7, 0.4).
|
sigma
|
Es la distribución a priori sobre la desviación estándar del ruido. La distribución predeterminada es HalfNormal(5.0).
|
roi_m
|
Es la distribución a priori del ROI de cada canal de medios. Este parámetro solo se usa cuando paid_media_prior_type es 'roi'. En tal caso, beta_m se calcula como una función determinística de roi_rf, alpha_rf, ec_rf, slope_rf y la inversión asociada con cada canal de medios. La distribución predeterminada es LogNormal(0.2, 0.9). Cuando kpi_type es 'non_revenue' y no se proporciona revenue_per_kpi, el ROI se interpreta como unidades de KPI incrementales por cada unidad monetaria invertida. En este caso, se ignorará el valor predeterminado de roi_m y roi_rf, y se asignará una distribución a priori del ROI común a todos los canales para lograr una desviación estándar y una media objetivo en la contribución total de los medios.
|
roi_rf
|
Es la distribución a priori del ROI de cada canal de alcance y frecuencia.
Este parámetro solo se usa cuando paid_media_prior_type es 'roi'. En tal caso, beta_rf se calcula como una función determinística de roi_rf, alpha_rf, ec_rf, slope_rf y la inversión asociada con cada canal de alcance y frecuencia. La distribución predeterminada es LogNormal(0.2, 0.9). Cuando kpi_type es 'non_revenue' y no se proporciona revenue_per_kpi, el ROI se interpreta como unidades de KPI incrementales por cada unidad monetaria invertida. En este caso, se ignorará el valor predeterminado de roi_m y roi_rf, y se asignará una distribución a priori del ROI común a todos los canales para lograr una desviación estándar y una media objetivo en la contribución total de los medios.
|
mroi_m
|
Es la distribución a priori del mROI de cada canal de medios. Este parámetro solo se usa cuando paid_media_prior_type es 'mroi'. En tal caso, beta_m se calcula como una función determinística de mroi_m, alpha_m, ec_m, slope_m y la inversión asociada con cada canal de medios.
La distribución predeterminada es LogNormal(0.0, 0.5). Cuando kpi_type es 'non_revenue' y no se proporciona revenue_per_kpi, el mROI se interpreta como las unidades de KPI incrementales marginales por cada unidad monetaria invertida. En este caso, no se proporciona una distribución predeterminada, por lo que el usuario debe especificarla.
|
mroi_rf
|
Es la distribución a priori del mROI de cada canal de alcance y frecuencia.
Este parámetro solo se usa cuando paid_media_prior_type es 'mroi'. En tal caso, beta_rf se calcula como una función determinística de mroi_rf, alpha_rf, ec_rf, slope_rf y la inversión asociada con cada canal de medios. La distribución predeterminada es LogNormal(0.0, 0.5). Cuando kpi_type es 'non_revenue' y no se proporciona revenue_per_kpi, el mROI se interpreta como las unidades de KPI incrementales marginales por cada unidad monetaria invertida. En este caso, no se proporciona una distribución predeterminada, por lo que el usuario debe especificarla.
|
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
Devuelve una nueva clase PriorDistribution con atributos de distribución adaptados.
| Args | |
|---|---|
n_geos
|
Es la cantidad de ubicaciones geográficas. |
n_media_channels
|
Es la cantidad de canales de medios utilizados. |
n_rf_channels
|
Es la cantidad de canales con datos de alcance y frecuencia utilizados. |
n_organic_media_channels
|
Es la cantidad de canales de medios orgánicos utilizados. |
n_organic_rf_channels
|
Es la cantidad de canales con datos de alcance y frecuencia orgánicos utilizados. |
n_controls
|
Es la cantidad de variables de control utilizadas. |
n_non_media_channels
|
Es la cantidad de canales que no son de medios utilizados. |
sigma_shape
|
Es un número que describe la forma del parámetro sigma. Puede ser 1 (si sigma_for_each_geo=False) o n_geos (si sigma_for_each_geo=True). Para obtener más información, consulta ModelSpec.
|
n_knots
|
Es la cantidad de nudos utilizados. |
is_national
|
Es un indicador booleano que determina si la distribución a priori se adaptará para un modelo nacional. |
set_total_media_contribution_prior
|
Es un indicador booleano que determina si se deben establecer las distribuciones a priori del ROI para obtener una distribución a priori de la contribución total de los medios con la media y la varianza objetivo. |
kpi
|
Es la suma de todo el KPI para todas las ubicaciones geográficas y todos los períodos. Obligatorio si set_total_media_contribution_prior=True.
|
total_spend
|
Inversión por canal de medios sumada en todas las ubicaciones geográficas y todos los períodos. Obligatorio si set_total_media_contribution_prior=True.
|
| Devuelve | |
|---|---|
Una nueva PriorDistribution adaptada a partir de esta distribución a priori, según la dimensionalidad de los datos en cuestión.
|
| Genera | |
|---|---|
ValueError
|
Se muestra si no se establecen distribuciones a priori personalizadas para todos los canales. |
has_deterministic_param
has_deterministic_param(
param: tfp.distributions.Distribution
) -> bool
__eq__
__eq__(
other
)
Devuelve self==value.
Ver el código fuente en GitHub