O Meridian define o ROI como resultado incremental dividido pelo gasto. Quando o KPI não é receita e revenue_per_kpi
não é transmitido para InputData
, o resultado não é em termos de receita. Isso pode dificultar a determinação de uma distribuição a priori de ROI personalizado.
Considere as seguintes opções ao definir uma distribuição a priori personalizada quando o resultado não for receita:
- Distribuição a priori personalizada da contribuição total de mídia paga
- Distribuição a priori personalizada de KPI incremental por custo (IKPC, na sigla em inglês)
- Distribuição a priori da contribuição no nível do canal
Distribuição a priori personalizada da contribuição total de mídia paga
Se você tiver noção da proporção total do KPI que é incremental devido à mídia paga, poderá definir uma distribuição a priori de ROI comum em todos os canais, de modo que a contribuição total de mídia tenha uma média e um desvio padrão específicos da distribuição a priori, fazendo o seguinte:
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),
)
Em que:
kpi
é a soma de todo o KPI de todas as regiões e períodos.cost
é uma matriz do custo total por canal em todas as regiões e períodos.
Neste exemplo, a contribuição do KPI de todas as mídias é centralizada em 50%, com um desvio padrão de 15%. Assim você tem uma distribuição a priori de ROI que é consistente para todos os canais, de modo que a distribuição sugerida da contribuição total de mídia paga tenha uma média de 50% e um desvio padrão de 15%. A distribuição a priori derivada, roi_prior
, pode ser usada após ser configurada no contêiner PriorDistribution
para roi_m
ou roi_rf
.
A distribuição a priori da contribuição total de mídia paga pode ser vantajosa porque não exige noção sobre cada canal individual. No entanto, se houver mais informações sobre cada canal, considere definir uma distribuição a priori de IKPC ou da contribuição no nível do canal.
Distribuição a priori personalizada de KPI incremental por custo (IKPC, na sigla em inglês)
Se você tiver noção do KPI incremental por custo (IKPC) de um canal, poderá definir uma distribuição a priori de IKPC usando roi_m
ou roi_rf
no contêiner PriorDistribution
.
Quando revenue_per_kpi
não está definido, o ROI é equivalente ao IKPC no Meridian.
Exemplo:
roi_prior = tfp.distributions.LogNormal([0.5, 0.6, 0.7], [0.5, 0.5, 0.5])
No entanto, faça isso apenas se você for definir uma distribuição a priori personalizada de IKPC para cada canal de mídia. Isso porque as distribuições a priori de ROI padrão com revenue_per_kpi=None
provavelmente não vão fazer sentido para seus dados, já que foram criadas para KPIs de receita em que o ROI estaria na escala sem unidades. Mesmo que você só tenha noção do IKPC para alguns canais, terá que definir uma distribuição a priori padrão de IKPC razoável para os demais. O Meridian não tem uma distribuição a priori padrão de IKPC recomendada porque ela depende muito da escala, por exemplo, um carro novo ou uma barra de chocolate.
Distribuição a priori da contribuição no nível do canal
Se você tiver noção da proporção do KPI que é incremental devido a um determinado canal, poderá definir uma distribuição a priori para a contribuição de um determinado canal configurando media_prior_type='contribution'
e rf_prior_type='contribution'
em ModelSpec
e personalizando as distribuições a priori em contribution_m
e contribution_rf
em PriorDistribution
. Confira um exemplo a seguir.
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",
)
Neste exemplo, há dois canais de mídia. O primeiro é atribuído a uma distribuição a priori de contribuição Beta(1, 99) que tem média de 1%. O segundo é atribuído uma distribuição a priori de contribuição Beta(5, 95), que tem média de 5%. Cada um dos canais de alcance e frequência recebe uma distribuição a priori de contribuição Beta(2, 98), que tem média de 2%. Lembre-se de que tfp.distribution.Beta(2, 98)
é uma distribuição escalar, portanto, ela é transmitida para todos os canais de alcance e frequência.