Meridian définit le ROI comme le résultat incrémental divisé par les dépenses. Lorsque le KPI ne concerne pas les revenus et que revenue_per_kpi
n'est pas transmis à InputData
, le résultat n'est pas exprimé en termes de revenus. Il peut donc être difficile de déterminer un a priori de ROI personnalisé.
Tenez compte des options suivantes pour définir un a priori personnalisé lorsque le résultat n'est pas un revenu :
- A priori personnalisé de contribution totale des médias payants
- A priori personnalisé de coût par KPI incrémental (CPKI)
- A priori de contribution au niveau du canal
A priori personnalisé de contribution totale des médias payants
Si vous avez une idée de la proportion totale du KPI qui est incrémentale en raison des médias payants, vous pouvez définir un a priori de ROI commun sur tous les canaux de sorte que la moyenne a priori et l'écart-type spécifiques à la contribution totale des médias correspondent à ce qui suit :
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),
)
Où :
kpi
correspond à la somme de l'ensemble des KPI pour toutes les zones géographiques et toutes les périodes.cost
est un tableau du coût total par canal pour toutes les zones géographiques et toutes les périodes.
Dans cet exemple, la contribution au KPI de tous les médias est centrée sur 50 % avec un écart-type de 15 %. Vous obtenez ensuite un a priori de ROI cohérent pour tous les canaux, de sorte que l'a priori suggéré pour la contribution totale des médias payants enregistre une moyenne de 50 % et une écart-type de 15 %. L'a priori qui en découle (roi_prior
) peut ensuite être utilisé en le définissant dans le conteneur PriorDistribution
pour roi_m
ou roi_rf
.
L'a priori de contribution totale des médias payants peut être avantageux, car il ne nécessite pas de connaissances sur chaque canal individuel. Toutefois, si vous disposez de connaissances supplémentaires ou d'une intuition sur chaque canal, vous pouvez envisager de définir un a priori de CPKI ou un a priori de contribution au niveau du canal.
A priori personnalisé de coût par KPI incrémental (CPKI)
Si vous avez une idée du coût par KPI incrémental (CPKI) d'un canal, vous pouvez définir un a priori de CPKI à l'aide de roi_m
ou roi_rf
dans le conteneur PriorDistribution
.
Lorsque revenue_per_kpi
n'est pas défini, le ROI équivaut au CPKI dans Meridian.
Exemple :
roi_prior = tfp.distributions.LogNormal([0.5, 0.6, 0.7], [0.5, 0.5, 0.5])
Toutefois, nous vous recommandons d'adopter cette approche uniquement si vous prévoyez de définir un a priori de CPKI personnalisé pour chaque canal média. En effet, les a priori de ROI par défaut avec revenue_per_kpi=None
n'auront probablement pas de sens pour vos données, car ils sont conçus pour les KPI liés aux revenus, où le ROI serait rapporté sur une échelle sans unité. Si vous n'avez qu'une idée générale du CPKI pour certains canaux, vous devez tout de même définir un a priori de CPKI par défaut raisonnable pour les autres canaux. Meridian ne recommande pas d'a priori de CPKI par défaut, car le CPKI est fortement lié à l'ampleur de l'opération (une nouvelle voiture ou une barre chocolatée, par exemple).
A priori de contribution au niveau du canal
Si vous avez une idée de la proportion du KPI qui est incrémentale en raison d'un canal donné, vous pouvez définir un a priori sur la contribution d'un canal donné en définissant media_prior_type='contribution'
et rf_prior_type='contribution'
dans ModelSpec
, et en personnalisant les distributions a priori sur contribution_m
et contribution_rf
dans PriorDistribution
. Consultez l'exemple suivant.
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",
)
Dans cet exemple, il existe deux canaux média. Un a priori de contribution Beta(1, 99) avec une moyenne de 1 % est attribué au premier canal. Un a priori de contribution Beta(5, 95) avec une moyenne de 5 % est attribué au deuxième canal. Un a priori de contribution Beta(2, 98) avec une moyenne de 2 % est attribué à chaque canal de couverture et de fréquence. Notez que tfp.distribution.Beta(2, 98)
est une distribution scalaire. Elle est donc diffusée sur tous les canaux de couverture et de fréquence.