Module: schema.processors.model_fit_processor

Meridian module for analyzing model fit in a Meridian model.

This module provides a ModelFitProcessor, which assesses the goodness of fit of a trained Meridian model. It compares the model's predictions against the actual observed data, generating key performance metrics.

Key metrics generated include R-squared, MAPE, and Weighted MAPE. The output also includes timeseries data of actual values versus predicted values (with confidence intervals) and the predicted baseline.

The results are structured into a ModelFit protobuf message.

Key Classes:

  • ModelFitSpec: Dataclass to specify parameters for the model fit analysis, such as whether to split by train/test sets and the confidence level for intervals.
  • ModelFitProcessor: The processor class that performs the fit analysis.

Example Usage:

from schema.processors import model_fit_processor
from schema.processors import model_processor

# Assuming 'mmm' is a trained Meridian model object
trained_model = model_processor.TrainedModel(mmm)

# Default spec: split results by train/test if holdout ID exists
spec = model_fit_processor.ModelFitSpec()

processor = model_fit_processor.ModelFitProcessor(trained_model)
# result is a model_fit_pb2.ModelFit proto
result = processor.execute([spec])

print("Model Fit Analysis Results:")
for res in result.results:
    print(f"  Dataset: {res.name}")
    print(f"    R-squared: {res.performance.r_squared:.3f}")
    print(f"    MAPE: {res.performance.mape:.3f}")
    print(f"    Weighted MAPE: {res.performance.weighted_mape:.3f}")
    # Prediction data is available in res.predictions
    # Each element in res.predictions corresponds to a time point.
    # e.g., res.predictions[0].actual_value
    # e.g., res.predictions[0].predicted_outcome.value

Classes

class ModelFitProcessor: Generates a ModelFit proto for a given trained Meridian model.

class ModelFitSpec: Stores parameters needed for generating ModelFit protos.