Benutzerdefinierte Priors festlegen, wenn das Ergebnis nicht „Umsatz“ ist

In Meridian wird der ROI als inkrementelles Ergebnis geteilt durch die Ausgaben definiert. Wenn der KPI nicht der Umsatz ist und revenue_per_kpi nicht an InputData übergeben wird, basiert das Ergebnis nicht auf Umsatzwerten. Das kann es schwierig machen, einen benutzerdefinierten ROI-Prior zu bestimmen.

Berücksichtigen Sie die folgenden Optionen, wenn Sie einen benutzerdefinierten Prior festlegen und das Ergebnis nicht der Umsatz ist:

Benutzerdefinierter Prior für den Gesamtbeitrag kostenpflichtiger Media

Wenn Sie eine Vermutung dazu haben, welcher Anteil des inkrementellen KPI auf kostenpflichtige Media zurückzuführen ist, können einen gemeinsamen ROI-Prior für alle Channels festlegen, sodass der Gesamtbeitrag von Media einen bestimmten Prior-Mittelwert und eine bestimmte Prior-Standardabweichung hat. Gehen Sie dazu so vor:

p_mean = 0.5  # prior mean proportion of KPI incremental due to all media
p_sd = 0.15  # prior std dev proportion of KPI incremental to all media
roi_mean = p_mean * kpi / np.sum(cost)
roi_sd = p_sd * kpi / np.sqrt(np.sum(np.power(cost, 2)))
lognormal_sigma = np.sqrt(np.log(roi_sd**2 / roi_mean**2 + 1))
lognormal_mu = np.log(roi_mean * np.exp(-lognormal_sigma**2 / 2))
roi_prior = tfp.distributions.LogNormal(
    lognormal_mu.astype(np.float32),
    lognormal_sigma.astype(np.float32),
)

Dabei gilt:

  • kpi ist die Summe des gesamten KPI über alle geografischen Einheiten und Zeiträume hinweg.
  • cost ist ein Array mit den Gesamtkosten pro Channel über alle geografischen Einheiten und Zeiträume hinweg.

In diesem Beispiel liegt der KPI-Beitrag aller Media bei 50 % mit einer Standardabweichung von 15 %. Das ergibt einen ROI-Prior, der für alle Channels einheitlich ist, sodass der implizite Prior für den Gesamtbeitrag kostenpflichtiger Media einen Mittelwert von 50 % und eine Standardabweichung von 15 % hat. Der abgeleitete Prior roi_prior kann dann verwendet werden, indem er im PriorDistribution-Container für roi_m oder roi_rf festgelegt wird.

Der Prior für den Gesamtbeitrag kostenpflichtiger Media kann von Vorteil sein, da dann keine Vermutung für jeden einzelnen Channel erforderlich ist. Wenn Sie jedoch zusätzliches Wissen oder eine ungefähre Vorstellung von den einzelnen Channels haben, sollten Sie einen Prior für die Kosten pro inkrementellem KPI oder einen Prior für den Beitrag auf Channelebene festlegen.

Benutzerdefinierter Prior für die Kosten pro inkrementellem KPI

Wenn Sie eine ungefähre Vorstellung vom inkrementellen KPI pro Kosten eines Channels haben, können Sie einen entsprechenden Prior festlegen, indem Sie roi_m oder roi_rf im PriorDistribution-Container verwenden. Wenn revenue_per_kpi nicht festgelegt ist, entspricht der ROI dem IKPC in Meridian.

Beispiel:

roi_prior = tfp.distributions.LogNormal([0.5, 0.6, 0.7], [0.5, 0.5, 0.5])

Diese Vorgehensweise empfiehlt sich nur, wenn Sie einen benutzerdefinierten Prior für die Kosten pro inkrementellem KPI für jeden Media-Channel festlegen. Die standardmäßigen ROI-Priors mit revenue_per_kpi=None sind nämlich wahrscheinlich nicht sinnvoll für Ihre Daten, da sie für Umsatz-KPIs entwickelt wurden, bei denen der ROI auf einer Skala ohne Einheit angegeben wird. Wenn Sie für einige Channels nur eine ungefähre Vorstellung von den Kosten pro inkrementellem KPI haben, müssen Sie für die anderen Channels trotzdem einen angemessenen Standard-Prior dafür festlegen. Von Meridian wird keine Empfehlung für den Standard-Prior für die Kosten pro inkrementellem KPI zur Verfügung gestellt, da diese stark von der Skalierung abhängen, z. B. ein neues Auto im Vergleich zu einem Schokoriegel.

Prior für den Beitrag auf Channelebene

Wenn Sie eine Vermutung dazu haben, welcher Anteil des inkrementellen KPI auf einen bestimmten Channel zurückzuführen ist, können Sie einen Prior für den Beitrag eines bestimmten Channels festlegen. Dazu legen Sie media_prior_type='contribution' und rf_prior_type='contribution' in der ModelSpec fest und passen die Prior-Verteilungen für contribution_m und contribution_rf in der PriorDistribution an. Folgendes ist ein Beispiel.

prior = prior_distribution.PriorDistribution(
    contribution_m=tfp.distributions.Beta([1, 5], [99, 95]),
    contribution_rf=tfp.distribution.Beta(2, 98),
)
model_spec = spec.ModelSpec(
    prior=prior,
    media_prior_type="contribution",
    rf_prior_type="contribution",
)

In diesem Beispiel gibt es zwei Media-Channels. Dem ersten ist der Beta-Prior für Beiträge „1, 99“ mit einem Mittelwert von 1 % zugewiesen. Dem zweiten ist der Beta-Prior für Beiträge „5, 95“ mit einem Mittelwert von 5 % zugewiesen. Den Channels für Reichweite und Häufigkeit wird jeweils der Beta-Prior für Beiträge „2, 98“ mit einem Mittelwert von 2 % zugewiesen. Hinweis: tfp.distribution.Beta(2, 98) ist eine skalare Verteilung und wird daher an alle Channels für Reichweite und Häufigkeit gesendet.