Teste de ipoteză și scoruri z

Testarea ipotezelor în R

Richie Cotton

Data Evangelist at DataCamp

Testarea A/B

  • Electronic Arts (EA) este o companie de jocuri video.
  • În 2013, a lansat SimCity 5.
  • Obiectivul lor era să crească pre-comenzile jocului.
  • Au folosit testarea A/B pentru a testa diferite scenarii publicitare.
  • Aceasta implică împărțirea utilizatorilor în grupuri de control și tratament.

Clădirea Electronic Arts

1 Credit imagine: "Electronic Arts" by majaX1 CC BY-NC-SA 2.0
Testarea ipotezelor în R

Test A/B pe pagina de vânzări

Control

Pagina web SimCity cu banner care spune „pre-comandați și primiți $20 reducere la următoarea achiziție"

Tratament

Pagina web SimCity fără banner

Testarea ipotezelor în R

Rezultatele testului A/B

  • Grupul de tratament (fără reclamă) a înregistrat cu 43,4% mai multe achiziții decât grupul de control (cu reclamă).
  • Intuiția că „afișarea unei reclame ar crește vânzările" s-a dovedit complet greșită.
  • Acest rezultat a fost semnificativ statistic sau s-a datorat întâmplării?
  • Aveți nevoie de datele EA pentru a determina acest lucru.
  • Veți folosi tehnici din Sampling in R și din acest curs pentru a face asta.
Testarea ipotezelor în R

Sondajul Stack Overflow pentru dezvoltatori 2020

library(dplyr)
glimpse(stack_overflow)
Rows: 2,261
Columns: 8
$ respondent         <dbl> 36, 47, 69, 125, 147, 152, 166, 170, 187, 196, 221,…
$ age_first_code_cut <chr> "adult", "child", "child", "adult", "adult", "adult…
$ converted_comp     <dbl> 77556, 74970, 594539, 2000000, 37816, 121980, 48644…
$ job_sat            <fct> Slightly satisfied, Very satisfied, Very satisfied,…
$ purple_link        <chr> "Hello, old friend", "Hello, old friend", "Hello, o…
$ age_cat            <chr> "At least 30", "At least 30", "Under 30", "At least…
$ age                <dbl> 34, 53, 25, 41, 28, 30, 28, 26, 43, 23, 24, 35, 37,…
$ hobbyist           <chr> "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "Ye…
Testarea ipotezelor în R

Formularea unei ipoteze despre medie

O ipoteză:

Compensația anuală medie a populației de data scientist este de $110.000.

Estimarea punctuală (statistica eșantionului):

mean_comp_samp <- mean(stack_overflow$converted_comp)
mean_comp_samp <- stack_overflow %>% 
  summarize(mean_compensation = mean(converted_comp)) %>% 
  pull(mean_compensation)
119574.7
Testarea ipotezelor în R

Generarea unei distribuții bootstrap

# Pasul 3. Repetați pașii 1 și 2 de mai multe ori
so_boot_distn <- replicate(
  n = 5000,
  expr = {
    # Pasul 1. Reesantionare
    stack_overflow %>%
      slice_sample(prop = 1, replace = TRUE) %>%
      # Pasul 2. Calculați estimarea punctuală
      summarize(mean_compensation = mean(converted_comp)) %>% 
      pull(mean_compensation)
  }
)
1 Distribuțiile bootstrap sunt prezentate în Capitolul 4 din Sampling in R
Testarea ipotezelor în R

Vizualizarea distribuției bootstrap

tibble(resample_mean = so_boot_distn) %>%
  ggplot(aes(resample_mean)) +
  geom_histogram(binwidth = 1000)

Histogramă a distribuției bootstrap - are formă de clopot și valori aproximativ între 110000 și 140000

Testarea ipotezelor în R

Eroarea standard

std_error <- sd(so_boot_distn)
5511.674
Testarea ipotezelor în R

Scoruri z

$\text{valoare standardizată} = \dfrac{\text{valoare} - \text{medie}}{\text{abatere standard}}$

$z = \dfrac{\text{stat. eșantion} - \text{val. param. ipotetic}}{\text{eroare standard}}$

$z = \dfrac{\$119.574,7 - \$110.000}{\$5511,67} = 1,737$

mean_comp_samp
119574.7
mean_comp_hyp <- 110000
std_error
5511.674
z_score <- (mean_comp_samp - mean_comp_hyp) / std_error
1.737171
Testarea ipotezelor în R

Testarea ipotezei

  • 1,737171 este un număr mare sau mic?
  • Acesta este obiectivul cursului!
Cazul de utilizare al testării ipotezelor:

Determinați dacă statisticile eșantionului sunt aproape sau departe de valorile așteptate (sau „ipotezate").

Testarea ipotezelor în R

Distribuția normală standard (z)

Distribuția normală standard: distribuția normală cu media zero și abaterea standard 1.

tibble(x = seq(-4, 4, 0.01)) %>% 
  ggplot(aes(x)) +
  stat_function(fun = dnorm) +
  ylab("PDF(x)")

Grafic de densitate al PDF pentru distribuția normală standard

Testarea ipotezelor în R

Să exersăm!

Testarea ipotezelor în R

Preparing Video For Download...