НачатьНачать бесплатно

Процесс регистрации

Теперь смоделируем процесс генерации данных (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)))
Редактировать и запускать код