Sign-up-Flow
Wir modellieren jetzt den DGP eines eCommerce-Anzeigenflows, beginnend mit den Sign-ups.
An einem beliebigen Tag erhalten wir viele Ad Impressions, die sich als Poisson-Zufallsvariablen (RV) modellieren lassen. Du bekommst die Information, dass \(\lambda\) normalverteilt ist mit einem Mittelwert von 100.000 Besuchern und einer Standardabweichung von 2.000.
Während der Anmeldung sieht der Kunde eine Anzeige, entscheidet, ob er klickt oder nicht, und dann, ob er sich anmeldet oder nicht. Sowohl Klicks als auch Sign-ups sind also binär und werden mit Binomial-RVs modelliert. Wie steht es um die Erfolgswahrscheinlichkeit \(p\)? Unsere aktuelle Low-Cost-Option liefert eine Click-through-Rate von 1 % und eine Sign-up-Rate von 20 %. Eine teurere Option könnte die Click-through- und Sign-up-Rate um bis zu 20 % erhöhen, aber wir sind uns über das genaue Ausmaß der Verbesserung unsicher, daher modellieren wir sie als gleichverteilte RV.
Diese Übung ist Teil des Kurses
Statistische Simulation in Python
Anleitung zur Übung
- Initialisiere die Wörterbücher
ct_rateundsu_rateso, dass diehigh-Werte gleichmäßig zwischen demlow-Wert und \(1{,}2 \times\) demlow-Wert verteilt sind. - Modelle
impressionsals Poisson-Zufallsvariable mit dem Mittelwertlam. - Modelle
clicksundsignupsals Binomial-Zufallsvariablen mitnalsimpressionsbzw.clicksundpalsct_rate[cost]bzw.su_rate[cost]. - Anschließend geben wir die simulierten Sign-ups für die
'high'-Kostenoption aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)))