Aan de slagGa gratis aan de slag

Aanmeldingsflow

We gaan nu het DGP van een eCommerce-advertentiefunnel modelleren, beginnend bij aanmeldingen.

Op een willekeurige dag krijgen we veel advertentievertoningen, die je kunt modelleren als Poisson-toevalsvariabelen (RV). Je krijgt te horen dat \(\lambda\) normaal verdeeld is met een gemiddelde van 100k bezoekers en een standaardafwijking van 2000.

Tijdens het aanmeldtraject ziet de klant een advertentie, beslist of hij/zij klikt, en vervolgens of hij/zij zich aanmeldt. Zowel kliks als aanmeldingen zijn dus binair en worden gemodelleerd met binomiale RV’s. En wat is dan de kans \(p\) op succes? Onze huidige low-cost optie geeft ons een click-through rate van 1% en een aanmeldingspercentage van 20%. Een duurdere optie kan de click-through en aanmeldingspercentages met maximaal 20% verhogen, maar we weten niet zeker hoeveel verbetering we krijgen, dus we modelleren dit als een uniforme RV.

Deze oefening maakt deel uit van de cursus

Statisticale simulatie in Python

Cursus bekijken

Oefeninstructies

  • Initialiseer de woordenboeken ct_rate en su_rate zó dat de high-waarden uniform verdeeld zijn tussen de low-waarde en \(1{.}2 \times\) de low-waarde.
  • Modelleer impressions als een Poisson-toevalsvariabele met gemiddelde lam.
  • Modelleer clicks en signups als binomiale toevalsvariabelen met n respectievelijk impressions en clicks, en p als ct_rate[cost] en su_rate[cost].
  • Print vervolgens de gesimuleerde aanmeldingen voor de 'high'-kostenoptie.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Initialize click-through rate and signup rate dictionaries
ct_rate = {'low':0.01, 'high':np.random.uniform(low=0.01, high=1.2*0.01)}
su_rate = {'low':0.2, 'high':____(low=0.2, high=1.2*____)}

def get_signups(cost, ct_rate, su_rate, sims):
    lam = np.random.normal(loc=100000, scale=2000, size=sims)
    # Simulate impressions(poisson), clicks(binomial) and signups(binomial)
    impressions = ____
    clicks = ____
    signups = ____
    return signups

print("Simulated Signups = {}".format(get_signups('high', ct_rate, su_rate, 1)))
Code bewerken en uitvoeren