(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 pentrudeltatestobiecte - 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:
