MMM.agregar_mediciones_de_prueba_de_elevación#

MMM.add_lift_test_measurements(df_lift_test, dist=<class 'pymc.dims.distributions.scalar.Gamma'>, name='lift_measurements')[fuente]#

Añadir pruebas de elevación al modelo.

La diferencia del modelo de la curva de saturación de un canal se crea a partir de x y x + delta_x para cada canal. Esta variable aleatoria se condiciona luego utilizando el aumento empírico, delta_y, y sigma de la prueba de aumento con la distribución especificada dist.

El pseudo-código para la prueba del ascensor es el siguiente:

model_estimated_lift = saturation_curve(x + delta_x) - saturation_curve(x)
empirical_lift = delta_y
dist(abs(model_estimated_lift), sigma=sigma, observed=abs(empirical_lift))

El modelo debe ser construido antes de agregar las pruebas de elevación.

Parámetros:
df_lift_testpd.DataFrame
DataFrame con resultados de la prueba de elevación con al menos las siguientes columnas:
  • channel: nombre del canal. Debe estar presente en channel_columns.

  • x: valor del eje x de la prueba de elevación.

  • delta_x: cambio en el valor del eje x de la prueba de elevación.

  • delta_y: cambio en el valor del eje y de la prueba de elevación.

  • sigma: desviación estándar de la prueba de elevación.

dist : pm.Distribution, opcionalpm.Distribution, opcional

La distribución a utilizar para la verosimilitud, por defecto pm.Gamma

nombre : str, opcionalpython:str, opcional

El nombre de la probabilidad de la(s) contribución(es) de la prueba de elevación, por defecto «lift_measurements». Se requiere un cambio de nombre si se llama a este método múltiples veces.

Aumentos:
RuntimeError

Si el modelo aún no ha sido construido.

KeyError

Si la columna “channel” no está presente en df_lift_test.

Ejemplos

Primero construya el modelo y luego añada las mediciones de la prueba de elevación.

import pandas as pd
import numpy as np

from pymc_marketing.mmm import (
    GeometricAdstock,
    LogisticSaturation,
    MMM,
)

model = MMM(
    date_column="date_week",
    channel_columns=["x1", "x2"],
    adstock=GeometricAdstock(l_max=8),
    saturation=LogisticSaturation(),
    control_columns=[
        "event_1",
        "event_2",
    ],
    yearly_seasonality=2,
)

X: pd.DataFrame = ...
y: np.ndarray = ...

model.build_model(X, y)

df_lift_test = pd.DataFrame(
    {
        "channel": ["x1", "x1"],
        "x": [1, 1],
        "delta_x": [0.1, 0.2],
        "delta_y": [0.1, 0.1],
        "sigma": [0.1, 0.1],
    }
)

model.add_lift_test_measurements(df_lift_test)