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.
El modelo para la diferencia 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 los resultados de la prueba de elevación con al menos las siguientes columnas:
DIM_NAME: nombre de la dimensión. Una columna por dimensión enmmm.dims.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
pymc.dims.DimDistribution, optional The distribution to use for the likelihood, by default pymc.dims.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” o cualquiera de las dimensiones del modelo no está presente en df_lift_test.
Ejemplos
Primero construya el modelo y luego agregue las mediciones de la prueba de elevación.
import pandas as pd import numpy as np from pymc_marketing.mmm import GeometricAdstock, LogisticSaturation from pymc_marketing.mmm.multidimensional import MMM model = MMM( date_column="date", channel_columns=["x1", "x2"], target_column="target", adstock=GeometricAdstock(l_max=8), saturation=LogisticSaturation(), yearly_seasonality=2, dims=("geo",), ) X = pd.DataFrame( { "date": np.tile( pd.date_range(start="2025-01-01", end="2025-05-01", freq="W"), 2 ), "x1": np.random.rand(34), "x2": np.random.rand(34), "target": np.random.rand(34), "geo": 17 * ["FIN"] + 17 * ["SWE"], } ) y = X["target"] model.build_model(X.drop(columns=["target"]), y) df_lift_test = pd.DataFrame( { "channel": ["x1", "x1"], "geo": ["FIN", "SWE"], "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)