Cómo configurar distribuciones a priori personalizadas cuando el resultado no corresponda a los ingresos

Meridian define el ROI como el resultado incremental dividido por la inversión. Cuando el KPI no corresponde a los ingresos y no se pasa revenue_per_kpi a InputData, el resultado no se expresa en términos de ingresos. Esto puede dificultar la tarea de determinar una distribución a priori personalizada del ROI.

Considera las siguientes opciones al configurar una distribución a priori personalizada cuando el resultado no corresponda a los ingresos:

Distribución a priori personalizada de la contribución total de los medios pagados

Si intuyes cuál podría ser la proporción incremental total del KPI generada por los medios pagados, puedes establecer una distribución a priori del ROI común en todos los canales, de modo que la contribución total de los medios tenga una distribución a priori media y una desviación estándar específicas. Para ello, sigue estos pasos:

p_mean = 0.5  # prior mean proportion of KPI incremental due to all media
p_sd = 0.15  # prior std dev proportion of KPI incremental to all media
roi_mean = p_mean * kpi / np.sum(cost)
roi_sd = p_sd * kpi / np.sqrt(np.sum(np.power(cost, 2)))
lognormal_sigma = np.sqrt(np.log(roi_sd**2 / roi_mean**2 + 1))
lognormal_mu = np.log(roi_mean * np.exp(-lognormal_sigma**2 / 2))
roi_prior = tfp.distributions.LogNormal(
    lognormal_mu.astype(np.float32),
    lognormal_sigma.astype(np.float32),
)

Donde:

  • kpi es la suma de todo el KPI en todas las ubicaciones geográficas y períodos.
  • cost es un array del costo total por canal en todas las ubicaciones geográficas y los períodos.

En este ejemplo, la contribución del KPI de todos los medios se centra en el 50% con una desviación estándar del 15%. Luego, obtienes una distribución a priori del ROI que es coherente para todos los canales, de tal modo que la distribución a priori implícita de la contribución total de los medios pagados tenga una media del 50% y una desviación estándar del 15%. Luego, se puede usar la distribución a priori derivada, roi_prior, que, para tal fin, se debe configurar en el contenedor PriorDistribution de roi_m o roi_rf.

La distribución a priori de la contribución total de los medios pagados puede ser beneficiosa, ya que no requiere una intuición sobre cada canal individual. Sin embargo, si tienes conocimientos o una intuición adicional sobre cada canal, considera establecer una distribución a priori del IKPC o una distribución a priori de la contribución a nivel del canal.

Distribución a priori del KPI incremental personalizado por costo (IKPC)

Si tienes una intuición del KPI incremental por costo (IKPC) de un canal, puedes establecer una distribución a priori del IKPC usando roi_m o roi_rf en el contenedor PriorDistribution. Cuando revenue_per_kpi no está configurado, el ROI equivale a IKPC en Meridian.

Ejemplo:

roi_prior = tfp.distributions.LogNormal([0.5, 0.6, 0.7], [0.5, 0.5, 0.5])

Sin embargo, solo te recomendamos que lo hagas si vas a establecer una distribución a priori del IKPC personalizada para cada canal de medios. Esto se debe a que, si configuras revenue_per_kpi=None, es probable que las distribuciones a priori predeterminadas del ROI no tengan sentido para tus datos, ya que están diseñadas para los KPIs de ingresos, en los que el ROI estaría en la escala sin unidades. Si solo tienes una intuición sobre el IKPC de algunos canales, debes establecer un IKPC predeterminado razonable para los demás. Meridian no tiene una distribución a priori del IKPC predeterminada recomendada porque depende en gran medida de la escala, por ejemplo, un automóvil nuevo o una barra de chocolate.

Distribución a priori de la contribución a nivel del canal

Si intuyes cuál podría ser la proporción incremental del KPI generada por un canal determinado, puedes establecer una distribución a priori de la contribución de un canal determinado. Para ello, establece media_prior_type='contribution' y rf_prior_type='contribution' en ModelSpec y personaliza las distribuciones a priori en contribution_m y contribution_rf en la PriorDistribution. A continuación, se muestra un ejemplo.

prior = prior_distribution.PriorDistribution(
    contribution_m=tfp.distributions.Beta([1, 5], [99, 95]),
    contribution_rf=tfp.distribution.Beta(2, 98),
)
model_spec = spec.ModelSpec(
    prior=prior,
    media_prior_type="contribution",
    rf_prior_type="contribution",
)

En este ejemplo, hay dos canales de medios. Al primero se le asigna una distribución a priori de contribución Beta(1, 99), que tiene una media del 1%. Al segundo se le asigna una distribución a priori de contribución Beta(5, 95), que tiene una media del 5%. A cada canal con datos de alcance y frecuencia se le asigna una distribución a priori de contribución Beta(2, 98), que tiene una media del 2%. (Ten en cuenta que tfp.distribution.Beta(2, 98) es una distribución escalar, por lo que se transmite a todos los canales con datos de alcance y frecuencia).