Registreringsflöde
Nu ska vi modellera datgenereringsprocessen (DGP) för ett eCommerce-annonsflöde, med start i registreringssteget.
Varje dag får vi många annonsvisningar, vilket kan modelleras som Poisson-slumpvariabler. Du får veta att \(\lambda\) är normalfördelat med ett medelvärde på 100 000 besökare och en standardavvikelse på 2 000.
Under registreringsresan ser kunden en annons, bestämmer sig för om hen ska klicka eller inte, och sedan om hen ska registrera sig eller inte. Därför är både klick och registreringar binära och modelleras med binomiala slumpvariabler. Hur är det med sannolikheten \(p\) för framgång? Vårt nuvarande lågkostnadsalternativ ger en klickfrekvens på 1 % och en registreringsfrekvens på 20 %. Ett dyrare alternativ kan öka klick- och registreringsfrekvensen med upp till 20 %, men vi är osäkra på förbättringsnivån – därför modellerar vi den som en likformig slumpvariabel.
Den här övningen är en del av kursen
Statistisk simulering i Python
Övningsinstruktioner
- Initiera ordlistorna
ct_rateochsu_rateså atthigh-värdena är likformigt fördelade mellanlow-värdet och \(1{,}2 \times\)low-värdet. - Modellera
impressionssom en Poisson-slumpvariabel med medelvärdetlam. - Modellera
clicksochsignupssom binomiala slumpvariabler därnärimpressionsrespektiveclicks, ochpärct_rate[cost]respektivesu_rate[cost]. - Skriv sedan ut de simulerade registreringarna för alternativet
'high'.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)))