Ramverket "There is only one test"

Hypotestestning i R

Richie Cotton

Data Evangelist at DataCamp

Obalanserade 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

Ett urval är obalanserat om vissa grupper är mycket större än andra.

Hypotestestning i R

Hypoteser

$H_{0}$: Andelen hobbyister under 30 är densamma som andelen hobbyister som är minst 30.

$H_{A}$: Andelen hobbyister under 30 är annorlunda än andelen hobbyister som är minst 30.

alpha <- 0.1

Hypotestestning i R

Genomför ett proportionstest ändå

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
Hypotestestning i R

En grammatik för grafik

Diagramtyp base-R ggplot2
Punktdiagram plot(, type = "p") ggplot() + geom_point()
Linjediagram plot(, type = "l") ggplot() + geom_line()
Histogram hist() ggplot() + geom_histogram()
Lådagram boxplot() ggplot() + geom_boxplot()
Stapeldiagram barplot() ggplot() + geom_bar()
Cirkeldiagram pie() ggplot() + geom_bar() + coord_polar()
Hypotestestning i R

En grammatik för hypotestester

  • Allen Downeys ramverk There is only one test.
  • Implementerat i R via paketet infer.
  • generate() skapar simulerade data.
    • Beräkningsmässigt kostsamt.
    • Robust mot små urval eller obalanserade data.
null_distn <- dataset %>% 
  specify() %>% 
  hypothesize() %>% 
  generate() %>% 
  calculate()
obs_stat <- dataset %>% 
  specify() %>% 
  calculate()
get_p_value(null_distn, obs_stat)
1 Allen Downey undervisar i "Exploratory Data Analysis in Python".
Hypotestestning i R

Ange variablerna av intresse

Till vänster visas ett rutnät av celler som representerar en dataram. Två kolumner är markerade. Till höger om rutnätet står ordet 'specify' med en pil som pekar åt höger. Till höger om pilen visas ett nytt rutnät med enbart de två markerade kolumnerna.

Hypotestestning i R

specify()

specify() väljer ut den eller de variabler du vill testa.

  • För 2-urvalstest, använd response ~ explanatory.
  • För 1-urvalstest, använd 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
Hypotestestning i R

hypothesize()

hypothesize() anger typen av nollhypotes.

  • För 2-urvalstest, använd "independence" eller "point".
  • För 1-urvalstest, använd "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
Hypotestestning i R

Nu kör vi en övning!

Hypotestestning i R

Preparing Video For Download...