Калькулятор длительности теста A / B и размера образца с использованием пакета pwr () в R - PullRequest
0 голосов
/ 02 февраля 2020

Я использую пакет googleAnalyticsR в R, чтобы получить статистику посещений веб-сайта и рассчитать коэффициент конверсии. Пока проблем нет.

Однако я застрял, пытаясь вычислить требуемый размер популяции и продолжительность теста, используя пакет под названием pwr, который я изменил на основе некоторых рекомендаций, которые я нашел от другого пользователя в сети. Код ниже.

average_daily_traffic <-  10.63 #cvr$all_users/30
control <- 0.30721 #cvr$cvr_perc
uplift <- 0.01

sample_size_calculator <- function(control, uplift){
  variant <- (uplift + 1) * control
  baseline <- ES.h(control, variant)
  sample_size_output <- pwr.p.test(h = baseline,
                                   n = ,
                                   sig.level = 0.05,
                                   power = 0.8)
  if(variant >= 0)
  {return(sample_size_output)}
  else
  {paste("N/A")}
}


duration_calculator <- function(sample_size_output, average_daily_traffic){
  days_required <- c((sample_size_output)*2)/(average_daily_traffic)
  if(days_required >= 0)
  {paste0("It will take approximately ", round(days_required, digits = 0), " days or ", round(round(days_required, digits = 0)/365, digits = 0) ," years for this test to reach significance, based on average traffic in the last 30 days")}
  else
  {paste("N/A")}
}


sample_size_calculator <- sample_size_calculator(control, uplift)
sample_size_output <-   sample_size_calculator$n
sample_size_output

duration_calculator(sample_size_output, average_daily_traffic)

Рекомендация, которую я видел в Интернете, заключалась в создании 2 функций. Один называется «sample_size_calculator», а другой - «days_calculator», причем оба довольно понятны. Для меня, по крайней мере, ясно, какова предполагаемая функция обоих.

Мой вывод таков:

[1] "It will take approximately 33394 days or 91 years for this test to reach significance, based on average traffic in the last 30 days"

Это показалось мне довольно реалистичным c пока я не попытался проверить свои результаты с помощью нескольких других онлайн-инструментов, включая VWO , Unbounce и AB Tasty , все из которых предполагают, что я ~ 0,5 х от того, где я должен быть с точки зрения количества дней, необходимых для выполнения теста. Я ценю, что некоторые из расхождений между вышеупомянутыми калькуляторами будут связаны с тем, как каждая из формул обрабатывает округление, но меня больше интересует, почему и где я ошибся в своих вычислениях, например, чтобы недооценить продолжительность теста наполовину.

Я мог бы просто умножить результирующее число на два и go, чтобы лечь спать, но я стремлюсь понять свою ошибку или даже выучить более статистически и синтаксически элегантный способ кодирования этого.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 февраля 2020

Лично я бы посоветовал попытаться смоделировать данные, а не полагаться на предварительно рассчитанные расчеты мощности. У вас, кажется, есть хороший gr asp написания функций на R, так что вам не составит большого труда смоделировать данные с использованием итераций (например, с помощью циклов for, или, что я лично) рекомендуем больше, векторизованная итерация с purrr).

Преимущество моделирования данных заключается в том, что оно заставляет вас заранее продумывать свою модель, что может оказаться неоценимым позже при моделировании реальных данных.

Это отличный, но немного устаревший учебник: http://disjointedthinking.jeffhughes.ca/2017/09/power-simulations-r/

...