Ustawianie niestandardowych priorytetów zwrotu z inwestycji na podstawie wcześniejszych eksperymentów

Meridian wymaga kalibracji pod kątem ROI. Chociaż ustawienie na podstawie wyników poprzednich eksperymentów. należy wziąć pod uwagę wiele niuansów. Na przykład:

  • Czas eksperymentu w odniesieniu do przedziału czasowego modelu MMM: Jeśli eksperyment przeprowadzono albo przed oknem czasowym MMM, albo po nim, wyniki mogą nie mieć zastosowania.

  • Czas trwania eksperymentu: krótki czas trwania eksperymentu może nie pozwalają na uchwycenie długoterminowych efektów skuteczności marketingu.

  • Złożoność eksperymentu: jeśli eksperyment obejmuje mieszankę czynników. kanałów, wyniki mogą nie dawać jasnych informacji na temat skuteczności poszczególnych kanałów.

  • Różnice szacunkowe: wartości szacunkowe używane w eksperymentach mogą się różnić od stosowane w modelowaniu marketing miksu. Na przykład kontrfaktyczny kontrfaktyczny model marketing miksu to zero wydatków, a niektóre eksperymenty mogą mieć inny kontrfakt, np. niższych wydatków.

  • Różnice populacyjne: populacja objęta eksperymentem może nie musi być taka sama jak populacja brana pod uwagę w modelowaniu marketing miksu.

Zalecamy ustawienie niestandardowego progu na podstawie swojego przekonania do efektywności kanału. Powszechne przekonanie może wynikać z wielu czynników, w tym eksperymentów i innych wiarygodnych analiz. Wykorzystaj w tym celu wcześniejsze przekonanie, aby podawać odchylenie standardowe poprzedniej wartości:

  • Jeśli mocno wierzysz w skuteczność kanału, możesz zastosować współczynnik korygujący do odchylenia standardowego przed odzwierciedlają Twoją pewność. Załóżmy np., że wykonaliście kilka eksperymentów dotyczących konkretnego kanału, a wszystkie dały podobne wyniki, szacunkowa liczba punktów ROI lub dysponujesz danymi historycznymi z poprzednich analiz modelowania marketing miksu. które wspierają efektywność tego kanału. W takim przypadku możesz ustawić parametr mniejsze odchylenie standardowe dla poprzedniej wartości, aby nie zmieniała się rozkład bardzo szeroko. Taki węższy rozkład wskazuje na Twoje silniejsze zaufanie do wyniki eksperymentu.

  • I na odwrót: eksperyment nie zawsze przekłada się na modelowanie marketing miksu, biorąc pod uwagę niektóre wymienione wcześniej niuanse. W takim przypadku możesz wybrać aby zastosować współczynnik korygujący do odchylenia standardowego poprzedniego rozkładu. Możesz na przykład ustawić większe odchylenie standardowe dla poprzedniej wartości, w zależności od Twojego sceptycyzmu.

Rozważ użycie argumentu roi_calibration_period w: ModelSpec Więcej informacji: Ustaw okres kalibracji ROI.

W przypadku wcześniejszego ustawienia rozkład LogNormal jest powszechny tylko jedną z nich. Ten przykładowy kod można wykorzystać do przekształcenia błąd średni i standardowy do LogNormal wcześniejszych rozkład:

import numpy as np

def estimate_lognormal_dist(mean, std):
  """Reparameterization of lognormal distribution in terms of its mean and std."""
  mu_log = np.log(mean) - 0.5 * np.log((std/mean)**2 + 1)
  std_log = np.sqrt(np.log((std/mean)**2 + 1))
  return [mu_log, std_log]

Jeśli jednak wyniki poprzednich eksperymentów są bliskie zera, należy zastanów się, czy Twoje wcześniejsze przekonania są wiernie odzwierciedlane przez rozkład nieujemny, np. rozkład LogNormal. Śr zdecydowanie zalecamy przedstawienie wcześniejszego rozkładu na wykresie, aby potwierdzić jego dopasowanie. dotychczasowych intuicji przed kontynuowaniem analizy. Poniżej przykładowy kod pokazuje, jak zmienić parametry parametru LogNormal parametry, zdefiniować rozkład i na ich podstawie narysować próbkę.

import tensorflow as tf
import tensorflow_probability as tfp

# Get reparameterized LogNormal distribution parameters
mu_log, std_log = estimate_lognormal_dist(mean, std)
mu_log = tf.convert_to_tensor(mu_log, dtype=tf.float32)
std_log = tf.convert_to_tensor(std_log, dtype=tf.float32)
# Define the LogNormal distribution
lognormal_dist = tfp.distributions.LogNormal(mu_log, std_log)
# Draw 10,000 samples
lognormal_samples = lognormal_dist.sample(10000).numpy()