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
xyx + delta_xpara cada canal. Esta variable aleatoria se condiciona luego utilizando el aumento empírico,delta_y, ysigmade la prueba de aumento con la distribución especificadadist.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_test
pd.DataFrame - DataFrame con resultados de la prueba de elevación con al menos las siguientes columnas:
channel: nombre del canal. Debe estar presente enchannel_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.
- df_lift_test
- Aumentos:
RuntimeErrorSi el modelo aún no ha sido construido.
KeyErrorSi 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)