Modell ausführen

Wenn Sie das Modell ausführen, fügen Sie die Modellspezifikation hinzu und führen dann die Befehle aus, um Stichproben aus der Prior- und Posterior-Verteilung zu ziehen.

Markow-Chain-Monte-Carlo-Algorithmen (MCMC) werden verwendet, um Stichproben aus der Posterior-Verteilung zu ziehen. Meridian verwendet die No-U-Turn-Methode zur Stichprobenerhebung mit Schrittgröße und Kernel-Adaptation.

So führen Sie das Modell aus:

  1. Fügen Sie die Modellspezifikation hinzu.

    Beispiel:

     model_spec = spec.ModelSpec(
         prior=prior_distribution.PriorDistribution(),
         media_effects_dist='log_normal',
         hill_before_adstock=False,
         max_lag=8,
         unique_sigma_for_each_geo=False,
         media_prior_type='roi',
         roi_calibration_period=None,
         rf_prior_type='coefficient',
         rf_roi_calibration_period=None,
         organic_media_prior_type='contribution',
         organic_rf_prior_type='contribution',
         non_media_treatments_prior_type='contribution',
         knots=None,
         baseline_geo=None,
         holdout_id=None,
         control_population_scaling_id=None,
         adstock_decay_spec='geometric',
         enable_aks=False,
     )
     ```
    
  2. Führen Sie die folgenden Befehle aus, um Stichproben aus der Prior- und Posterior-Verteilung zu ziehen. Konfigurieren Sie die Parameter nach Bedarf:

    mmm = model.Meridian(input_data=data, model_spec=model_spec)
    mmm.sample_prior(500)
    mmm.sample_posterior(n_chains=7, n_adapt=1000, n_burnin=500, n_keep=1000)
    
    Parameter Beschreibung
    n_chains Die Anzahl der Ketten, die parallel gezogen werden sollen. Um die Arbeitsspeicherauslastung zu reduzieren, können Sie eine Liste von Ganzzahlen verwenden, um sequenzielle Aufrufe für die MCMC-Stichprobenerhebung zu ermöglichen. Bei einer Liste entspricht jedes Element in der Sequenz dem n_chains-Argument für einen Aufruf von windowed_adaptive_nuts.
    n_adapt Die Anzahl der MCMC-Ziehungen pro Kette, bei denen Schrittweite und Kernel angepasst werden. Diese Ziehungen sind immer ausgeschlossen.
    n_burnin Eine zusätzliche Anzahl von MCMC-Ziehungen pro Kette, die ausgeschlossen werden sollen, nachdem Schrittweite und Kernel festgelegt wurden. Diese zusätzlichen Ziehungen können erforderlich sein, um sicherzustellen, dass alle Ketten die stationäre Verteilung erreichen, nachdem die Adaption abgeschlossen ist. In der Praxis stellen wir jedoch oft fest, dass die Ketten die stationäre Verteilung bereits während der Adaption erreichen und dass n_burnin=0 ausreicht.
    n_keep Die Anzahl der MCMC-Ziehungen pro Kette, die für die Modellanalyse und die Ergebnisse beibehalten werden sollen.
  3. (Optional) Dünnen Sie die Posterior-Verteilung aus, um schnellere Iterationen zu ermöglichen.

    Wenn Sie nachgelagerte Aufgaben während iterativer Workflows beschleunigen möchten (z. B. das Erstellen vorläufiger Berichte zu Modellergebnissen oder das Bewerten mehrerer Szenarien zur Budgetoptimierung), können Sie die Posterior-Ziehungen mit posterior_thinning() herunterskalieren. Hierbei wird eine kettenübergreifende Teilmenge von Posterior-Ziehungen aus jeder MCMC-Kette so ausgewählt, dass die Kettenstruktur erhalten bleibt. Durch dieses systematische Sampling wird die Autokorrelation minimiert:

    # Recommended: 15% sampling rate balances fast iteration with
    # near-approximate inference
    mmm.posterior_thinning(sampling_rate=0.15, preserve_original=True)
    
    # Alternatively, specify the exact number of draws to keep per chain
    # mmm.posterior_thinning(n_draws=150, preserve_original=True)
    

    Wenn preserve_original=True festgelegt ist, können Sie die vollständige Posterior-Verteilung jederzeit vor der endgültigen Bereitstellung wiederherstellen:

    mmm.restore_full_posterior()
    
    Parameter Beschreibung
    sampling_rate Der Anteil der Ziehungen, die pro Kette in (0, 1] beibehalten werden sollen. Empfohlen: 0.15 (15 %) für explorative Workflows. Es muss genau eines von sampling_rate und n_draws angegeben werden.
    n_draws Die Anzahl der Ziehungen, die pro Kette in [1, original_n_draws] beibehalten werden sollen. Es muss genau eines von sampling_rate und n_draws angegeben werden.
    method Die Auswahlmethode für die Ziehung. Unterstützt ThinningMethod.SYSTEMATIC (Standard).
    seed Ein optionaler ganzzahliger Zufalls-Seed für eine reproduzierbare Ziehungsauswahl.
    preserve_original Ein boolesches Flag (Standard: True). Falls True, wird eine Kopie der vollständigen Posterior-Verteilung gespeichert, damit restore_full_posterior() sie wiederherstellen kann.

Führen Sie als Nächstes Diagnosen für die Modellierung aus, um die Konvergenz zu bewerten, die Verteilungen zu prüfen und die Modellanpassung zu beurteilen.