agregar_costo_por_potenciales_objetivos#

pymc_marketing.mmm.lift_test.add_cost_per_target_potentials(calibration_df, *, model=None, cpt_value, target_column='cost_per_target', name_prefix='cpt_calibration', get_indices=<function exact_row_indices>)[fuente]#

Agregue las penalizaciones pm.Potential para calibrar el costo por objetivo.

Para cada fila, calculamos la media de cpt_variable_name a lo largo de la dimensión de fecha para el segmento especificado (dims, channel) y añadimos una penalización cuadrática suave:

penalty = - |cpt_mean - target|^2 / (2 * sigma^2)

Parámetros:
calibration_dfpd.DataFrame

Debe incluir las columnas channel, sigma y una columna objetivo. Por defecto, se asume que la columna objetivo es cost_per_target. El DataFrame también debe incluir una columna por cada dimensión del modelo encontrada en la variable CPT (excluyendo date).

modelo : pm.Model, opcionalpm.Model, opcional

Modelo que contiene el tensor de costo por objetivo. Si es None, utiliza el contexto del modelo actual.

cpt_valueTensorVariable

Tensor que representa los valores de costo por objetivo sobre las coordenadas del modelo.

target_columnstr

Columna en calibration_df que contiene los objetivos de calibración.

name_prefixstr

Prefijo para los nombres potenciales creados.

get_indicesCallable[[pd.DataFrame, pm.Model], Indices]

Función de alineación que mapea filas a índices de coordenadas del modelo.

Ejemplos

cpt_tensor = pt.as_tensor_variable(
    np.full((len(dates), len(geo), len(channels)), 30.0, dtype=float)
)

calibration_df = pd.DataFrame(
    {
        "channel": ["C1", "C2"],
        "geo": ["US", "US"],  # add dims as needed
        "cost_per_target": [30.0, 45.0],
        "sigma": [2.0, 3.0],
    }
)

add_cost_per_target_potentials(
    calibration_df=calibration_df,
    model=mmm.model,
    cpt_value=cpt_tensor,
    name_prefix="cpt_calibration",
)