Послідовність реєстрації
Тепер змоделюємо процес генерування даних (DGP) для показу eCommerce-реклами, починаючи з реєстрацій.
Упродовж будь-якого дня ми маємо багато показів реклами, які можна змоделювати як випадкові величини Пуассона. Відомо, що \(\lambda\) має нормальний розподіл із середнім 100 тис. відвідувачів і стандартним відхиленням 2000.
Під час шляху до реєстрації користувач бачить оголошення, вирішує, натискати чи ні, а потім — реєструватися чи ні. Отже, і кліки, і реєстрації — бінарні події, змодельовані за допомогою біноміальних випадкових величин. А як щодо імовірності успіху \(p\)? Наша поточна бюджетна опція дає click-through rate 1% і sign-up rate 20%. Дорожча опція може підвищити показники кликабельності та реєстрації до 20%, але ми не знаємо точний рівень покращення, тому моделюємо його як рівномірну випадкову величину.
Ця вправа є частиною курсу
Статистичне моделювання в Python
Інструкції до вправи
- Ініціалізуйте словники
ct_rateіsu_rateтак, щоб значенняhighбули рівномірно розподілені між значеннямlowі \(1.2 \times\) значеннямlow. - Змоделюйте
impressionsяк пуассонівську випадкову величину із середнім значеннямlam. - Змоделюйте
clicksіsignupsяк біноміальні випадкові величини, деn— цеimpressionsтаclicks, аp— відповідноct_rate[cost]іsu_rate[cost]. - Далі виведіть змодельовану кількість реєстрацій для опції з вартістю
'high'.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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)))