deltatest 0.2.0: Testarea ipotezelor statistice folosind metoda Delta pentru testarea A/B online

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe Blog HOXO-Mși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

Sunt bucuros să vă împărtășesc o nouă ediție a deltatest.

Această versiune include două modificări principale:

  • un nou tidy() metoda pentru deltatest obiecte
  • o remediere pentru calculul valorii p în testele unilaterale

Înainte de a vedea ce s-a schimbat în această versiune, să revizuim pe scurt scopul deltatest.

Pentru ce este deltatest

The deltatest pachetul oferă deltatest()o funcție pentru efectuarea testelor Z cu două eșantioane folosind metoda delta.

Este conceput pentru setările comune în testarea A/B online, unde:

  • randomizarea se face la nivel de utilizator, dar
  • valoarea este măsurată la o unitate mai fină, cum ar fi vizualizările de pagină sau sesiunile.

În astfel de setări, testele naive pot subestima incertitudinea – de exemplu, testele Z standard, testele chi-pătrat sau testele pentru diferențe de proporții – deoarece observațiile în cadrul unui utilizator nu sunt independente. deltatest() abordează această problemă utilizând un estimator de varianță bazat pe metoda delta.

# Install the released version from CRAN
install.packages("deltatest")

# Load packages
library(dplyr)
library(deltatest)

# Generate dummy data
data <- deltatest::generate_dummy_data(2000) |>
  mutate(group = if_else(group == 0, "control", "treatment")) |>
  group_by(user_id, group) |>
  summarise(clicks = sum(metric), pageviews = n(), .groups = "drop")

# Run a test
deltatest(data, clicks / pageviews, by = group)

Ieșire tipică:

#> Two Sample Z-test Using the Delta Method
#> 
#> data:  clicks/pageviews by group
#> Z = 0.31437, p-value = 0.7532
#> alternative hypothesis: true difference in means between control and treatment is not equal to 0
#> 95 percent confidence interval:
#>  -0.01410593  0.01949536
#> sample estimates:
#>   mean in control mean in treatment        difference
#>       0.245959325       0.248654038       0.002694713

Ce este nou în 0.2.0

tidy() sprijin pentru deltatest obiecte

Cu această lansare, deltatest() rezultatele pot fi acum convertite direct într-un tibble ordonat cu broom::tidy().

deltatest() returnează o htest– obiect de clasă, care este convenabil pentru imprimare și utilizare interactivă. Dar într-un flux de lucru ordonat, este adesea mult mai ușor să lucrezi cu rezultate într-un format ordonat tibble. Acest lucru facilitează combinarea rezultatelor din mai multe experimente sau valori și vizualizarea modelelor în estimări, intervale de încredere sau valori p cu instrumente precum ggplot2.

Mai întâi, iată un exemplu simplu de conversie a rezultatului într-un format ordonat:

library(dplyr)
library(deltatest)
library(broom)

data <- deltatest::generate_dummy_data(2000) |>
  mutate(group = if_else(group == 0, "control", "treatment")) |>
  group_by(user_id, group) |>
  summarise(clicks = sum(metric), pageviews = n(), .groups = "drop")

result <- deltatest(data, clicks / pageviews, by = group)

tidy(result)
#> # A tibble: 1 × 9
#>   estimate mean_ctrl mean_treat statistic p.value conf.low conf.high method     
#>                                         
#> 1  0.00269     0.246      0.249     0.314   0.753  -0.0141    0.0195 Two Sample…
#> # ℹ 1 more variable: alternative 

În continuare, iată un exemplu de utilizare a rezultatelor ordonate pentru a compara mai multe experimente dintr-un complot:

library(ggplot2)

data2 <- deltatest::generate_dummy_data(2000, xi = 0.05) |>
  mutate(group = if_else(group == 0, "control", "treatment")) |>
  group_by(user_id, group) |>
  summarise(clicks = sum(metric), pageviews = n(), .groups = "drop")

result2 <- deltatest(data2, clicks / pageviews, by = group)

result_tidy1 <- tidy(result)  |> mutate(experiment_id = "test01")
result_tidy2 <- tidy(result2) |> mutate(experiment_id = "test02")

result_tidy <- bind_rows(result_tidy1, result_tidy2)

ggplot(result_tidy, aes(experiment_id, estimate)) +
  geom_pointrange(aes(ymin = conf.low, ymax = conf.high)) +
  geom_hline(yintercept = 0, color = "red") +
  xlab(NULL) + ylab("Estimated CTR difference") +
  ggtitle("Treatment effects by experiment")

Remediere pentru calculul valorii p unilaterale

Această versiune remediază, de asemenea, o eroare în calculul valorii p pentru testele unilaterale. În versiunea anterioară, valorile p pentru testele unilaterale puteau fi calculate incorect folosind formula cu două fețe. Acest comportament a fost acum remediat.

Aș dori să-i mulțumesc lui Kazuyuki Sano pentru raportarea acestei probleme și pentru contribuția la remediere.

Gânduri finale

Mă bucur să continui să mă îmbunătățesc deltatest puţin câte puţin. Dacă utilizați R pentru experimente A/B online, sper să vă fie de folos.

Pentru mai multe detalii, vezi:

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.