Le cadre « There is only one test »

Tests d'hypothèse en R

Richie Cotton

Data Evangelist at DataCamp

Données déséquilibrées

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

Un échantillon est « déséquilibré » si certains groupes sont beaucoup plus grands que d'autres.

Tests d'hypothèse en R

Hypothèses

$H_{0}$ : La proportion de personnes hobbyistes de moins de 30 ans est la même que celle des 30 ans et plus.

$H_{A}$ : La proportion de personnes hobbyistes de moins de 30 ans est différente de celle des 30 ans et plus.

alpha <- 0.1

Tests d'hypothèse en R

Procéder quand même avec un test de proportion

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
Tests d'hypothèse en R

Une grammaire des graphiques

Type de graphique base-R ggplot2
Nuage de points plot(, type = "p") ggplot() + geom_point()
Graphique linéaire plot(, type = "l") ggplot() + geom_line()
Histogramme hist() ggplot() + geom_histogram()
Boîtes à moustaches boxplot() ggplot() + geom_boxplot()
Diagramme à barres barplot() ggplot() + geom_bar()
Diagramme circulaire pie() ggplot() + geom_bar() + coord_polar()
Tests d'hypothèse en R

Une grammaire des tests d'hypothèses

  • Le cadre d'Allen Downey : There is only one test.
  • Implanté en R dans le paquet infer.
  • generate() crée des données simulées.
    • Coûteux en calcul.
    • Robuste aux petits échantillons ou aux données déséquilibrées.
null_distn <- dataset %>% 
  specify() %>% 
  hypothesize() %>% 
  generate() %>% 
  calculate()
obs_stat <- dataset %>% 
  specify() %>% 
  calculate()
get_p_value(null_distn, obs_stat)
1 Allen Downey enseigne « Exploratory Data Analysis in Python ».
Tests d'hypothèse en R

Spécifier les variables d'intérêt

À gauche, une grille rectangulaire de cellules représentant une trame de données. Deux colonnes sont en surbrillance. À droite de cette grille figure le mot « specify » avec une flèche vers la droite. Plus à droite, une autre grille rectangulaire ne montre que les deux colonnes en surbrillance.

Tests d'hypothèse en R

specify()

specify() sélectionne la ou les variables à tester.

  • Pour un test à 2 échantillons, utilisez response ~ explanatory.
  • Pour un test à 1 échantillon, utilisez 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
Tests d'hypothèse en R

hypothesize()

hypothesize() précise le type d'hypothèse nulle.

  • Pour un test à 2 échantillons, utilisez "independence" ou "point".
  • Pour un test à 1 échantillon, utilisez "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
Tests d'hypothèse en R

Passons à la pratique !

Tests d'hypothèse en R

Preparing Video For Download...