Создание групповых сравнений с дискретными предсказаниями в pymc3 - PullRequest
0 голосов
/ 18 марта 2020

Допустим, я делаю A / B-тест на Facebook и пытаюсь объяснить влияние на скорость публикации пользователей на основе двух переменных: возраста и количества друзей. Для общего эффекта лечения от контроля у меня могла бы быть действительно простая модель:

import pymc3 as pm

with pm.Model() as model:
  treatment_posting_rate = pm.Exponential('treatment_posting_rate', lam=0.1)    
  control_posting_rate = pm.Exponential('control_posting_rate', lam=0.1)

  pm.Poisson("control", mu=control_posting_rate*control_total_users, observed=control_total_posts)
  pm.Poisson("treatment", mu=treatment_posting_rate*treatment_total_users, observed=treatment_total_posts)

Если бы я хотел сравнить пользователей между <30 и пользователями> 30, я мог бы объединить этих пользователей в свои данные и создать новая модель:

import pymc3 as pm

with pm.Model() as model:
  treatment_posting_rate = pm.Exponential('treatment_posting_rate', lam=0.1, shape=2)    
  control_posting_rate = pm.Exponential('control_posting_rate', lam=0.1, shape=2)

  pm.Deterministic("treatment_age_difference", treatment_posting_rate[0] - treatment_posting_rate[1])
  pm.Deterministic("control_age_difference", control_posting_rate[0] - control_posting_rate[1])
  pm.Deterministic("treatment_vs_control_greater_than_30", control_posting_rate[0] - treatment_posting_rate[0])
  pm.Deterministic("treatment_vs_control_less_than_30", control_posting_rate[1] - control_posting_rate[1])

  pm.Poisson("control", mu=control_posting_rate[control_is_greater_than_30]*control_total_users, observed=control_total_posts)
  pm.Poisson("treatment", mu=treatment_posting_rate[treatment_is_greater_than_30]*treatment_total_users, observed=treatment_total_posts)

Но это несколько жестко в том смысле, что я не могу легко отрегулировать размеры ковша и провести новые сравнения. Можно ли создать единую модель и определить возрастные группы для сравнения и контраста после?

Кроме того, что, если бы я хотел еще больше разложить это и увидеть разницу между публикациями пользователей> 30, <30 в пределах нескольких групп друзей (<50, 50-100 и др. c). Могу ли я построить единую модель, в которой размеры групповых групп и сравнения могут быть созданы после построения модели, или это нужно указать заранее? </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...