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
- Benutzerdefinierter Prior für die Kosten pro inkrementellem KPI
- Prior für den Beitrag auf Channelebene
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.