Процесс регистрации
Теперь смоделируем процесс генерации данных (DGP) для рекламного потока в интернет-магазине, начиная с регистраций.
Каждый день сайт получает множество рекламных показов, которые можно моделировать как случайные величины с распределением Пуассона. Известно, что \(\lambda\) распределена нормально со средним значением 100 тыс. посетителей и стандартным отклонением 2000.
В процессе регистрации пользователь видит рекламу, решает, кликнуть ли на неё, а затем — зарегистрироваться ли. Таким образом, и клики, и регистрации являются бинарными событиями и моделируются с помощью биномиального распределения. Что касается вероятности успеха \(p\): текущий бюджетный вариант даёт показатель кликабельности 1% и коэффициент регистрации 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)))