Prior-Typ für Testvariablen auswählen und konfigurieren

In Meridian gibt es mehrere Typen von Testvariablen: bezahlte Media, organische Media und nicht mediabezogene Testvariablen. Für jeden können Sie einen Prior-Typ angeben. Ein Prior-Typ ist der spezifische Messwert, für den Sie Ihre vorherige Annahme (Prior) definieren, z. B. ROI (Return on Investment), Grenz-ROI, Beitrag oder Koeffizient. Sie können den Messwert auswählen, für den Sie das meiste fachliche Wissen haben (z. B. aus Tests), oder den Messwert, der Ihnen bei der Interpretation der Modellergebnisse am wichtigsten ist.

Für jeden Prior-Typ wird in Meridian eine Standard-Prior-Verteilung auf Grundlage einiger allgemeiner geschäftlicher Überlegungen festgelegt. Die Standardverteilung kann anhand Ihres spezifischen Fachwissens überschrieben werden, um den Prior besser an Ihre geschäftliche Intuition anzupassen. Es ist wichtig, diese Optionen und die jeweiligen Gründe zu verstehen, um Fachwissen in Meridian einfließen zu lassen.

Prior-Typen – Definitionen

Hier finden Sie Definitionen der in Meridian verfügbaren Prior-Typen:

  • ROI (Return on Investment): Das Verhältnis des inkrementellen Ergebnisses, das durch einen Channel erzielt wird, zu den Kosten der Media-Ausgaben dieses Channels (Incremental Outcome / Spend). Dies ist häufig der intuitivste Messwert für bezahlte Media, insbesondere beim Abgleich mit Testergebnissen.
  • Grenz-ROI: Der ROI für eine zusätzliche Währungseinheit (z. B. einen Euro), die in einen bestimmten Channel investiert wird. Dieser Wert ist nützlich, wenn Sie über eine Budgetoptimierung nachdenken, weil Channels mit einem höheren Grenz-ROI gute Kandidaten für ein höheres Budget sind.
  • Beitrag: Der Anteil des Gesamtergebnisses, der einem Channel (Incremental Outcome / Total Outcome) zugeordnet wird. Während ROI- und Grenz-ROI-Priors nur für bezahlte Media verwendet werden können, können Priors für den Beitrag für Channels ohne zugehörige Ausgaben verwendet werden, z. B. organische Channels oder nicht mediabezogene Testvariablen.
  • Koeffizient: Der zugrunde liegende statistische Koeffizient für eine bestimmte Testvariable im Regressionsmodell von Meridian. Im Gegensatz zu ROI, Grenz-ROI und Beitrag, die geschäftliche Messwerte sind, ist der Koeffizient ein abstrakter statistischer Parameter, der sich ohne den Kontext anderer Modellparameter und Daten nur schwer betriebswirtschaftlich interpretieren lässt.

In der folgenden Tabelle wird zusammengefasst, welche Prior-Typen mit den einzelnen Testvariablen verwendet werden können.

Prior-Typ Bezahlte Media Organische Media Nicht mediabezogene Testvariablen
ROI Ja* Nein Nein
Grenz-ROI Ja* Nein Nein
Beitrag Ja Ja Ja
Koeffizient Ja Ja Ja

Beispiele für Geschäftssprache

Zur Verdeutlichung dieser Konzepte finden Sie hier Beispiele für die Formulierung eines Priors für jeden Typ in einfacher Geschäftssprache:

  • ROI-Prior festlegen:

    „Unsere aktuelle Lift-Studie hat ergeben, dass wir mit unseren Suchanzeigen etwa 1,50 € Umsatz für jeden ausgegebenen Euro erzielen. Der ROI-Prior sollte deshalb um diesen Wert herum zentriert sein.“

  • Grenz-ROI-Prior festlegen:

    „Wenn wir einen Euro mehr für Social-Media-Anzeigen ausgeben würden, sollten wir bei unserem aktuellen Ausgabenniveau etwa 1,10 € zurückerhalten. Der Grenz-ROI-Prior soll um diesen Wert zentriert sein und nur eine geringe Streuung aufweisen.“

  • Prior für den Beitrag festlegen:

    „Wir gehen davon aus, dass unsere digitalen Videoanzeigen rund 5 % zu unserem Gesamtumsatz beitragen. Der Prior für den Beitrag soll ungefähr diesen Wert haben.“

  • Koeffizienten-Prior festlegen:

    Dieser Prior kommt im geschäftlichen Kontext eher selten zum Einsatz. Die Aussage wäre in etwa: „Ich glaube, der zugrunde liegende Regressions-Beta-Wert für diese Variable sollte 0,02 sein.“ Dies wird in der Regel nur von Data Scientists genutzt, die ein bestimmtes statistisches Ziel verfolgen, da die Interpretation stark von der Skalierung der Eingabedaten und des Ausgabemesswerts abhängt.

Hinweise zur Auswahl des Prior-Typs für Testvariablen

In diesem Abschnitt werden die geschäftlichen und modellbezogenen Gründe für die Auswahl verschiedener Prior-Typen für bezahlte Media, organische Media und nicht mediabezogene Testvariablen erläutert.

ROI-Priors sind die Standardoption, da sie in der Regel am besten mit vorhandenen Informationen wie Testergebnissen übereinstimmen. Dies ist in der Regel die intuitivste Option, um hinreichend fundierte Priors festzulegen.

Grenz-ROI-Priors sind oft eine gute Option, wenn viel Vorwissen in die Festlegung der bisherigen Budgets eingeflossen ist oder wenn Werbetreibende konservativere Budgetempfehlungen bevorzugen. Sie funktionieren, indem ein Prior festgelegt wird, der die optimale Budgetzuweisung in Richtung der bisherigen Budgetzuweisung zieht und so die empfohlenen Budgetverschiebungen regularisiert. Um das zu erreichen, können Sie für alle Channels einen gemeinsamen Mittelwert für den Grenz-ROI-Prior festlegen und die Standardabweichung anpassen. Je stärker der Prior (also je kleiner die Standardabweichung), desto mehr nähert sich die optimale Zuweisung an die bisherige Zuweisung an und desto geringer fallen die empfohlenen Budgetverschiebungen aus. Ausgabenbeschränkungen bei der Optimierung bieten eine weitere Möglichkeit, empfohlene Budgetverschiebungen zu begrenzen. Hier sind unter Umständen keine Grenz-ROI-Priors erforderlich. Weitere Informationen finden Sie im Abschnitt Grenz-ROI-Priors für die Budgetregularisierung verwenden.

Priors für den Beitrag funktionieren sehr ähnlich wie ROI-Priors für bezahlte Media. Der einzige Unterschied besteht darin, dass bei ROI-Priors die Channelausgaben der Nenner sind, während bei Priors für Beiträge das gesamte beobachtete Ergebnis als Nenner verwendet wird. Das bedeutet, dass jeder Prior für den Beitrag in einen ROI-Prior übersetzt werden kann – und umgekehrt jeder ROI-Prior für bezahlte Media in einen Prior für den Beitrag.

Koeffizienten-Priors sind die traditionellere Art der Parameterisierung für ein lineares Regressionsmodell. Im Kontext des MMM ist die Interpretation eines Koeffizienten etwas abstrakt, was es schwierig macht, einen Prior auf Grundlage von zuverlässigen Informationen festzulegen. Ein bestimmter Koeffizientenwert kann für verschiedene bezahlte Media-Channels sehr unterschiedliche ROI-Werte bedeuten, da der ROI von zahlreichen Faktoren abhängt: der Verteilung der Ausführung über geografische Einheiten und Zeiträume, den geschätzten Parametern für Adstock und abnehmende Renditen sowie den Kosten pro Media-Einheit des Channels.

Zusätzliche Hinweise für nicht umsatzbezogene Ergebnisse

Wenn das Ergebnis nicht umsatzbezogen ist (also der KPI nicht in Währungseinheiten angegeben und revenue_per_kpi nicht vorhanden ist), ändert sich die Verfügbarkeit und Interpretation von Priors für bezahlte Media. Jeder Parameter von PriorDistribution hat eine Standardverteilung. Es gibt zwei Ausnahmen, bei denen der Standardwert nicht verwendet wird. Beide treten auf, wenn das Ergebnis nicht umsatzbezogen ist.

ROI-Priors funktionieren anders, da kein monetäres Verhältnis berechnet werden kann. Wenn Sie media_prior_type = 'roi' verwenden, wird der Standard-Prior stattdessen auf den Gesamtbeitrag aller bezahlten Media-Channels angewendet. So können Sie einen Prior für den Gesamtanteil des nicht monetären KPI festlegen, der auf bezahlte Media zurückzuführen ist. Wenn ROI-Priors verwendet werden, wird der Standardwert gemäß einer speziellen Methodik für den Gesamtbeitrag bezahlter Media zugewiesen.

Grenz-ROI-Priors stellen die Grenzrendite in Bezug auf Ergebniseinheiten pro Dollar dar (z. B. zusätzliche Registrierungen pro Euro). Da dieser Wert stark vom jeweiligen KPI abhängt, ist ein universeller Standardwert nicht praktikabel. Daher stellt Meridian in nicht umsatzbezogenen Fällen keinen Standard-Prior für den Grenz-ROI zur Verfügung. Sie müssen dann einen benutzerdefinierten Prior auf Grundlage Ihres Fachwissens festlegen. Außerdem muss eine benutzerdefinierte Verteilung angegeben werden. Es gibt keinen Standardwert, da der angemessene Wertebereich für jedes Unternehmen stark variiert.

Priors für den Beitrag sind häufig eine gute Wahl für nicht umsatzbezogene Ergebnisse, weil sie den Anteil des Gesamtergebnisses darstellen, der auf einen Channel zurückzuführen ist. Diese Definition bleibt gleich, unabhängig davon, ob das Ergebnis umsatzbezogen ist oder nicht.

Hinweise zu organischen Media

Priors für den Beitrag sind die Standardoption, da sie die intuitivste Größe für das Festlegen fundierter Priors sind. Bei einigen Channels wird möglicherweise ein größerer Beitrag erwartet als bei anderen. Sie können die Prior-Verteilung daher an Ihre Unternehmens- und Marketingtaktiken anpassen. Eine Betaverteilung ist oft sinnvoll, da sie auf das Intervall 0–1 beschränkt ist.

Koeffizienten-Priors sind die traditionellere Art der Parameterisierung für ein lineares Regressionsmodell. Ähnlich wie bei bezahlten Media ist die Interpretation eines Koeffizienten etwas abstrakt, was es schwierig macht, einen fundierten Prior festzulegen. Ein bestimmter Koeffizientenwert kann für verschiedene organische Media-Channels sehr unterschiedliche Beitragswerte bedeuten, da der Beitrag von der Verteilung der Ausführung über geografische Einheiten und Zeiträume sowie von den geschätzten Parametern für Adstock und abnehmende Renditen des Channels abhängt.

Hinweise zu nicht mediabezogenen Testvariablen

Priors für den Beitrag sind die Standardoption, da sie die intuitivste Größe für das Festlegen fundierter Priors sind. Es empfiehlt sich immer, die Prior-Verteilung an die jeweiligen Gegebenheiten anzupassen. Je nach definiertem Baseline-Wert der einzelnen Variablen kann ein positiver oder negativer Beitrag erwartet werden. Möglicherweise ist das Vorzeichen des Beitrags auch unbekannt. Ein Beispiel hierfür wäre etwa, wenn Sie den Preis auf einen bestimmten Baseline-Wert festzulegen, ohne dass Ihnen klar ist, ob sich dies positiv oder negativ auf den Umsatz auswirken wird. Vielleicht gehen Sie auch davon aus, dass sich der Preis bei einem bestimmten Baseline-Preis positiv, bei einem anderen aber negativ auswirkt.

Koeffizienten-Priors sind die traditionellere Art der Parameterisierung für ein lineares Regressionsmodell. Ähnlich wie bei bezahlten und organischen Media ist die Interpretation eines Koeffizienten etwas abstrakt, was es schwierig macht, einen fundierten Prior festzulegen. Ein bestimmter Koeffizientenwert kann für verschiedene Channels mit nicht mediabezogenen Testvariablen sehr unterschiedliche Beitragswerte bedeuten, weil der Beitrag von der Verteilung der Werte über geografische Einheiten und Zeiträume und dem Baseline-Wert der Testvariable abhängt.

Flussdiagramme zur Auswahl von Prior-Typen für Testvariablen

Die folgenden Flussdiagramme veranschaulichen, welche der oben genannten Überlegungen für die jeweiligen Testvariablen (bezahlte oder organische Media, nicht mediabezogen) relevant sind.

Bezahlte Media

Flussdiagramm mit Details zur Auswahl des richtigen Prior-Typs für bezahlte Media

Variablen für organische Media und nicht mediabezogene Testvariablen

Flussdiagramm mit Details zur Auswahl des richtigen Prior-Typs für organische Media und nicht mediabezogene Testvariablen

Prior-Typen für Testvariablen konfigurieren

In diesem Abschnitt werden die verfügbaren Prior-Typen für bezahlte Media, organische Media und nicht mediabezogene Testvariablen sowie verschiedene Aspekte für die Konfiguration in der Meridian-Bibliothek behandelt. Wir stellen mehrere Code-Snippets und Beispiele für die Konfiguration des Prior-Typs für die verschiedenen Typen von Testvariablen bereit.

Priors für bezahlte Media konfigurieren

Der Prior-Typ für bezahlte Media wird durch die Argumente media_prior_type und rf_prior_type von ModelSpec angegeben. In der folgenden Tabelle sehen Sie, welche PriorDistribution-Parameter zu den einzelnen Prior-Typen gehören.

media_prior_type/rf_prior_type Parameter in PriorDistribution
'roi'* (Standard) roi_m*, roi_rf*
'mroi'* mroi_m*, mroi_rf*
'contribution' contribution_m, contribution_rf
'coefficient' beta_m, beta_rf

Im folgenden Abschnitt finden Sie hypothetische Beispiele dafür, wie Sie diese Priors für ein Modell mit zwei bezahlten Media-Channels konfigurieren könnten. Die Gründe für die Prior-Einstellungen für jedes Beispiel in der Liste finden Sie im jeweiligen Codeblock. Außerdem sind die Standardverteilungen angegeben, damit sich der Konfigurationsprozess für jeden Prior-Typ besser nachvollziehen lässt.

  • ROI (roi_m): Hier mit logarithmischen Normalverteilungen (LogNormal) konfiguriert, deren Mittelwerte bei 1,7 und 2,5 liegen, um sie an experimentelle Lift-Studien anzupassen.

    Die Standardverteilung verwendet LogNormal(0.2, 0.9) mit einem Mittelwert von 1,22 und einem Medianwert von 1,83.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 1: ROI (Return on Investment)
# -----------------------------------------------------------------------------
# ROI (LogNormal) -> Means at 1.7 and 2.5
prior = prior_distribution.PriorDistribution(
    roi_m=prior_distribution.PriorDistribution.lognormal_dist_from_mean_std(
        mean=[1.7, 2.5], std=[0.3, 0.5]
    )
)
model_spec = spec.ModelSpec(prior=prior, media_prior_type='roi')
  • Grenz-ROI (mroi_m): Mit engen Verteilungen um den Mittelwert 1,0 konfiguriert. Für beide Channels wurden ein gemeinsamer Mittelwert und eine kleine Standardabweichung ausgewählt, um die Budgetoptimierung zu regularisieren. Ein Mittelwert von 1,0 wurde festgelegt, da beide Channels als nahezu gesättigt gelten.

    Die Standardverteilung verwendet LogNormal(0.0, 0.5) mit einem Mittelwert von 1,13 und einem Medianwert von 1.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 2: mROI (Marginal Return on Investment)
# -----------------------------------------------------------------------------
# mROI (LogNormal) -> Means at 1.0
prior = prior_distribution.PriorDistribution(
    mroi_m=prior_distribution.PriorDistribution.lognormal_dist_from_mean_std(
        mean=[1.0, 1.0], std=[0.2, 0.2]
    )
)
model_spec = spec.ModelSpec(prior=prior, media_prior_type='mroi')
  • Beitrag (contribution_m): Hier werden Beta-Verteilungen verwendet, um bestimmte „Anteile des Effekts“ von 3 % und 4 % zu modellieren.

    Die Standardverteilung verwendet Beta(concentration1=1.0, concentration0=99.0) und hat einen Mittelwert von 1 %.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 3: Media Contribution
# -----------------------------------------------------------------------------
# Contribution (Beta) -> Means at 3% and 4%
prior = prior_distribution.PriorDistribution(
    contribution_m=tfp.distributions.Beta(
        concentration1=[3.0, 4.0], concentration0=[97.0, 96.0]
    )
)
model_spec = spec.ModelSpec(prior=prior, media_prior_type='contribution')
  • Koeffizient (beta_m): Hier werden HalfNormal-Verteilungen mit engeren Skalen (1,0 und 1,5) verwendet, um eine statistische Regularisierung anzuwenden.

    Die Standardverteilung ist Normal(0, 5) und gilt als schwach informativer Prior.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 4: Media Coefficient
# -----------------------------------------------------------------------------
# Coefficient (HalfNormal) -> Scales at 1.0 and 1.5
prior = prior_distribution.PriorDistribution(
    beta_m=tfp.distributions.HalfNormal(scale=[1.0, 1.5])
)
model_spec = spec.ModelSpec(prior=prior, media_prior_type='coefficient')

Priors für organische Media konfigurieren

Der Prior-Typ für organische Media wird durch die Argumente organic_media_prior_type und organic_rf_prior_type angegeben. Die Optionen sind 'contribution' und 'coefficient'. 'contribution' ist die Standardeinstellung.

organic_media_prior_type/organic_rf_prior_type Parameter in PriorDistribution
'contribution' (Standard) contribution_om, contribution_orf
'coefficient' beta_om, beta_orf

Organische Media – Beispiele für die Konfiguration

In diesem Abschnitt finden Sie Codebeispiele für die Konfiguration verschiedener Prior-Typen für Testvariablen für organische Media. Die Gründe für die Prior-Einstellungen für jedes Beispiel in der Liste finden Sie im jeweiligen Codeblock. Außerdem sind die Standardverteilungen angegeben, damit sich der Konfigurationsprozess für jeden Prior-Typ besser nachvollziehen lässt.

  • Beitrag (contribution_om): Legt eine Beta-Verteilung mit einem Mittelwert von 3 % fest.

    Die Standardverteilung ist Beta(1.0, 99.0) und hat einen Mittelwert von 1 %.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 1: Organic Media Contribution
# -----------------------------------------------------------------------------
# Contribution (Beta) -> Mean at 3%
prior = prior_distribution.PriorDistribution(
    contribution_om=tfp.distributions.Beta(
        concentration1=[3.0, 3.0], concentration0=[97.0, 97.0]
    )
)
model_spec = spec.ModelSpec(prior=prior, organic_media_prior_type='contribution')
  • Koeffizient (beta_om): Hier wird eine HalfNormal-Verteilung verwendet, um eine strengere statistische Regularisierung anzuwenden (Skalierung 2,0).

    Die Standardverteilung ist HalfNormal(5) und hat eine Skalierung von 5.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 2: Organic Media Coefficient
# -----------------------------------------------------------------------------
# Coefficient (HalfNormal) -> Scale at 2.0
prior = prior_distribution.PriorDistribution(
    beta_om=tfp.distributions.HalfNormal(scale=[2.0, 2.0])
)
model_spec = spec.ModelSpec(prior=prior, organic_media_prior_type='coefficient')

Priors für nicht mediabezogene Testvariablen konfigurieren

Der Prior-Typ nicht mediabezogener Testvariablen wird durch das Argument non_media_treatments_prior_type angegeben. Die Optionen sind 'contribution' und 'coefficient'. 'contribution' ist die Standardeinstellung.

In der folgenden Tabelle sehen Sie den PriorDistribution-Parameter, der jedem non_media_treatments_prior_type entspricht und mit dem die Prior-Verteilung angepasst werden kann.

non_media_treatments_prior_type Parameter in PriorDistribution
'contribution' (Standard) contribution_n
'coefficient' gamma_n

Nicht mediabezogene Testvariablen – Beispiele für die Konfiguration

In diesem Abschnitt finden Sie mehrere Codebeispiele für die Konfiguration verschiedener Prior-Typen für nicht mediabezogene Testvariablen. Die Gründe für die Prior-Einstellungen für jedes Beispiel in der Liste finden Sie im jeweiligen Codeblock. Außerdem sind die Standardverteilungen angegeben, damit sich der Konfigurationsprozess für jeden Prior-Typ besser nachvollziehen lässt.

  • Beitrag (contribution_n): Es wird eine gekürzte Normalverteilung verwendet, deren Schwerpunkt bei der ersten Testvariablen bei –5 % und bei der zweiten bei 5 % liegt. Beide haben eine relativ große Unsicherheit (10 %).

    Der Prior für die erste Testvariable lässt nur negative Beiträge zu, weil er auf den Bereich (–100 %, 0 %) gekürzt wird. Das kann sinnvoll sein, wenn die nicht mediabezogene Testvariable der Preis und der KPI die Anzahl der verkauften Einheiten ist.

    Der Prior für die zweite Testvariable lässt nur positive Beiträge zu, weil er auf den Bereich (0 %, 100 %) gekürzt wird. Das kann sinnvoll sein, wenn die nicht mediabezogene Testvariable ein Angebot darstellt und der KPI die Anzahl der verkauften Einheiten ist.

    Die Standardverteilung ist TruncatedNormal(0.0, 0.1, -1.0, 1.0) und gilt als schwach informativer Prior.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 1: Non-Media Treatment Contribution
# -----------------------------------------------------------------------------
# Contribution (TruncatedNormal) -> Loc at -5% and 5%, Scale at 10%
prior = prior_distribution.PriorDistribution(
    contribution_n=tfp.distributions.TruncatedNormal(
        loc=[-0.05, 0.05],
        scale=[0.1, 0.1],
        low=[-1.0, 0.0],
        high=[0.0, 1.0]
    )
)
model_spec = spec.ModelSpec(
    prior=prior,
    non_media_treatments_prior_type='contribution'
)
  • Koeffizient (gamma_n): Dafür wird Normal(0, 1) verwendet, weil hier die Standardabweichung kleiner als bei der Standardverteilung ist. Manchmal ist eine stärkere Regularisierung hilfreich, um die Posterior-Varianz zu verringern.

    Die Standardverteilung ist Normal(0, 5) und gilt als schwach informativer Prior.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution
# -----------------------------------------------------------------------------
# Option 2: Non-Media Treatment Coefficient
# -----------------------------------------------------------------------------
# Coefficient (Normal) -> Loc at 0.0, Scale at 1.0
prior = prior_distribution.PriorDistribution(
    gamma_n=tfp.distributions.Normal(
        loc=[0.0, 0.0], scale=[1.0, 1.0]
    )
)
model_spec = spec.ModelSpec(
    prior=prior,
    non_media_treatments_prior_type='coefficient'
)

Geeignete Prior-Argumente angeben

Das PriorDistribution-Objekt hat ein Argument für jede Kombination aus Testvariablen- und Prior-Typ. Für jeden Testvariablentyp wird nur das Argument verwendet, das dem ausgewählten Prior-Typ entspricht. Die anderen werden ignoriert.

Die Argumente für bezahlte Media ohne Reichweite und Häufigkeit sind beispielsweise

  • roi_m

  • mroi_m

  • contribution_m

  • beta_m

Wenn media_prior_type gleich 'roi' ist, wird roi_m verwendet und die anderen werden ignoriert.

So kann es z. B. sein, dass ein Nutzer Priors für mehrere Prior-Typen angibt. In diesem Beispiel werden jedoch nur Priors für den Beitrag verwendet, weil media_prior_type='contribution'.

Im folgenden Snippet sehen Sie, dass roi_m und mroi_m zwar definiert sind, aber ignoriert werden, weil media_prior_type auf contribution festgelegt ist.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution

# Set custom prior for all paid media treatment parameters.
prior_dist = prior_distribution.PriorDistribution(
    roi_m=tfp.distributions.LogNormal(0.2, 0.9), # NOT used
    mroi_m=tfp.distributions.LogNormal(0.0, 0.5), # NOT used
    contribution_m=tfp.distributions.Beta(1.0, 99.0), # Used
    beta_m=tfp.distributions.HalfNormal(5.0), # NOT used
)

# Setting the treatment type to 'contribution' means that only the `contribution_m`
# prior will be used. The priors specified on `roi_m`, `mroi_m`, and `beta_m` will be ignored.
spec = spec.ModelSpec(prior=prior_dist, media_prior_type='contribution')

Die Definition des richtigen Priors wird auch im folgenden Flussdiagramm veranschaulicht.

Flussdiagramm mit Details zur korrekten Verwendung von Parametern für die Modellspezifikation

Weitere Hinweise

In diesem Abschnitt finden Sie weiterführende Hinweise dazu, wie Sie die passenden Prior-Typen für Testvariablen in Meridian auswählen.

Priors für den Beitrag für nicht mediabezogene Testvariablen anpassen

Der Standard-Prior für den Beitrag ist eine gekürzte Normalverteilung, die sowohl positive als auch negative Werte zulässt. Sie können spezifische Testvariablen-Parameter für die gekürzte Normalverteilung festlegen, um die Wahrscheinlichkeit in Richtung positiver oder negativer Werte zu verschieben. Im folgenden Code-Snippet wird beispielsweise der ersten Testvariablen die symmetrisch gekürzte Normalverteilung „0, 0.1“ zugewiesen, der zweiten die positive gekürzte Halbnormalverteilung „0, 0.2“ und der dritten die negative gekürzte Halbnormalverteilung „0, 0.1“.

PriorDistribution(
    contribution_n=tfp.distributions.TruncatedNormal(
        loc=[0, 0, 0],
        scale=[0.1, 0.2, 0.1],
        high=[1, 1, 0],
    )
)

Alternativ können Sie eine skalierte Betaverteilung verwenden, um für einige Testvariablen eine positive und für andere eine negative Verteilung anzugeben. Im folgenden Code-Snippet wird beispielsweise der ersten Testvariablen der Beta-Prior „1, 49“ und der zweiten der negative Beta-Prior „1, 99“ zugewiesen.

PriorDistribution(
    contribution_n=tfp.distributions.TransformedDistribution(
        tfp.distributions.Beta([1, 1], [49, 99]),
        tfp.bijectors.Scale([1, -1]),
    )
)

Abgeleitete Priors und Channel-Parität

Wenn Sie einen Prior für einen Messwert (z. B. ROI) angeben, leitet Meridian einen Prior für den anderen Messwert (Grenz-ROI) ab. Dieser abgeleitete Prior gehört nicht zu einer Standardparametergruppe und hängt von anderen Modellparametern ab, einschließlich der Media-Ausführung des Channels über verschiedene geografische Einheiten und Zeiträume.

Das hat eine erhebliche Auswirkung auf die Channel-Parität: Selbst wenn Sie für alle Channels einen gemeinsamen ROI-Prior festlegen, werden sich die abgeleiteten Grenz-ROI-Priors der einzelnen Channels unterscheiden und umgekehrt. Falls Sie also für einen bestimmten Messwert von einer Parität zwischen den Channels ausgehen, müssen Sie den Prior direkt genau auf diesen Messwert setzen und dafür die entsprechende Parametrisierung verwenden.

Wenn Sie die abgeleiteten ROI- und Grenz-ROI-Priors für ein Modell untersuchen möchten, können Sie sample_prior aufrufen und dann die Methode roi oder marginal_roi der Klasse Analyzer mit dem Argument use_posterior=False verwenden.

from meridian.analysis import analyzer
from meridian.model import model
import numpy as np

mmm = model.Meridian(...)
mmm.sample_posterior(...)
analyzer_instance = analyzer.Analyzer(mmm)

# Get the prior distributions using `use_posterior=False`.
roi_prior = analyzer_instance.roi(use_posterior=False)

# This is the induced prior on mROI.
mroi_induced_prior = analyzer_instance.marginal_roi(use_posterior=False)

# The shape of the prior samples is (chains, draws, channels).
# We calculate the mean across the 'chains' and 'draws' axes.
print("Mean of ROI prior per channel:", np.mean(roi_prior, axis=(0, 1)))
print("Mean of induced mROI prior per channel:", np.mean(mroi_induced_prior, axis=(0, 1)))

Erweitert: Abgeleitete Beziehung zwischen Grenz-ROI und ROI

Obwohl der abgeleitete Prior nicht zu einer Standardparametergruppe gehört, ist eine Aussage zu den abgeleiteten Priors möglich. Zur Erinnerung: Der Grenz-ROI ist der ROI für eine zusätzliche Währungseinheit (z. B. einen Euro), die in einen bestimmten Channel investiert wird.

Bei impressionsbasierten Channels (ohne Daten zu Reichweite und Häufigkeit) wird eine zusätzliche Währungseinheit für Ausgaben zugewiesen, indem die Media-Ausführung (z. B. Impressionen) hochskaliert wird.

Wenn die Hill-Kurve für einen Channel konkav ist (Standard), ist der Gesamt-ROI des Channels immer höher als sein Grenz-ROI. Das ermöglicht eine vorhersagbare Beziehung zwischen den angegebenen und den abgeleiteten Priors:

  • Ein ROI-Prior führt zu einem Grenz-ROI-Prior, der immer kleiner ist.
  • Ein Grenz-ROI-Prior führt zu einem ROI-Prior, der immer größer ist.

Bei Channels für Reichweite und Häufigkeit wird die zusätzliche Währungseinheit für Ausgaben zugewiesen, indem die Reichweite hochskaliert wird, während die durchschnittliche Häufigkeit gleich bleibt.

Bei diesen Channels entspricht der Grenz-ROI (nach Reichweite) dem ROI, weil die Media-Effekte im Meridian-Modell in Bezug auf die Reichweite linear sind. Der Grenz-ROI-Prior von Meridian wird auf den Grenz-ROI nach Reichweite angewendet. Die Wahl zwischen einem ROI- und einem Grenz-ROI-Prior hat daher für diese Channels keine Auswirkungen auf den Prior selbst. Die Auswahl ist jedoch wichtig, wenn Sie Standardverteilungen verwenden, da sich die Standardverteilungen für ROI- und Grenz-ROI-Priors unterscheiden.

Grenz-ROI-Priors für die Budgetregularisierung verwenden

Mit Grenz-ROI-Priors lassen sich Empfehlungen zur Budgetoptimierung regularisieren, indem sie in Richtung der bisherigen Budgetzuweisung verkleinert werden. Das ist nützlich, wenn Sie davon ausgehen, dass die bisherigen Budgets bereits nahezu optimal waren.

Dazu können Sie für alle Channels einen gemeinsamen Mittelwert für den Grenz-ROI-Prior festlegen und eine kleine Standardabweichung verwenden. Ein stärkerer Prior (kleinere Standardabweichung) führt dazu, dass sich die optimale Zuweisung der bisherigen Zuweisung annähert. Dadurch fallen die empfohlenen Budgetverschiebungen geringer aus. Wenn Sie beispielsweise den Grenz-ROI-Mittelwert auf 1,0 setzen, bedeutet das, dass bei bisherigen Ausgabenniveaus ein zusätzlicher Euro Ausgaben einen Euro Rendite erzielen würde. Das wiederum deutet darauf hin, dass das Budget des Channels nahezu optimal ist.

import tensorflow_probability as tfp
from meridian.model import spec, prior_distribution

# Assume 2 paid media channels.
# Set a common mROI prior mean of 1.0, suggesting budgets are near optimal.
# Use a very small standard deviation to create a strong prior.
mean_mroi = [1.0, 1.0]
std_mroi = [0.1, 0.1]  # A small std dev creates a strong prior.

lognormal_mroi_regularizing = prior_distribution.PriorDistribution.lognormal_dist_from_mean_std(
    mean_mroi, std_mroi
)

prior_mroi_regularizing = prior_distribution.PriorDistribution(
    mroi_m=lognormal_mroi_regularizing
)

# This ModelSpec will produce more conservative budget recommendations.
model_spec_regularized = spec.ModelSpec(
    prior=prior_mroi_regularizing,
    media_prior_type='mroi'
)

Die Anzahl der Media-Ausführungen und damit die Sättigung eines Channels können sich über verschiedene Zeiträume hinweg ändern. Dadurch können sich auch die Grenz-ROI-Werte je nach Zeitraum unterscheiden. Wenn Sie Grenz-ROI-Priors verwenden möchten, um die Budgetoptimierung zu regularisieren, muss das Zeitfenster für den Prior mit dem Optimierungszeitfenster übereinstimmen. Andernfalls funktioniert die Regularisierung möglicherweise nicht wie beabsichtigt.