compute_summary_metrics#
- pymc_marketing.mmm.evaluation.compute_summary_metrics(y_true, y_pred, metrics_to_calculate=None, hdi_prob=0.94)[fuente]#
Evalúe el modelo calculando las distribuciones de métricas y resumiéndolas.
Este método combina la funcionalidad de
calculate_metric_distributionsysummarize_metric_distributions.- Parámetros:
- y_true
npt.NDArray|pd.Series Los verdaderos valores de la variable objetivo.
- y_pred
npt.NDArray|xr.DataArray Los valores predichos de la variable objetivo.
- métricas_a_calcular :
listdestroNone, opcionalpython:lista de python:str o python:None, opcional - Lista de métricas a calcular. Las opciones incluyen:
r_squared: R-cuadrado bayesiano.rmse: Error Cuadrático Medio.nrmse: Error Cuadrático Medio Normalizado.mae: Error Absoluto Medio.nmae: Error Absoluto Medio Normalizado.mape: Error Porcentual Absoluto Medio.
Por defecto, se aplican todas las métricas si no hay ninguna.
- hdi_prob :
float, opcionalpython:float, opcional La masa de probabilidad del intervalo de mayor densidad. Por defecto es 0.94.
- y_true
- Devoluciones:
dictdestradictUn diccionario que contiene estadísticas resumidas para cada métrica. Lista de estadísticas resumidas calculadas para cada métrica:
mean: Media de la distribución de la métrica.median: Mediana de la distribución de la métrica.std: Desviación estándar de la distribución de la métrica.min: Valor mínimo de la distribución métrica.max: Valor máximo de la distribución métrica.hdi_lower: Límite inferior del Intervalo de Mayor Densidad.hdi_upper: Límite superior del Intervalo de Mayor Densidad.
Ejemplos
Evaluación (métricas de error y modelo) para un MMM de PyMC-Marketing.
import pandas as pd from pymc_marketing.mmm import ( GeometricAdstock, LogisticSaturation, MMM, ) from pymc_marketing.paths import data_dir from pymc_marketing.mmm.evaluation import compute_summary_metrics # Usual PyMC-Marketing demo model code file_path = data_dir / "mmm_example.csv" data = pd.read_csv(file_path, parse_dates=["date_week"]) X = data.drop("y", axis=1) y = data["y"] mmm = MMM( adstock=GeometricAdstock(l_max=8), saturation=LogisticSaturation(), date_column="date_week", channel_columns=["x1", "x2"], control_columns=[ "event_1", "event_2", "t", ], yearly_seasonality=2, ) mmm.fit(X, y) # Generate posterior predictive samples posterior_preds = mmm.sample_posterior_predictive(X) # Evaluate the model results = compute_summary_metrics( y_true=mmm.y, y_pred=posterior_preds.y, metrics_to_calculate=["r_squared", "rmse", "mae"], hdi_prob=0.89, ) # Print the results neatly for metric, stats in results.items(): print(f"{metric}:") for stat, value in stats.items(): print(f" {stat}: {value:.4f}") print() # r_squared: # mean: 0.9055 # median: 0.9061 # std: 0.0098 # min: 0.8669 # max: 0.9371 # 89%_hdi_lower: 0.8891 # 89%_hdi_upper: 0.9198 # # rmse: # mean: 351.9120 # median: 351.0219 # std: 19.4732 # min: 290.6544 # max: 418.0821 # 89%_hdi_lower: 317.0673 # 89%_hdi_upper: 378.1048 # # mae: # mean: 281.6953 # median: 281.2757 # std: 16.3375 # min: 234.1462 # max: 337.9461 # 89%_hdi_lower: 255.7273 # 89%_hdi_upper: 307.2391