Rámec "There is only one test"

Testování hypotéz v R

Richie Cotton

Data Evangelist at DataCamp

Nevyvážená data

stack_overflow_imbalanced %>% 
  count(hobbyist, age_cat, .drop = FALSE)
  hobbyist     age_cat    n
1       No At least 30    0
2       No    Under 30  191
3      Yes At least 30   15
4      Yes    Under 30 1025

Vzorek je nevyvážený, pokud jsou některé skupiny výrazně větší než jiné.

Testování hypotéz v R

Hypotézy

$H_{0}$: Podíl hobbyistů do 30 let je stejný jako podíl hobbyistů ve věku alespoň 30 let.

$H_{A}$: Podíl hobbyistů do 30 let je odlišný od podílu hobbyistů ve věku alespoň 30 let.

alpha <- 0.1

Testování hypotéz v R

Provedení proporčního testu bez ohledu na nevyváženost

stack_overflow_imbalanced %>% 
  prop_test(
    hobbyist ~ age_cat,
    order = c("At least 30", "Under 30"),
    success = "Yes",
    alternative = "two.sided",
    correct = FALSE
  )
# A tibble: 1 x 6
  statistic chisq_df p_value alternative lower_ci upper_ci
      <dbl>    <dbl>   <dbl> <chr>          <dbl>    <dbl>
1      2.79        1  0.0949 two.sided    0.00718   0.0217
Testování hypotéz v R

Gramatika grafiky

Typ grafu base-R ggplot2
Bodový graf plot(, type = "p") ggplot() + geom_point()
Spojnicový graf plot(, type = "l") ggplot() + geom_line()
Histogram hist() ggplot() + geom_histogram()
Krabicový graf boxplot() ggplot() + geom_boxplot()
Sloupcový graf barplot() ggplot() + geom_bar()
Koláčový graf pie() ggplot() + geom_bar() + coord_polar()
Testování hypotéz v R

Gramatika hypotézových testů

  • Rámec There is only one test od Allena Downeyho.
  • Implementován v R v balíčku infer.
  • generate() vytváří simulovaná data.
    • Výpočetně náročné.
    • Robustní vůči malým nebo nevyváženým vzorkům.
null_distn <- dataset %>% 
  specify() %>% 
  hypothesize() %>% 
  generate() %>% 
  calculate()
obs_stat <- dataset %>% 
  specify() %>% 
  calculate()
get_p_value(null_distn, obs_stat)
1 Allen Downey vyučuje „Exploratory Data Analysis in Python".
Testování hypotéz v R

Určení proměnných zájmu

Vlevo je obdélníková mřížka buněk představující datový rámec. Dva sloupce jsou zvýrazněny. Napravo od mřížky je slovo „specify" se šipkou doprava. Napravo od šipky je další mřížka obsahující pouze dva zvýrazněné sloupce.

Testování hypotéz v R

specify()

specify() vybere proměnné, které chcete testovat.

  • Pro 2vzorkové testy použijte response ~ explanatory.
  • Pro 1vzorkové testy použijte response ~ NULL.
stack_overflow_imbalanced %>%
  specify(hobbyist ~ age_cat, success = "Yes")
Response: hobbyist (factor)
Explanatory: age_cat (factor)
# A tibble: 1,231 x 2
  hobbyist age_cat    
  <fct>    <fct>      
1 Yes      At least 30
2 Yes      At least 30
3 Yes      At least 30
4 Yes      Under 30   
5 Yes      At least 30
6 Yes      At least 30
7 No       Under 30   
# ... with 1,224 more rows
Testování hypotéz v R

hypothesize()

hypothesize() deklaruje typ nulové hypotézy.

  • Pro 2vzorkové testy použijte "independence" nebo "point".
  • Pro 1vzorkové testy použijte "point".
stack_overflow_imbalanced %>%
  specify(hobbyist ~ age_cat, success = "Yes") %>%
  hypothesize(null = "independence")
Response: hobbyist (factor)
Explanatory: age_cat (factor)
Null Hypothesis: independence
# A tibble: 1,231 x 2
  hobbyist age_cat    
  <fct>    <fct>      
1 Yes      At least 30
2 Yes      At least 30
3 Yes      At least 30
4 Yes      Under 30   
5 Yes      At least 30
6 Yes      At least 30
7 No       Under 30   
# ... with 1,224 more rows
Testování hypotéz v R

Pojďme cvičit!

Testování hypotéz v R

Preparing Video For Download...